oracle数据块dump文件中ITL详解

 oracle数据块dump文件中ITL详解

dump出Oracle block后,可以看到事物槽,包含有事物槽号(ITL),XID,UBA,FLAG,LCK,SCN。
本文主要讨论FLAG标记的规则,其中FLAG在block中占用1个字节大小。

data block的dump信息中ITL中的xid:0x000c.011.000000e6是由undo信息组成的:xidusn.xidslot.xidsqn(wrap#)
data block的dump信息中ITL中的uba:0x00800554.00d6.28是由uba(undo block address).UBASQN.UBAREC
我们知道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
看上面的标记位有一定的规律可循,以下为测试过程,其中07代表锁的行数

BBED>  modify 0×0700

Itl                    Xid                                              Uba                Flag          Lck              Scn/Fsc
0×01   0×0023.02f.0000004e          0×0280073e.0010.2b       –U-           3               fsc 0×0000.0811d995
0×02   0×0029.02d.0000004d         0×028008c5.0010.37       —-            7               fsc 0×0a00.0811d8b7

 

1.事务开始时,需要在回滚段事务表上分配一个事务槽(alter system dump undo header '回滚段名称');

2.在数据块头部获取一个ITL事务槽,该事务槽指向回滚段头的事务槽(alter system dump datafile .. block ..);

3.在修改数据之前,需要记录前镜像信息,这个信息以UNDO RECORD的形式存储在回滚段中,回滚段头指向该记录

(通过回滚段头事务表的信息,alter system dump datafile .. block ..查看回滚记录);

4.锁定修改行,修改行锁定位(lb-lock byte)指向ITL事务槽,可以dump数据块查看;

5.数据修改可以进行;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值