首页 > 数据库技术 > 详细

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

时间:2016-03-03 02:05:05      阅读:383      评论:0      收藏:0      [点我收藏+]

下边我们重点看一下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事物槽

原文:http://appleses.iteye.com/blog/2280063

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!