Undo Header Dump

データブロックを変更したトランザクションが使用する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を実行したトランザクションに関する情報が記録されていることを確認することができます。