1、故障點資料庫恢複
對於故障點(point-of-failure)的恢複,也稱為完全資料庫恢複,此時必須要求聯機重做日誌是完整無損的。 如果丟失了聯機重做日誌,就必須對資料庫做不完全恢複。
我們假設聯機重做日誌和控制檔案完整無損,此時我們通過以下步驟來完全恢複資料庫:
Shutdown immediate;
Startup mount;
Restore database;
Recover database;
Alter database open;
這種恢複操作比較簡單,但是有幾點需要注意。 首先,如果某個檔案已經存在並且不需要被恢複,Oracle就不會恢複這個檔案。 Oracle 會確定要還原的檔案是否存在。 如果已存在,並且已有的檔案與準備還原的檔案相同,RMAN 就不會再次還原這個檔案。 如果備份映像上的檔案與已有的資料庫檔案有所不同,RMAN 則會恢複這個檔案。 因此,如果丟失了一個或兩個資料檔案,可能需要執行一個資料檔案或資料表空間恢複操作。
對於任何archivelog 模式還原作業來說,這些步驟都是非常類似的。 恢複目錄伺服器參數檔案和控制檔案之後,可以執行restore database命令,使RMAN 開始還原所有的資料庫資料檔案。注意的是,在這種情況下,由於我們要還原關鍵的資料表空間(SYSTEM資料表空間),所以必須關閉資料庫。 儘管可以聯機執行多archivelog 模式的還原作業,但是不能聯機執行完全時間恢複操作。
一旦還原了資料檔案,Oracle 會執行下一條命令(recover database),這條命令通過應用歸檔的重做日誌(執行完全時間點恢複要用的)使ORACLE RDBMS 開始將資料庫恢複到故障點。 此外,RMAN 的另一個優點是它可以從磁碟上還原所需要的歸檔的重做日誌,這樣就可以在恢複進程中應用這些歸檔檔案的重做日誌。一旦完成了恢複,就可以open 資料庫。
2、資料表空間恢複
有時候,我們只丟失了某個資料表空間的資料檔案,此時,我們可以選擇只恢複這個資料表空間,而不用恢複整個資料庫。 資料表空間恢複可以在不關閉資料庫的情況下進行。 樣本:
SQL>Alter tablespace tablespace_name offline;
RMAN>restore tablespace tablespace_name ;
RMAN>recover tablespace tablespace_name ;
SQL>Alter tablespace tablespace_name online;
注意:不能將單個資料表空間或資料檔案還原到與資料庫其他部分所處時間點不同的某個時間點。
也可以同時還原多個資料表空間:
SQL>Alter tablespace tablespace_name1 offline;
SQL>Alter tablespace tablespace_name2 offline;
RMAN>restore tablespace tablespace_name1,tablespace_name2 ;
RMAN>recover tablespace tablespace_name1,tablespace_name2 ;
SQL>Alter tablespace tablespace_name1 online;
SQL>Alter tablespace tablespace_name2 online;
3、資料檔案恢複
資料檔案恢複和資料表空間恢複很類似,只不過換成資料檔案的路徑了。這裡我們僅替換遺失資料的資料檔案,同時保持資料表空間其餘部分的保持聯機狀態,這樣使用者任何可以訪問這些部分。
補充一點知識:
我們可以通過一下sql 查看file ID和檔案的關係。 一般在報錯的時候,都會有ID。 這樣在恢複的時候也比較方便。
SQL> select file_id,file_name from dba_data_files;
FILE_ID FILE_NAME
---------- ---------------------------------------------------------------------
4 D:/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF
3 D:/APP/ADMINISTRATOR/ORADATA/ORCL/UNDOTBS01.DBF
2 D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSAUX01.DBF
1 D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSTEM01.DBF
5 D:/APP/ADMINISTRATOR/ORADATA/ORCL/DAVE0.DBF
恢複樣本:
SQL>alter database datafile 5 offiline;
SQL>alter database datafile 'D:/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF' offline;
RMAN>restore datafile 5;
RMAN>restore datafile 'D:/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF';
RMAN>recover datafile 3;
RMAN>recover datafile 'D:/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF';
SQL>alter database datafile 3 online;
SQL>alter database datafile 'D:/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF' online;
4、使用增量備份的恢複操作
Oracle 會在還原資料檔案時自動判斷是否使用了增量備份策略,還會根據需要自動應用所需的增量備份集。 在這種情況下,不需要執行不同的恢複操作。
使用增量備份的還原作業期間,restore 命令只還原基本備份。一旦完成了這個還原作業,就可以執行recover 命令將增量備份和歸檔的重做日誌應用於資料庫。 一旦完成了恢複操作,我們就能正常開啟資料庫。 在所有情況下,Oracle 都會嘗試還原基本備份和最新的增量備份。 這樣減少完全恢複資料庫所應用的重做日誌,從而減少還原時間。
需要注意的是,由於在恢複進程期間,資料庫很可能有多個備份組,所以恢複操作的時間會超出我們的預期。 不過,根據多種因素,資料更改速率是一個重要因素,應用增量備份集比應用大量重做日誌更快,這種增量備份解決方案就是一個快速的解決方案。 因此,增量備份地優勢在於它是一個快速備份的策略並且需要更小的空間來儲存備份組片。不過它的代價就是恢復有可能會更長。