本文記錄在 Windows 平台上,使用 RMAN 將生產庫(ORCL, DBID=1252729974)完整備份與歸檔日誌還原至異機,並執行時間點恢復的完整操作流程。目標端路徑與源端不同,涉及控制檔、數據檔、Redo Log 全部重定向。
F:\ 目錄。C:\> rman target /
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE CONTROLFILE FROM 'F:\C-1252729974-20140923-00';
RMAN> ALTER DATABASE MOUNT;
RMAN> DELETE BACKUP;
-- 確認刪除所有 EXPIRED 與舊備份片
RMAN> CATALOG BACKUPPIECE 'F:\57PJ1H2R_1_1'; -- Level 0 全備
RMAN> CATALOG BACKUPPIECE 'F:\58PJ1NLQ_1_1';
RMAN> CATALOG BACKUPPIECE 'F:\59PJ1NP9_1_1';
RMAN> CATALOG BACKUPPIECE 'F:\5BPJ48VA_1_1'; -- Level 1 增量
RMAN> CATALOG BACKUPPIECE 'F:\5CPJ491U_1_1';
RMAN> CATALOG BACKUPPIECE 'F:\5EPJ6TBC_1_1';
RMAN> CATALOG BACKUPPIECE 'F:\5FPJ6TES_1_1';
RMAN> RUN {
SET NEWNAME FOR DATAFILE 1 TO 'D:\APP\ORADATA\ORCL\SYSTEM01.DBF';
SET NEWNAME FOR DATAFILE 2 TO 'D:\APP\ORADATA\ORCL\SYSAUX01.DBF';
-- ... 此處省略 3-62 號檔案,實際需全部列出 ...
SET NEWNAME FOR DATAFILE 62 TO 'D:\APP\ORADATA\ORCL\SVM900T02.DBF';
RESTORE DATABASE;
}
⏳ 還原耗時視備份大小而定(本案例約 2 小時)。
RMAN> RUN {
SET NEWNAME FOR DATAFILE 1 TO 'D:\APP\ORADATA\ORCL\SYSTEM01.DBF';
-- ... 重複所有 SET NEWNAME ...
SWITCH DATAFILE ALL;
}
SQL> ALTER DATABASE RENAME FILE 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' TO 'D:\APP\ORADATA\ORCL\REDO01.LOG';
-- 批次執行所有 10 個 Redo Log 組成員
RMAN> RECOVER DATABASE;
-- 等待歸檔應用完成
RMAN> RUN {
SET UNTIL SEQUENCE 366246 THREAD 1;
RECOVER DATABASE;
}
RMAN> ALTER DATABASE OPEN RESETLOGS;
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP;
-- 實例正常開啟,恢復成功
線上備份期間資料檔可能發生 DML 變更,若無歸檔日誌記錄這些變更,還原後無法將資料檔推進至一致性 SCN,導致資料遺失。歸檔模式保證所有 Redo 皆被歸檔,配合備份可實現任意時間點恢復。
無效。 非歸檔模式備份缺少歸檔日誌,無法完成完全恢復。切換為歸檔模式後,必須立即執行一次完整 Level 0 備份 作為新基準。