RMAN處理split block問題

tolywang發表於2011-07-11
Oracle 10.2.0.4.0  ,   Linux AS 5.4   


預設情況下, RMAN 備份會有下面的簡單幾個過程 :

1.  RMAN 將需要備份的資料檔案的所有資料塊(Oracle block, 不管是否已格式化,是否有資料) 讀入輸入緩衝區
     (PGA的一部分) , 這個過程是以Oracle block為最小單位進行的, 不存在OS Block級別的複製或備份, 那
     麼這個過程是不會產生所謂的"split block " 的  ?   

2.  隨後一個重要過程是Memory-To-Memory 過程, 也就是輸入緩衝區寫滿後寫入輸出緩衝區 (預設也是PGA
     的一部分) ,  這個過程中會有一些事情要做。    Oracle 10.2.0.2.0 首先判斷oracle block是否被使用過(
    頭資訊是否為零),    如果資料塊未被使用過, 就不會發生到輸出緩衝區的寫操作,同時丟棄此資料塊, 如果
    使用過, 然後判斷是否存在資料 (估計也是判斷頭資訊), 如果存在就會在這個資料塊上執行檢驗和checksum
     操作 。 最後判斷Oracle block頭和腳註是否匹配, 判斷是否是split block,  如果不是就寫入輸出緩衝區,
     如果是split block,  那麼重新將block備份到輸入緩衝區 。

這裡有個問題:  寫入輸入緩衝區的Oracle block 不會存在split block (如果存在,是如何產生的?),  這些
block在session特定的pga中存放,  那麼後面做Memory-To-Memory 過程中為何還要判斷 split block  ?   

3.   寫入輸出緩衝區的Oracle block達到一定程度 (滿了) , 會寫入備份位置 (假設為磁碟) 。

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

相關文章