首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle RMAN 異機恢復實戰:從備份到 Open Resetlogs 全流程

     編輯:Oracle 資料庫相關知識

場景

機器 A (源庫) → 全備 + 歸檔 → 傳輸文件 → 機器 B (目標庫) 恢復並啟動。

機器 A:備份階段

-- 確認實例/數據庫/數據文件
SELECT instance_name FROM v$instance;
SELECT name FROM v$database;
SELECT name FROM v$datafile;

-- 開啟歸檔模式
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
ALTER SYSTEM ARCHIVE LOG CURRENT;

-- 控制文件跟蹤
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
SHOW PARAMETER user_dump_dest;

-- RMAN 全備
SET ORACLE_SID=orcl
RMAN TARGET sys/abc
RMAN> HOST "MD C:\BACK";
RMAN> RUN {
  BACKUP DATABASE
  FORMAT 'C:\BACK\%d_%s_%T_FULL.BAK';
}

傳輸 C:\BACK 目錄與 admin\orcl (含 pfile、跟蹤文件) 到機器 B。

機器 B:恢復階段

  1. 創建目錄結構:E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL、ADMIN、FLASH_RECOVERY_AREA
  2. 放置 admin\orcl、修改 initorcl.ora 路徑 D:\ → E:\
  3. ORACLE ORCL 啟動實例到 NOMOUNT (Ctrl+C 退出)
  4. SQLPLUS / AS SYSDBA → STARTUP NOMOUNT
  5. RMAN 恢復控制文件:
    RMAN TARGET sys/abc
    RESTORE CONTROLFILE FROM 'C:\BACK\ORCL_2_20090414_FULL.BAK';
  6. ALTER DATABASE MOUNT
  7. RMAN 恢復數據文件並切換:
    RUN {
      SET NEWNAME FOR DATAFILE 1 TO 'E:\...\SYSTEM01.DBF';
      SET NEWNAME FOR DATAFILE 2 TO 'E:\...\UNDOTBS01.DBF';
      SET NEWNAME FOR DATAFILE 3 TO 'E:\...\SYSAUX01.DBF';
      SET NEWNAME FOR DATAFILE 4 TO 'E:\...\USERS01.DBF';
      SET NEWNAME FOR DATAFILE 5 TO 'E:\...\XM';
      RESTORE DATABASE;
      SWITCH DATAFILE ALL;
    }
  8. 重建控制文件(使用跟蹤文件腳本,路徑改為 E:\,刪除舊 .ctl)
  9. ALTER DATABASE OPEN RESETLOGS
  10. 驗證:SELECT name FROM v$database; SELECT member FROM v$logfile;

關鍵注意點

  • 目標機 ORACLE_HOME/SID/版本/字符集需與源庫一致。
  • RESETLOGS 會重置 Redo,不可與原庫共存做 Data Guard。
  • 跟蹤文件中的 CREATE CONTROLFILE 腳本需手動調整路徑、字符集、Redo 組大小。
  • 若有歸檔缺口,需先 RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL 應用歸檔。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved