
Undo Header Dump - 日本エクセム株式会社 Oracle 技術情報
目次[非表示]
データブロックを変更したトランザクションが使用するUNDOセグメント(USN=22)のヘッダブロックをダンプすると、トランザクションに対応する情報がどのように管理されるかを確認することができます。
SQL> select xidusn,xidslot,xidsqn from v$transaction
where addr = (select taddr from v$session where sid = 162);
XIDUSN XIDSLOT XIDSQN
---------- ---------- ----------
22 38 12834 → USN=22, Slot=38
-- UNDOセグメント番号は22であり、トランザクションテーブルからのスロットの位置は、38であることを確認出来ます。
SQL> select file_id, block_id from dba_rollback_segs where segment_id = 22;
FILE_ID BLOCK_ID
---------- ----------
7 57
SQL> alter system dump datafile 7 block 57;
UNDOヘッダブロックのダンプ内容は次のとおりです。
Start dump data blocks tsn: 5 file#: 7 minblk 57 maxblk 57
buffer tsn: 5 rdba: 0x01c00039 (7/57)
scn: 0x0000.02ec5e6b seq: 0x01 flg: 0x04 tail: 0x5e6b2601
frmt: 0x02 chkval: 0xa2af type: 0x26=KTU SMU HEADER BLOCK
Extent Control Header
-----------------------------------------------------------------
Extent Header:: spare1: 0 spare2: 0 #extents: 3 #blocks: 143
last map 0x00000000 #maps: 0 offset: 4080
...
Retention Table ? Retention Table : Flashback 機能と関連があります。
-----------------------------------------------------------
Extent Number:0 Commit Time: 1138602915
...
TRN TBL:: → トランザクションテーブル
index state cflags wrap# uel scn dba
----------------------------------------------------------------
parent-xid nub stmt_num cmt
--------------------------------
0x00 9 0x00 0x3222 0x0002 0x0000.02ec5d39 0x01c0003d
0x0000.000.00000000 0x00000001 0x00000000 1138603151
...
0x26 10 0x80 0x3222 0x0000 0x0000.02ec5e30 0x01c0003f
0x0000.000.00000000 0x00000001 0x00000000 0
... ? 0x26 = 38 ですので、このスロットは、私たちが観察したいトランザクション情報です。
0x2f 9 0x00 0x3221 0x0000 0x0000.02ec5d38 0x01c0003d
0x0000.000.00000000 0x00000001 0x00000000 1138603151
End dump data blocks tsn: 5 file#: 7 minblk 57 maxblk 57
UNDOヘッダブロックのトランザクションテーブル(TRN TBL)の38番スロット(index=0x26)にUpdateを実行したトランザクションに関する情報が記録されていることを確認することができます。