Incarnation 介紹及測試

【摘要】

         當使用resetlogs打開數據庫以後,就會產生一個incarnation,它的作用是爲了避免應用不同時間產生卻擁有相同scn的日誌。數據庫存在多個incarnation決定了它如何對待不是當前incarnation的備份集,一般情況下,使用當前incarnation進行恢復是最好的選擇,但有時不滿足於基於時間點恢復的結果,就需要返回到之前的incarnation進行恢復。

【正文】

         Incarnation簡介

        

         一個新實例的scn從1開始,當scn遞增到2000時,進行不完全恢復到scn 1000,此時incarnation 1包含scn 1到2000;當scn從1000增長到3000時,再次進行不完全恢復到scn2000,此時incarnation 2包含scn 1000到3000,當前incarnation 3 從scn 2000開始遞增。如果要恢復到一個不屬於當前incarnation的scn,就要用到reset database to incarnation語句。

以下是測試過程:

         當前incarnation 5,初始SCN爲7966706。

查看備份集相鄰SCN

從當前7966705恢復到7967501

run{

allocate channel ch1 type disk;

allocate channel ch2 type disk;

allocate channel ch3 type disk;

restore database;

recover database until scn 7967501;

release channel ch1;

release channel ch2;

release channel ch3;

}

完成恢復並打開數據庫

查看當前incarnation

此時基於incarnation 6恢復到scn 7966873

run{

allocate channel ch1 type disk;

allocate channel ch2 type disk;

allocate channel ch3 type disk;

restore database;

recover database until scn 7966873;

release channel ch1;

release channel ch2;

release channel ch3;

}

出現報錯

切換到incarnation 5再次執行恢復

恢復完成以resetlogs方式成功打開,初始SCN爲7966874

【總結】

         當執行多次不完全恢復時,需要清楚知道scn所在的incarnation,基於不同的incarnation進行可行的業務恢復。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章