首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle 異機恢復實戰:基於 RMAN 歸檔模式完整備份還原與時間點恢復流程詳解

     編輯:Oracle 教學

Oracle 異機恢復完整實戰指南(歸檔模式)

本文記錄在 Windows 平台上,使用 RMAN 將生產庫(ORCL, DBID=1252729974)完整備份與歸檔日誌還原至異機,並執行時間點恢復的完整操作流程。目標端路徑與源端不同,涉及控制檔、數據檔、Redo Log 全部重定向。

前置條件

  • 源庫運行於歸檔模式,已完成完整備份(Level 0)及增量備份(Level 1)、歸檔日誌備份。
  • 目標機已安裝相同版本 Oracle 軟體,SID 相同(ORCL)。
  • 將所需備份集(含控制檔備份)複製至目標機 F:\ 目錄。

恢復操作步驟

1. RMAN 連線與實例關閉

C:\> rman target /
RMAN> SHUTDOWN IMMEDIATE;

2. 啟動至 NOMOUNT 階段

RMAN> STARTUP NOMOUNT;

3. 還原控制檔(指定最新控制檔備份片)

RMAN> RESTORE CONTROLFILE FROM 'F:\C-1252729974-20140923-00';

4. 掛載資料庫

RMAN> ALTER DATABASE MOUNT;

5. 清除舊備份記錄(避免還原混淆)

RMAN> DELETE BACKUP;
-- 確認刪除所有 EXPIRED 與舊備份片

6. 註冊新備份集(按時間順序:先全備,後增量,最後歸檔)

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';

7. 設定數據檔新路徑並還原資料庫(RUN 區塊)

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 小時)。

8. 切換數據檔至新路徑

RMAN> RUN {
  SET NEWNAME FOR DATAFILE 1 TO 'D:\APP\ORADATA\ORCL\SYSTEM01.DBF';
  -- ... 重複所有 SET NEWNAME ...
  SWITCH DATAFILE ALL;
}

9. 修改 Redo Log 檔案路徑(需 SQL*Plus 執行)

SQL> ALTER DATABASE RENAME FILE 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' TO 'D:\APP\ORADATA\ORCL\REDO01.LOG';
-- 批次執行所有 10 個 Redo Log 組成員

10. 恢復資料庫(應用歸檔日誌)

RMAN> RECOVER DATABASE;
-- 等待歸檔應用完成

11. 指定恢復終點(Sequence 為基準)

RMAN> RUN {
  SET UNTIL SEQUENCE 366246 THREAD 1;
  RECOVER DATABASE;
}

12. 重置日誌開啟資料庫

RMAN> ALTER DATABASE OPEN RESETLOGS;

13. 驗證恢復結果

RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP;
-- 實例正常開啟,恢復成功

關鍵補充說明

為何線上備份必須歸檔模式?

線上備份期間資料檔可能發生 DML 變更,若無歸檔日誌記錄這些變更,還原後無法將資料檔推進至一致性 SCN,導致資料遺失。歸檔模式保證所有 Redo 皆被歸檔,配合備份可實現任意時間點恢復。

切換歸檔模式前的舊備份是否有效?

無效。 非歸檔模式備份缺少歸檔日誌,無法完成完全恢復。切換為歸檔模式後,必須立即執行一次完整 Level 0 備份 作為新基準。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved