Redo內部解析(一)

yezhibin發表於2009-06-24
          
一、前言
       Oracle專家對redo內部進行了深入的剖析,以下是對各個大師文章的總結。

二、概念

        Redo記錄了資料塊的變化,其中也包括undo的變化。理解redo需要先理解以下幾個概念:
   
1、change vecotors:
       一個資料塊從一個狀態變成另一個狀態,每個資料塊都有一個版本資訊,其 組成是
    
2、Redo records:
      是由多個change vectors組成一個redo records,他主要記錄資料庫的變化,比如新增一行記錄,將涉及到undo資料塊的改變,資料塊資料改變等。

三、基本結構

 1、Redo Log Files:
          Block 0:  File Header
          Block 1:  Redo header
          Block 2以後都是記錄了 Redo Records

  2、Redo Records:  Redo Record Header + Change 1+ Change 2 + .......

四、工作原理

    程式在修改資料塊之前(change vectors),必須執行以下操作:

1、建立change vectors描述改變屬性

2、undo塊變化資訊將產生change vectors(注意不是每個變化都被undo保護)

3、許多change vectors組成一個redo record,redo record是在程式的PGA中建立

4、將redo record拷貝到log buffer中

5、buffer cache中對應的資料塊也發生變化

     以上是通常情況下處理流程,但也有例外, 如sqlloader的direct mode,direct mode insert, nologging操作等
     
      Redo records記錄順序是通過SCN和SUBSCN來控制的。

                 
        

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

相關文章