ITPub博客

首页 > Linux操作系统 > Linux操作系统 > redo和undo之四事物槽

redo和undo之四事物槽

原创 Linux操作系统 作者:oralau 时间:2009-10-16 16:14:46 0 删除 编辑

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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-02-17

  • 博文量
    38
  • 访问量
    36652