Oracle数据块由三部分组成:
分别是:块头部分,数据区和空闲区。上面是数据块的块头,下面是数据部分,而中间是空闲区。头部从上往下增长。数据部分从下往上增长。当两部分接触时数据块就满了。
*数据区:数据区装的是数据行,该区位于数据块的底部。当插入数据行时该部分从下往上增长。
*数据块头:存有数据块的地址,表目录,行目录和事务槽。事务槽是在事务修改数据块中的数据行时使用的。头部从上往下增长。
*空闲区:位于数据块的中部。数据块中的空闲区最初时是连续的。但是删除或修改操作可能使数据块中的空闲区碎片化。在需要时Oracle服务器会进行合并空闲区的操作。
为了更有效的管理和控制Oracle数据块的各个部分,Oracle引入了4个参数。
这4个数据块空间控制参数既可以用来控制数据段中的空间使用,也可以控制索引段中的空间。它们又被分为控制并行的参数和控制数据空间使用的参数两大类。
*控制并行操作的参数:这类参数包括initrans和maxtrans.
initrans:定义了创建数据块或索引块时事务槽的初始值。它被用来保证最低水平的并行操作。对数据段它的默认值为1,而对索引段它的默认值为2.如果该参数设置为8,那么Oracle服务器就能在任何时候保证在一个数据块中可以最多有8个并行的事务。
maxtrans:定义了创建数据块或索引块时事务槽的最大值。如果并行的事务很多,所需的事务槽的个数可能超过initrans所设定的初始值。Oracle会在块头中分配更多的事务槽。其数量的上限就是maxtrans所定的值。maxtrans的默认值为255.
提示:并行操作与数据块的空间利用率是相互矛盾的。如果将initrans和maxtrans设置的过大,这样虽然秉性操作改进了而且系统的效率也由所提高,但是由于数据块头的加大而使数据块中所存储的数据减少。因此,建议不要改变他们的默认值。
控制数据空间使用的参数:pctfree和pctused
Oracle管理数据块的方法:手动管理和自动的段空间管理。
整理自 何明《Oracle DBA基础培训教程》