redo和undo之四事物槽

ITL,Interested Transaction List,相关事务列表。此表中每一行,按Oracle惯用的说法,又叫一个槽,SLOT.

事物槽的组成

 


 itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0007.022.00000e76  0x00809680.0161.05  --U-    1  fsc 0x0000.010a7a46
0x02   0x0000.000.00000000  0x00000000.0000.00  ----    0  fsc 0x0000.00000000

itl:事物槽编号

xid:

Undo.Segment.Number(回滚段编号)+Transaction.Table.Slot.Number(事务表的槽位号)+Wrap(序列号)

由于回滚段是循环覆盖使用的,wrap 指 回滚段被循环覆盖使用了几圈。因为光靠事务表中槽位来定位 回滚信息是不充分的,假如回滚段事务表被循环覆盖N圈 你必须要识别是不是刚好是你这一轮的。


uba:
uba=Address.Of.Last.Undo.Block.Used(最后被用到的undo块的地址)+Last.Entry.in.UNDO.Record.Map(回滚段记录中最近的未提交的变更开始之处irb)+Sequence(回滚序列号)

uba 是定位到具体的回滚段的,事务的回滚信息在回滚段中是一个单向链表,header 就是最后使用的block,正好从这个表头往前就可以按照从后往前的顺序去做undo。 而回滚段中的block依然可能是被循环使用了N次的,为了校验回滚段block确实是我这个事务所使用的,就加了一个Sequence(回滚序列号)来标记回滚段上事务的序号。 当然这个序号是一个4字节整数,oracle 开发人员应该是认为 4 字节数字能足够满足现实的需要。

Flag


---- = transaction is active, or committed pending cleanout
C--- = transaction has been committed and locks cleaned out
-B-- = this undo record contains the undo for this ITL entry
--U- = transaction committed (maybe long ago); SCN is an upper bound
---T = transaction was still active at block cleanout SCN

Lck(number of rows affected by this transaction)表示这个事务所影响的行数,这里是2行,正好对应1次insert

Scn/Fsc 标志我引用www.ixora.com.au的一段解释
If the transaction has been cleaned out, this is the commit SCN or an upper bound thereof. Otherwise the leading two bytes contain the free space credit for the transaction - that is, the number of bytes freed in the block by the transaction

 

相关的其他一些概念:

 

rci:代表是undo chain中下一个前镜像的偏移量

 irb:  回滚段记录中最近的未提交的变更开始之处

Uba: Undo block address undo  块的地址

DBA:data block address 数据文件块的地址

RDBA:Tablespace relative database block address 相对数据块地址 RDBA:=前10位的rfile+后22位为Block#(DBA)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20844861/viewspace-616756/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/20844861/viewspace-616756/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值