Oracle数据块(block)简单介绍--ITL事物槽

下边我们重点看一下ITL事物槽。Oracle的每个数据块中都有一个或者多个事务槽,每一个对数据块的并发访问事务都会占用一个事务槽。 
每个事物都会ITL事物槽由槽位号、XID、Uba、Flag、Lck、Scn/Fsc几部分组成。

 

Itl                      Xid                                Uba               Flag   Lck        Scn/Fsc
0x01   0x0006.020.00000271  0x00800205.0257.13  C---    0  scn 0x0000.001732c4 
0x02   0x0008.006.00000279  0x00800351.0278.15   ----    1   fsc 0x0000.00000000 

 

ITL(interested transaction list)  槽位号。

 

XID(transaction id) 事务ID,在回滚段事务表中有一条记录和这个事务对应。Xid组成:Undo Segment Number +Transaction Table Slot Number+ Wrap 。

 

UBA(undo block address)   回滚段地址,该事务对应的回滚段地址。Uba组成:回滚块地址(undo文件号和数据块号)+回滚序列号+回滚记录号 。

SQL> select xidusn,xidslot,xidsqn,ubafil,ubablk,ubasqn,ubarec from v$transaction; 
    XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC 
    ---------- ---------- ---------- ---------- ---------- ---------- ---------- 
         8          6            633               2          849          632           21 

 

Flag:事务标志位。这个标志位就记录了这个事务的操作状态,各个标志的含义分别是: 
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   --块清除的SCN被记录时,该事务仍然是活动的,块上如果有已经提交的事务,那么在clean ount的时候,块会被进行清除,但是这个块里面的事务不会被清除。

 

Lck:表示这个事务所影响的行数。我们看到01号事物槽Lck为0,因为该事物槽中的事物Flag为C,证明该事物
已经提交,锁也被清楚掉了,该事物槽可以被重用了。02号事物槽Lck为1,是因为我对第一行做了一个更新,并且没有提交,Flag为----说明该事物是活动的。 

 

Scn/Fsc:Commit SCN或者快速提交(Fast Commit Fsc)的SCN。 
每条记录中的行级锁对应Itl条目lb,对应于Itl列表中的序号,即那个事务在该记录上产生的锁。

 

详细参考:http://czmmiao.iteye.com/blog/1495332

你可能感兴趣的:(Oracle数据块(block)简单介绍--ITL事物槽)