undo segment header中记录的dba是该事务使用的单向链表中的头(end block)!

以前写过一篇文章介绍事务使用的undo block其实一条单向
链表,那么undo header上记录的dba到底是这条单向链表的
头还是尾,经验证是头,我猜测也应该是头,因为当rollback
事务时才能以最快的速度找到rollback的起点,当然这样做的
目的可能不仅仅是为了rollback操作。[@more@]

SQL> create table tt1 tablespace users as select *from dba_objects;

表已创建。

SQL> insert into tt1 select * from tt1;

已创建11280行。
SQL> select xidusn,ubafil,ubablk,start_ubafil,start_ubablk from v$transaction;

XIDUSN UBAFIL UBABLK START_UBAFIL START_UBABLK
---------- ---------- ---------- ------------ ------------
14 7 61 7 180

SQL> alter system dump undo header "_SYSSMU14$";

系统已更改。
--dump信息如下:
--======================
index state cflags wrap# uel scn dba parent-xid nub stmt_num cmt
------------------------------------------------------------------------------------------------
.............
0x12 10 0x80 0x0992 0x0001 0x0000.018e34c1 0x01c0003d 0x0000.000.00000000 0x00000006 0x00000000 0
..............
--=======================

SQL> select dbms_utility.data_block_address_file(to_number('01c0003d','xxxxxxxx'
)) from dual;

DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(TO_NUMBER('01C0003D','XXXXXXXX'))
----------------------------------------------------------------------
7

SQL> select dbms_utility.data_block_address_block(to_number('01c0003d','xxxxxxxx
')) from dual;

DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(TO_NUMBER('01C0003D','XXXXXXXX'))
-----------------------------------------------------------------------
61
--很显然,undo segment header中记录的dba是该
事务使用的undo chain中的end block:61,start block是:180,而end block这是这条chain的头。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/19602/viewspace-1019053/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/19602/viewspace-1019053/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值