控制檔遺失 → RMAN Repository 遺失 → **必須手動指定 DBID** → 從自動備份還原控制檔 → MOUNT → 還原/恢復資料檔 → **RESETLOGS 開啟** (因備份控制檔不包含當前 Redo 狀態)。
SQL> SHUTDOWN IMMEDIATE;
SQL> HOST DEL F:\ORAHOME1\ORADATA\JSSWEB\CONTROL*.CTL;
SQL> EXIT
C:\> SET ORACLE_SID=JSSWEB
C:\> RMAN TARGET /
RMAN> SET DBID 3391142503; -- 關鍵:無控制檔無法自動識別 DBID
方式 A:指定自動備份片段完整路徑 (最精確、最快)
RMAN> RESTORE CONTROLFILE FROM 'd:\backup\C-3391142503-20070718-04';
方式 B:從自動備份搜尋 (需重設格式)
RMAN> SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:\backup\%F';
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
輸出確認: RMAN 顯示 `Restoring control file` → `Output file name=...CONTROL01.CTL` → `CONTROL02.CTL` → `CONTROL03.CTL` (依 `CONTROL_FILES` 參數多路徑複寫)。
RMAN> SQL 'ALTER DATABASE MOUNT'; -- 或 ALTER DATABASE MOUNT;
此時 `V$INSTANCE.STATUS` 應顯示 `MOUNTED`。
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
關鍵觀察點:
RECOVER 前執行:SET UNTIL SEQUENCE THREAD 1; 或 SET UNTIL TIME 'YYYY-MM-DD HH24:MI:SS'; 限制恢復範圍。RMAN> SQL 'ALTER DATABASE OPEN RESETLOGS';
為何必須 RESETLOGS? 備份控制檔記錄的检查點 SCN、線上重做日誌組/成員/序列號均屬於過去時間點,不反映當前實際 Redo 狀態。Oracle 強制重置日誌序列號 (從 1 開始)、重新產生線上重做日誌檔案,開啟新的化身。此操作將導致備份控制檔建立後、尚未歸檔的線上重做日誌內容永久丟失 (若該部分日誌仍在線上日誌組中且未被覆寫,理論上可嘗試不完全恢復避免 RESETLOGS,但操作極高風險,生產環境標準流程即 RESETLOGS)。
SQL> CONN jss/JSs
SQL> SELECT * FROM tmp3;
-- 預期輸出:test4, test1, test2, test3 (4 筆測試資料完整)
ALTER TABLESPACE TEMP ADD TEMPFILE '...' SIZE ... REUSE; (10g+ 可能自動建立,仍需確認)。RMAN> BACKUP DATABASE PLUS ARCHIVELOG;orapwd file=... password=... entries=...| 錯誤代碼/現象 | 原因 | 解決方案 |
|---|---|---|
| `RMAN-00571` / `ORA-01990` / `ORA-27041` (password file) | 密碼檔遺失 | 忽略錯誤重試 `ALTER DATABASE MOUNT`,事後 `orapwd` 重建 |
| `RMAN-06054: media recovery requesting unknown log` | 歸檔日誌缺口,嘗試恢復至不可用 SCN | `SET UNTIL SEQUENCE/TIME/SCN` 限制恢復範圍至最後可用歸檔 |
| `RMAN-03002: failure of restore command` / `ORA-19870` | 自動備份格式/路徑錯誤,找不到片段 | `SET CONTROLFILE AUTOBACKUP FORMAT ...` 精確指定格式,或用 `RESTORE CONTROLFILE FROM 'full_path'` |
| `ORA-01194: file 1 needs more recovery` | `RECOVER DATABASE` 未執行或中斷 | 重新執行 `RECOVER DATABASE` 直到 `Media recovery complete` |
| 資料遺失 (測試表資料不全) | 恢復點早於資料寫入時間 | 確認備份時間點、歸檔日誌完整性,必要時切換至更新的備份集 |