天天看點

rman備份恢複機制

最近想研究了一下oracle 的rman備份恢複的原理,發現網上以及oracle官方文檔中,隻有介紹,如何使用rman的指令,以及簡單的原理性描述,對于rman真正的備份恢複行為并沒有很詳細的描述,本人經過一段時間的琢磨,發現了一些規律,是以總結出來,和大家分享,如果有不對的地方,還請高手多多指教。

如果你配置了并行,rman會在備份的時候開啟很多通道,每個通道會産生一個備份集,當rman指定了某個備份集所要備份的資料檔案的時候,它會首先給這些檔案做一個檢查點,與dbwr合作,将髒資料寫進磁盤,這時候資料檔案都是一緻性的,這一點可以從rman備份中繼資料中看到,有一個ckpt字段。這時候它開始備份,在這些檔案備份結束前,dbwr不會将這些檔案中的髒資料塊寫進磁盤,算是暫時加了一把鎖吧,是以當你恢複的時候,可以以ckpt字段中的scn為起點來恢複,也就是說rman備份集中的檔案都是一緻性的,但是備份集之間是不一緻的。

其他通道也是一樣。

如果一個資料庫的備份有3個備份集 ckpt分别為 100,101,102 ,那麼當你想進行不完全恢複到scn為101的時候,那麼102 的備份集就不能用了,隻能從前一次的備份中去找。而100,和101就是可以用的。

當rman進行恢複的時候,就會對你你要恢複到的scn值和備份集裡的ckpt,進而找到合适的備份集進行恢複。

以上都是我個人的一些看法,不對的地方請大家多拍磚啊。

繼續閱讀