物理結構故障 (控制檔/重做日誌/資料檔損壞) 多因硬體故障或人為誤操作引發。本文建立「硬體優先確認 → 故障分級 → 標準化恢復流程 → 驗證備份」四步驟體系,詳細給出控制檔單個/全損、重做日誌損壞的分場景操作指令、決策邏輯與風險控制點。
alert_.log (位置: $ORACLE_BASE/diag/rdbms///trace/ )、V$DATABASE_BLOCK_CORRUPTION、RMAN VALIDATE DATABASE現象:Alert 日誌報 ORA-00210/ORA-00202,實例可能已異常終止
SHUTDOWN ABORT (若未自動終止)CONTROL_FILES 參數確認所有路徑:SHOW PARAMETER control_filescp /u02/oradata/ORCL/control02.ctl /u03/oradata/ORCL/control03.ctlSTARTUPBACKUP DATABASE PLUS ARCHIVELOG),建立新基準點前提:無可用控制檔副本,需重建
SHUTDOWN ABORTRESTORE CONTROLFILE FROM AUTOBACKUP; (需配置 AUTOBACKUP)STARTUP MOUNT;
ALTER DATABASE BACKUP CONTROLFILE TO TRACE NORESETLOGS;
CREATE CONTROLFILE 區段,修正:
NORESETLOGS (有完整備份) vs RESETLOGS (不完整備份/點時間恢復)MAXDATAFILES 等上限參數SHUTDOWN ABORT;
STARTUP NOMOUNT;
@create_control.sql; -- 包含 CREATE CONTROLFILE 語句
ALTER DATABASE OPEN RESETLOGS; -- 若用 RESETLOGS
| 狀態 | 現象 | 處理策略 |
|---|---|---|
| 當前組損壞 | 實例異常終止 (ORA-00316/ORA-00327) | 不完整恢復 (UNTIL CANCEL/CHANGE/SEQUENCE) + OPEN RESETLOGS |
| 作用中組損壞 | LGWR 寫入失敗,實例掛起/終止 | 同上,或 CLEAR LOGFILE (若已歸檔) |
| 非作用組損壞 | Alert 日誌報錯,實例運行正常 | ALTER DATABASE CLEAR LOGFILE GROUP n; (若已歸檔)ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP n; (未歸檔,需不完整恢復) |
| 成員損壞 (多成員組) | Alert 警告,實例正常 | ALTER DATABASE DROP LOGFILE MEMBER 'path'; → ADD LOGFILE MEMBER 'new_path' TO GROUP n; |
IF 日誌組已歸檔:
ALTER DATABASE CLEAR LOGFILE GROUP n;
ELSE IF 允許資料遺失 (非核心系統/有其他備份):
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP n;
-- 隨後必須 OPEN RESETLOGS + 完整備份
ELSE:
不完整恢復 (UNTIL SEQUENCE n-1) + OPEN RESETLOGS
OPEN RESETLOGS 後,舊歸檔日誌失效,必須立即建立新完整備份CLEAR UNARCHIVED LOGFILE 導致歸檔連續性中斷,Standby 需重建RMAN VALIDATE DATABASE + 業務驗收測試LOG_ARCHIVE_MIN_SUCCEED_DEST=1CONFIGURE CONTROLFILE AUTOBACKUP ON、BACKUP VALIDATE 定期驗證V$DATABASE_BLOCK_CORRUPTION、Alert 日誌關鍵字告警 (ORA-002xx, ORA-003xx, ORA-011xx)物理結構故障恢復的核心不在於記住指令,而在於:建立「硬體先行 → 範圍定位 → 分級標準流程 → 驗證備份 → 根因消除」肌肉記憶,並在平時演練中內化為直覺反應。