undo segment

 在 undo segment中, Insert 是记录 rowid update 记录被更改数据的前镜像, delete 记录整行数据。因此 delete 产生的 undo 最多。

select segment_name,tablespace_name,status from dba_rollback_segs;
select xidusn,xidslot,xidsqn,ubablk,ubafil from v$transaction;
xidusn
示回滚段号,xidslot表示回滚段上的事务槽,ubafil表示前镜像数据所在的文件号,ubablk表示Block号。
select * from v$rollstat; xacts1的就是当前修改的记录
select * from v$rollname a where a.usn=9; usn是回滚段号,此语句为获得回滚段名
转储回滚段头信息:alter system dump undo header'segment_name';
转储文件中的block信息:alter system dump datafile filenum block blocknum
在跟踪文件中irb:0x3firb指的是回滚段中记录的最近的未提交变更开始之处,如果开始回滚,此为起始点。0x3f表示偏移量,最后一个偏移地址是0x3f。同时undo记录中还记录rci,代表undo chain(同一个事务中的多次修改,通过该参数指定上一个修改数据的前镜像)的下一个偏移量。当undo chain的指针为0x00时,表示这是最后一条。

修改数据的事务内部流程
1、当事务开始时,需要在回滚段事务表上分配一个事务槽。
2、在数据块头部获取一个ITL(Interested Transaction List,事务必须获得一个ITL事务槽才能进行数据修改,包括Xid,Uba,Lck),该事务槽和回滚段头部记录的事务槽信息一致。
3、在修改数据前,记录前镜像信息,以undo record的形式储存,回滚段头事务槽指向该记录。
4、锁定修改行,修改行锁定指向ITL事务槽。
5、事务修改可以进行。
说明Xid:Transaction id;Uba:Undo Block Address;Lck:Lock status。Xid包括回滚段号,slot号,wrap号。

 


转载于:https://www.cnblogs.com/yifan268/archive/2008/07/02/1234033.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值