SQL> STARTUP
Oracle Instance started.
...
Database mounted.
ORA-00313: cannot open log group 1 member
ORA-00312: online log 1 thread 1: 'E:\...\REDO01.LOG'
ORA-00312: online log 1 thread 1: 'F:\REDO\REDO01_B.LOG'
SQL> SELECT group#, members, archived, status FROM v$log;
GROUP# MEMBERS ARC STATUS
1 2 YES INACTIVE
2 2 NO CURRENT
3 2 YES INACTIVE
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
Database altered.
SQL> ALTER DATABASE OPEN;
ORA-00313: cannot open log group 2
ORA-00312: online log 2 thread 1: 'E:\...\REDO02.LOG'
ORA-00312: online log 3 thread 1: 'F:\REDO\REDO02_B.LOG'
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2;
ORA-00350: log 2 needs archiving
ORA-00312: online log 2 thread 1: ...
原因:Group 2 為 CURRENT 狀態且未歸檔 (ARCHIVED=NO),直接 CLEAR 會導致未歸檔 Redo 遺失。
SQL> ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 2;
Database altered.
警告:此操作會永久遺失該 Redo 群組中的未歸檔變更,若無完整備份無法做時間點恢復 (PITR)。
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 3;
Database altered.
SQL> ALTER DATABASE OPEN;
Database altered.
| 場景 | 可行策略 | 風險 |
|---|---|---|
| 單一 Member 遺失,其他 Member 完好 | 複製完好 Member → STARTUP | 無 |
| 整組 INACTIVE 遺失,有歸檔 | CLEAR LOGFILE GROUP n | 低 |
| 整組 CURRENT 遺失,有歸檔 | CLEAR UNARCHIVED LOGFILE GROUP n | 遺失未歸檔 Redo,無法 PITR 至該段 |
| 所有 Redo 遺失,有完整冷備份 + 歸檔 | 還原控制檔 + 完整恢復 + OPEN RESETLOGS | 標準恢復,無資料遺失 |
| 所有 Redo 遺失,無備份 | CLEAR UNARCHIVED 全群組 → OPEN RESETLOGS | 極高:所有未歸檔變更永久遺失,邏輯可能不一致 |
RESTORE VALIDATE、RECOVER VALIDATE。