1. 程式人生 > >RMAN備份恢復之不完全恢復

RMAN備份恢復之不完全恢復

ORACLE不完全恢復
基於時間的不完全恢復
恢復要求:a、資料庫開啟歸檔切要有最近的有效rman全備。b、要有需要恢復到的準確時間點。
1、 做一個rman全備
RMAN>backup database;
2、 構建幾個狀態
在資料庫裡建立scott.t1並插入資料記錄狀態為a,記錄時間t1。
在資料庫裡建立scott.t2並插入資料記錄狀態為b,記錄時間t2。
進入資料庫刪除scott.t2裡的某幾個資料記錄狀態為c,記錄時間為t3。
進入資料庫刪除使用者scott記錄狀態為d,記錄時間為t4。
3、 目的恢復到狀態b,用錯時間恢復到狀態c。
RMAN> shutdown immediate;
RMAN> startup mount;
RMAN> run
2> {
3> allocate channel d1 type disk;
4> allocate channel d2 type disk;
5> set until time "to_date('t3','yyyy-mm-dd hh24:mi:ss')"; 指定刪除表之前的時間
6> restore database;
7> recover database;
8> alter database open resetlogs;
9>}
4、 檢查t2資料發現是在狀態c,重新 恢復到狀態b。
5、 RMAN模式下檢視資料庫狀態,恢復到未使用rman恢復的狀態。
RMAN> list incarnation;檢視資料庫的所在狀態。因為已經恢復過一次使用要恢復到未恢復的狀態,即上一狀態,如果查到有三個就恢復到2,如果有五個就恢復到3。
RMAN> reset database to incarnation 2; 重置資料庫的狀態
RMAN> run
2> {
3> allocate channel d1 type disk;
4> allocate channel d2 type disk;
5> set until time "to_date('t2','yyyy-mm-dd hh24:mi:ss')";
6> restore database;
7> recover database;
8> alter database open resetlogs;
9>}
6、進庫檢視驗證即可。

注:
RMAN> list incarnation; 檢視資料庫的狀態,使用rman恢復一個就會產生一個狀態。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

基於SCN號的不完全恢復
前提:資料庫開啟歸檔模式、有一個可用的rman全備、已知資料庫損壞前的scn號
1、模擬故障
Rma>back up database;做rman全備
SQL> select current_scn from v$database; 檢視當前scn號

CURRENT_SCN

 475351

Rm –rf *.dbf 刪除資料檔案

2、恢復資料庫
SQL> shutdown abort;
SQL> start mount將資料庫強制關機並啟動到mount狀態
3、執行指令碼
RMAN> run {
2> set until scn=475351;
3> restore database;
4> recover database;
5> alter database open resetlogs; }
4、檢視資料庫狀態,驗證資料庫是否正常
SQL> select status from v$instance;