oracle block資料塊itl小記

wisdomone1發表於2013-03-19

--順便研究下flag列的含義;我想與資料是否提交有關吧
 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0000.000.00000000  0x00000000.0000.00  ----    0  fsc 0x0000.00000000
0x02   0xffff.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.007a0e29

1,itl由itl id,xid,uba,flag,lck,scn/fsc組成
2,每發生一事務佔用一個itl條目
3,如事務已提交,則itl條目可以重複使用
4,scn/fsc即事務提交產生的scn
5,一個itl條目佔用46b大小

6.xid對應v$transaction
7,uba包括三部分:
    第一部分對應undo dba:又由undo file號和資料塊號組成,即上述的0x00000000
    第二部分對應undo seq:
    第三部分對應undo 記錄號
   
    如下查出的結果分別與上述undo一一對應
  SQL> select ubafil,ubablk,ubasqn,ubarec from v$transaction;
 
    UBAFIL     UBABLK     UBASQN     UBAREC
 ----------  ---------- ---------- ----------
         3      65401        215         54
        
        
8,flag:事務標誌位;
       有幾個值:
          ----- 表示事務是活動的,或塊清除前提交事務
          C---- 事務已提交併且清除了行鎖定
          -B---  this undo record contains the undo for this ITL entry
          -U--  事務已提交(scn已是最大值),但鎖定未清除(快速清除)        
          ---T  當塊清除的scn被記錄時,該事務仍是活動的,塊上如果有已提交的事務
          那麼在clean out時,塊會被清除,但塊裡面的事務不會被清除
         
9,lock:影響的記錄數

10:scn/fsc:快速提交(fast commit)的scn或commit scn

11,每條記錄的行級鎖對應itl條止的序號         

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-756561/,如需轉載,請註明出處,否則將追究法律責任。

相關文章