Undo Header Dump

EXEM Knowledge Base

Jump to: navigation, 찾기

데이터 블록을 변경한 트랜잭션이 사용하는 언두 세그먼트(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
-- 언두 세그먼트 번호는 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;

언두 헤더 블록의 덤프 내용은 다음과 같다.

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

언두 헤더 블록의 트랜잭션 테이블(TRN TBL)의 38번 슬롯(index=0x26)에 Update를 수행한 트랜잭션에 대한 정보가 기록되어 있음을 확인할 수 있다.