Oracle 物理結構故障源於硬體損壞或人為誤操作。處理前必須先排除硬體問題,確認無硬體故障後再依標準流程恢復。
控制檔記錄資料庫名稱、字元集、資料檔/日誌檔位置等關鍵配置。損壞會導致資料庫異常關閉且無法啟動。可透過 $ORACLE_BASE/admin/bdump/alert_<SID>.ora 定位損壞檔案。
SHUTDOWN IMMEDIATE;init<SID>.ora 確認所有控制檔路徑STARTUP;STARTUP MOUNT;
ALTER DATABASE BACKUP CONTROLFILE TO TRACE NORESETLOGS;
createcontrol.sqlSHUTDOWN ABORT;
STARTUP NOMOUNT;
@createcontrol.sql;
所有 DML 皆記錄於重做日誌。損壞分三種狀態處理:
ALTER DATABASE DROP LOGFILE GROUP n; 後 ADD LOGFILE GROUP n ...ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP n;CLEAR UNARCHIVED,若失敗則需執行時間點不完全恢復處理後 ALTER DATABASE OPEN; 並全備。
SELECT name FROM v$datafile WHERE status='INVALID';ALTER DATABASE DATAFILE '...' OFFLINE;ALTER DATABASE RECOVER DATAFILE '...';ALTER DATABASE DATAFILE '...' ONLINE;STARTUP MOUNT;ALTER DATABASE RECOVER DATAFILE '...';ALTER DATABASE OPEN;流程與資料檔類似,以 ALTER TABLESPACE ... OFFLINE/ONLINE 及 RECOVER TABLESPACE 操作。SYSTEM 表空間需 MOUNT 模式下恢復。
STARTUP MOUNT → RECOVER DATABASE UNTIL CANCEL → ALTER DATABASE OPEN RESETLOGS → 全備STARTUP NOMOUNT → 執行 RMAN 恢復腳本 → ALTER DATABASE OPEN RESETLOGS → 全備針對「資料檔+歸檔日誌+控制檔」同時遺失、「資料檔+重做日誌+控制檔」同時遺失、「重做日誌+控制檔」同時遺失、「僅歸檔日誌遺失」四種組合,提供分步驟恢復腳本,核心在於利用同步冷備份檔案配合 RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL 並 OPEN RESETLOGS。
V$LOGMNR_CONTENTS 取得 SQL_REDO/SQL_UNDO → 執行修復 → 結束 LogMiner → 全備OPEN RESETLOGS → 取出遺失資料 → DML 還原原庫 → 全備建立完善備份策略、定期演練恢復流程、監控 Fast Recovery Area 使用率,是避免 ORA-00257 等空間不足錯誤的關鍵。Oracle 10g 引入 Flash Recovery Area 另行限制歸檔空間,管理員須特別留意其配額設定。