1.數據庫全庫恢復
RMAN>restore/revover database ;
例如:
$ rman target /
RMAN> startupmount
RMAN> restoredatabase;
RMAN> recoverdatabase;
RMAN> alterdatabase open;
RMAN>restore/revover tablespace xx ;
恢復:
如果我們只丟失了特定的表空間的數據文件,那麼我們可以選擇只恢復這個表空間,而不是恢復整個數據庫。表空間恢復可以在不關閉數據庫的情況下進行,只需要將需要恢復的表空間offline
例如:
RMAN> RUN{
sql "altertablespace xx offline immediate;"
restoretablespace xx;
recovertablespace xx;
sql "altertablespace xx online;"
}
恢復到一個不同的位置:
RMAN> RUN{
sql "altertablespace xx offline immediate;"
SET NEWNAME fordatafile 1 to '/xx';
restoretablespace xx;
switch datafile1;
recovertablespace xx;
sql "altertablespace tbs1 online;"
}
默認情況下,即使丟失了只讀的數據文件,RMAN 也不會在執行完全數據庫還原操作時候還原只讀的數據文件。要在完全恢復期間還原只讀的數據文件,就必須在RESTORE命令中使用CHECK READONLY 參數:
RMAN> RESTOREDATABASE CHECK READONLY;
RMAN>restore/revover datafile 數據文件號(或數據文件名);
數據文件恢復與表空間恢復類似。假設數據文件號爲 5 的文件丟失,文件名是:
'E:/ORACLE/ORADATA/USERS.DBF',那麼我們恢復的時候可以指定文件號,也可以指定文件名。
例如:
RMAN> run {
allocate channeldev1 type disk;
sql "altertablespace users offline immediate";
restore datafile4; --或者 restore 'E:/ORACLE/ORADATA/USERS.DBF'
recover datafile4;
sql "altertablespace users online";
release channeldev1;
}
恢復到一個不同的位置:
$ rman target /
RMAN> startupmount
RMAN> RUN{
sql "altertablespace users offline immediate";
SET NEWNAME fordatafile 9 to '/xx/user01.dbf';
restore datafile9;
switch datafileall;
recover datafile9;
sql "altertablespace users online";
}
使用自動備份恢復SPFILE/控制文件
RMAN> startupnomount;
RMAN> setdbid=153910023
RMAN> restorecontrolfile from autobackup
RMAN> restorespfile/controlfile to '/xx/xx' from autobackup ;
或
RMAN> restorecontrolfile from '/arch/ct_c-2347671489-20060630-00';
聯機狀態:目標數據庫MOUNT或OPEN
RMAN> restorecontrolfile to 'd:/temp/control01.ctl';
顯示恢復目錄中的歸檔日誌:
RMAN> listbackupset of archivelog all;
一般情況下,在 RMAN 的普通恢復過程中,不必恢復歸檔的重做日誌。不過偶爾也需要恢復重做日誌,例如我們用Log Miner 來從歸檔中查找一些東西。
RMAN命令舉例:
RMAN> RESTOREARCHIVELOG ALL;
RMAN> RESTOREARCHIVELOG FROM LOGSEQ=1 UNTIL LOGSEQ=20;
RMAN> RESTOREARCHIVELOG FROM LOGSEQ=1;
也可以用 SET命令來指定歸檔日誌的還原位置,例如:
RMAN> run
{
set archivelogdestination to "d:/temp";
restorearchivelog all;
}
需要注意的是,即使新的歸檔日誌目錄不同於默認的歸檔日誌目錄,如果 Oracle 判定日誌已存在,也不會恢復該歸檔日誌文件。
與備份檢查一樣,還原操作也可以檢查是否能正常restore 或者是否該備份集
是否有效。如::
RMAN> RESTOREDATABASE VALIDATE;
RMAN>VALIDATE BACKUPSET 218;
RMAN> RESTOREDATABASE VALIDATE CHECK LOGICAL ;
從指定的 tag 恢復:
RMAN> RESTOREFROM tag=’xxxx’;
set untiltime/SCN/
RMAN> restoredatabase until scn 1000;
RMAN>restoredatabase "to_date('2005/08/01 13:00:00','yyyy/mm/dd hh24:mi:ss')";
RMAN> restoredatabase until sequence 100 thread 1;
例如:
SQL> startupmount;
RMAN> run{
allocate channeld1 type disk;
restore databaseuntil scn 1317011; --或者 set until scn 1317011
recover databaseuntil scn 1317011;
sql 'alterdatabase open resetlogs';
release channeld1;
}
RMAN> run{
set until time"to_date('2005/08/01 13:00:00','yyyy/mm/dd hh24:mi:ss')";
restoredatabase;
recoverdatabase;
alter databaseopen resetlogs;
}
塊恢復Block Media Recovery (BMR),塊是恢復的最小單元,通過塊可以減少恢復時間,而且數據文件可以在線。恢復塊的時候,必須指定具體的塊號,
例如:
RMAN> blockrecoverdatafile 6 block 3;