052-147

View the Exhibit.



You want to create a tablespace to contain objects with block size 16 KB. But while configuring the
storage you find that the block size that you can provide is only 8 KB.
Which configuration could have enabled the block selection of 16 KB?
A.choosing the extent allocation type to uniform
B.choosing the Segment Space Management option to manual
C.setting autoextension on for the data file mentioned for the tablespace
D.setting the DB_16K_CACHE_SIZE parameter for the database instance to a nonzero value

  1.9i 之后可以使用多种块大小,首先使用一个标准的数据块,然后最多可以定义 4 种其他的数据块,值为 2 的 n 次方,范围是 2~32(这里也就 5 种)
  2.使用其他块大小的时候,必须首先设置 db_nk_cache_size 的大小
SQL> show parameter k_cache_size
NAME TYPE VALUE
------------------ ----------- ------
db_16k_cache_size big integer 0
db_2k_cache_size big integer 0
db_32k_cache_size big integer 0
db_4k_cache_size big integer 0
db_8k_cache_size big integer 0
首先应该设置这里对应的值,这里需要注意的是与数据库块大小相同的不能设置
create tablespace cache_size datafile'cache_size_001.dbf' size 16M BLOCKSIZE 16K; --这里的 16k 必须先设置 db_16k_cache_size
  3.标准数据库大小用于系统表空间和临时表空间
  4.数据块的内容和参数
i.块头
存储数据块的地址、表目录、行目录和事务槽,头部从上往下增长
ii.数据区
位于数据块的底部,当插入行的时候从下向上增长
iii.空闲区
位于中间,最初始是连续的,当删除和插入后导致碎片化,smon 会进行合并空闲区的操作
  5.手工数据块的管理
i.插入操作的时候,oracle 将保留数据块 15%的空闲空间,为将来的更新做准备
ii.当空闲区小于 15%的时候,oracle 将该数据从空闲队列(freelists)中去掉
iii.如果删除或修改造成了数据行的缩小,虽然大于了 15%,但是使用的空间大于 30,因此还是不能插入
iv.只有当小于 30(pctused),该数据块才可以重新放入空闲队列中

原文地址:https://www.cnblogs.com/Babylon/p/8037295.html