Split Block:熱備份時(也就是OS命令拷貝cp,OS的cp單位不是data block而是os block)資料區塊剛好又在被使用者修改,即,一個Oracle Block包含多個OS Block, OS Level的拷貝可能正拷貝的是一個Oracle Block的一部分(比如Header),而另一部分被使用者更新,發生變化,這樣導致一個Oracle Block內部的不一致,可能出現一個資料區塊包含了幾個不同版本的os block被稱為Split Block,這裡的block指的是data block.
而rman的單位是data block,不存在上述情況。塊層級訪問是RMAN 區別於其他備份工具的地方。
RMAN 備份會有下面的簡單幾個過程 :1. RMAN 將需要備份的資料檔案的所有資料區塊(Oracle block, 不管是否已格式化,是否有資料) 讀入輸入緩衝區(PGA的一部分) ,
這個過程是以Oracle block為最小單位進行的,不存在OS Block層級的拷貝或備份, 那麼這個過程是不會產生所謂的"split block " 的。
2. 隨後一個重要過程是Memory-To-Memory 過程, 也就是輸入緩衝區寫滿後寫入輸出緩衝區 (預設也是PGA的一部分),這個過程中會有一些事情要做。
Oracle 首先判斷oracle block是否被使用過(頭資訊是否為零),
如果資料區塊未被使用過, 就不會發生到輸出緩衝區的寫操作,同時丟棄此資料區塊,
如果使用過,然後判斷是否存在資料 (估計也是判斷頭資訊), 如果存在就會在這個資料區塊上執行檢驗和checksum操作 。
最後判斷Oracle block頭和腳註是否匹配,判斷是否是split block, 如果不是就寫入輸出緩衝區,
如果是split block,那麼重新將block備份到輸入緩衝區 。
3.寫入輸出緩衝區的Oracle block達到一定程度 (滿了) , 會寫入備份位置 (假設為磁碟) 。
推薦閱讀:
Oracle基礎教程之通過RMAN複製資料庫
RMAN備份策略制定參考內容
RMAN備份學習筆記
OracleDatabase Backup加密 RMAN加密