生產環境資料檔遺失、無 RMAN 備份、但保有完整歸檔日誌。本文記錄真實案例:透過 CREATE DATAFILE 重建空檔、RMAN CATALOG 登記歸檔、RECOVER DATAFILE 應用歸檔/Redo、處理 RMAN-06102、ORA-00279、控制檔記錄保留天數不足、帶庫備份損毀、9.2.0.6 ALTER DATABASE RECOVER Bug 等完整排查與復原流程。
tzgl 資料檔遺失 (File#=12),無 RMAN 備份,歸檔日誌完整保留於磁碟。control_file_record_keep_time=7 (預設),導致歸檔記錄僅保留 7 天。
ALTER DATABASE CREATE DATAFILE 12 AS '/oracle/product/9.2.0/dbs/tzgl';
-- 或指定路徑
ALTER DATABASE CREATE DATAFILE '/oracle/product/9.2.0/dbs/tzgl' AS '/oracle/product/9.2.0/dbs/tzgl';
ALTER SYSTEM SET control_file_record_keep_time = 365 SCOPE=BOTH;
RMAN> CATALOG ARCHIVELOG '/oradata/ora9roro/archive/1_1.dbf';
RMAN> CATALOG ARCHIVELOG '/oradata/ora9roro/archive/1_2.dbf';
-- 批次登記所有歸檔
RMAN> CATALOG START WITH '/oradata/ora9roro/archive/';
CATALOG 會將歸檔資訊寫入控制檔 (與 Recovery Catalog 無關),使 RMAN 能辨識並應用。
RMAN> RUN {
ALLOCATE CHANNEL ch1 TYPE DISK;
RECOVER DATAFILE 12;
RELEASE CHANNEL ch1;
}
-- 9.2.0.6 Bug: ALTER DATABASE RECOVER DATAFILE 不自動應用歸檔
-- 正確語法 (Metalink 352617.1 / Bug 4178579)
RECOVER DATAFILE 12;
-- 或
RECOVER AUTOMATIC DATAFILE 12;
-- 或
ALTER DATABASE RECOVER AUTOMATIC DATAFILE 12;
ALTER DATABASE OPEN;
| 問題 | 原因 | 解決 |
|---|---|---|
| RMAN-06102: no channel to restore log | 控制檔無歸檔記錄 (keep_time=7) | CATALOG ARCHIVELOG 登記 + 調大 control_file_record_keep_time |
| ORA-00279/280/289: 建議歸檔但無法自動應用 | 9.2.0.6 ALTER DATABASE RECOVER Bug | 改用 RECOVER DATAFILE 或 RECOVER AUTOMATIC DATAFILE |
| 帶庫備份讀取失敗 ORA-19501/27190/19511 ANS1314E | 帶庫媒體損毀/資料被覆寫 | 放棄帶庫備份,改用磁碟歸檔復原 |
| V$BACKUP_PIECE 顯示有備份但用戶稱無備份 | 備份腳本存在但帶庫故障 | 確認備份可用性,不可盲信目錄記錄 |
RESTORE VALIDATE 驗證可用性。control_file_record_keep_time 設定 ≥ 備份保留週期 (建議 365)。此案例證明:完整歸檔日誌 + 正確 CATALOG 登記 + 正確 RECOVER 語法,可在無資料檔備份情況下完整復原資料庫。關鍵在於平時確保歸檔完整保留、控制檔記錄足夠長、RMAN Catalog 獨立部署。