数据块作为ORACLE发出I/O的最小单位,结构由三部分组成。
由上至下为:1.数据块头部;
2.可用空间;
3.数据;(数据时从下往上增长的)
数据块头部:
1.数据块所属segment类型(数据或者索引)
2.数据块的地址;
3.ITL(Insterested Transaction List)槽,即事务槽;
4.行目录;
每当一个事务要更新数据块里的数据时,必须先得到一个ITL槽,然后将当前事务ID,事务所用的undo数据块地址,SCN号,当前事务是否提交等信息写到ITL槽里。
也就是说ITL槽包含信息: 1.事务ID;
2.事务所用UNDO块地址;
3.SCN号;
4.事务是否提交标记;
ITL槽的事务提交或回滚后,才可以被其他事务覆盖,当新事务发现不够ITL槽时,会动态创建一个新的ITL槽。
initrans:每个数据块默认ITL槽数目
maxtrans:每个数据块最多的ITL槽数
行目录(row directory)
这里记录了数据块里每一行相对于起点的偏移量,Oracle正是通过行目录找到所需的数据行。
由上至下为:1.数据块头部;
2.可用空间;
3.数据;(数据时从下往上增长的)
数据块头部:
1.数据块所属segment类型(数据或者索引)
2.数据块的地址;
3.ITL(Insterested Transaction List)槽,即事务槽;
4.行目录;
每当一个事务要更新数据块里的数据时,必须先得到一个ITL槽,然后将当前事务ID,事务所用的undo数据块地址,SCN号,当前事务是否提交等信息写到ITL槽里。
也就是说ITL槽包含信息: 1.事务ID;
2.事务所用UNDO块地址;
3.SCN号;
4.事务是否提交标记;
ITL槽的事务提交或回滚后,才可以被其他事务覆盖,当新事务发现不够ITL槽时,会动态创建一个新的ITL槽。
initrans:每个数据块默认ITL槽数目
maxtrans:每个数据块最多的ITL槽数
行目录(row directory)
这里记录了数据块里每一行相对于起点的偏移量,Oracle正是通过行目录找到所需的数据行。