数据读一致性:

UNDO段由两个组件组成:UNDO头和UNDO入口。UNDO段的第一块是UNDO头。UNDO被创建时仅有UNDO头被创建。
保留时间表(retention table):这是自动管理UNDO新增的一个组件。保存了UNDO段中每一个区最后一个事务提交的时间。
事务表(transaction table):保存在UNDO头中。由若干槽位(slot)和入口(entries)组成。
UNDO入口:保存了事务级别和列前象的信息。每一个事务对应一个由UNDO入口组成的回滚链式结构。
读一致性步骤:
读数据块,如果内存中有这个块把这个块放到UNDO段中。
读行头信息。
通过检查ITL入口的锁状态位来判断是否有事务入口。
通过读ITL来发现事务的ID。
读事务表。如果事务已提交并且系统提交号比查询改变号小,从UNDO段中清除数据块,读下一块。
读到最后一个UNDO块
对比事务表中和最后一个UNDO块的事务ID。如果这两个事务ID不相等则报ORA-1555错误。
从第一个事务入口开始更改数据块。
如果最后一个UNDO入口中保存的是另一个数据块的地址,将UNDO块读到内存中。重复7,8步,直到不包含数据块的值的地址。
如果没有前一个数据块的地址,则事务回滚。
如果UNDO入口包含:
一个指向前一个事务UNDO块地址的指针,读这个事务UNDO块头的事务ID和事务表入口,返回到5步。
有一个ITL记录,存储ITL记录到数据块,返回步4。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值