誤刪 REDO01~03.LOG 導致資料庫無法正常啟動(ORA-00313、ORA-00312 等錯誤)。恢復策略取決於遺失的日誌組狀態:Current(當前)、Active(作用中)、Inactive/Unused(非作用中/未使用)。
sqlplus /nologCONNECT / AS SYSDBA(或指定實例 CONNECT /@instancename AS SYSDBA)STARTUP MOUNT — 掛載資料庫,不開啟,可操作控制檔、日誌檔、資料檔。SELECT * FROM v$logfile; -- 檔案路徑、群組號
SELECT * FROM v$log; -- 群組狀態:CURRENT, ACTIVE, INACTIVE, UNUSED, CLEARING...
狀態顯示 INACTIVE 且已歸檔。執行:
ALTER DATABASE CLEAR LOGFILE GROUP n;
n 為群組號。Oracle 會自動建立新日誌檔並標記為 UNUSED。
狀態 ACTIVE 或 INACTIVE 但未歸檔。強制清除(會導致未歸檔內容永久遺失,需後續完整備份):
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP n;
執行後務必立即進行完整熱備份,否則無法做時間點恢復。
若上述 CLEAR 失敗(報 ORA-01624),表示日誌組為 CURRENT。需執行未完成恢復:
RECOVER DATABASE UNTIL CANCEL;
依提示應用可用的歸檔日誌,直到無法繼續輸入 CANCEL,再 ALTER DATABASE OPEN RESETLOGS 開啟資料庫。資料會遺失至最後一個可用歸檔日誌為止。
V$LOG 確認所有群組狀態正常。V$LOG 狀態異常。