| 場景 | 症狀 | 處理 |
|---|---|---|
| 單一Member遺失 (多路徑鏡像) | 啟動報ORA-00313/312,但該Group其他Member完好 | 從鏡像Member複製覆蓋 → STARTUP |
| 整個Group遺失 (非Current) | 該Group狀態INACTIVE/ACTIVE,已歸檔 | ALTER DATABASE CLEAR LOGFILE GROUP n; 自動重建 |
| Current Group遺失 或 未歸檔Group | 該Group狀態CURRENT,或報ORA-00350需歸檔 | 必須有物理備份:CLEAR UNARCHIVED LOGFILE GROUP n + 從備份恢復該Group檔案 |
SHUTDOWN IMMEDIATE;
-- OS層面刪除所有 *.log
STARTUP;
-- 報錯:ORA-00313/312 無法開啟日誌組
SELECT group#, members, archived, status FROM v$log;
-- 輸出範例:
-- GROUP# MEMBERS ARC STATUS
-- 1 2 YES INACTIVE
-- 2 2 NO CURRENT
-- 3 2 YES INACTIVE
ALTER DATABASE CLEAR LOGFILE GROUP 1;
ALTER DATABASE CLEAR LOGFILE GROUP 3;
-- 成功:Database altered.
ALTER DATABASE CLEAR LOGFILE GROUP 2;
-- 報錯:ORA-00350: log 2 needs archiving
-- 必須使用 UNARCHIVED 選項 (會丟失未歸檔重做)
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 2;
-- 成功:Database altered.
警告:CLEAR UNARCHIVED 會導致未歸檔重做日誌永久丟失,資料庫無法完成介質恢復至該時間點之後。僅在確認無備份或可接受數據丟失時使用。
ALTER DATABASE OPEN;
-- 成功:Database altered.
SELECT * FROM v$archive_dest_status; 確保無錯誤。CLEAR UNARCHIVED 是最後手段,意味著數據丟失。若無任何備份,且Current Group遺失,資料庫無法正常OPEN。唯一嘗試:
RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE; → ALTER DATABASE OPEN RESETLOGS;