链表,那么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/