SQL> STARTUP
ORACLE instance started.
Database mounted.
ORA-00313: open failed for members of log group 3 (thread 1)
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/ORCL/redo03.log'
OS確認redo03.log物理文件不存在(誤刪/磁盤故障)。
| 遺失類型 | 狀態 | 恢復策略 |
|---|---|---|
| 非當前非活躍組 | INACTIVE | ALTER DATABASE CLEAR LOGFILE GROUP n;(自動重建) |
| 當前/活躍組 | CURRENT/ACTIVE | 不完全恢復 + OPEN RESETLOGS(本文案例) |
| 未歸檔的非活躍組 | INACTIVE但未歸檔 | CLEAR UNARCHIVED LOGFILE GROUP n(需備份後執行) |
-- 1. 嘗試啟動到MOUNT(已失敗,數據庫未OPEN)
SQL> SHUTDOWN ABORT; -- 強制關閉掛起實例
ORACLE instance shut down.
-- 2. 啟動到MOUNT
SQL> STARTUP MOUNT;
Database mounted.
-- 3. 執行不完全介質恢復(基於可用歸檔/線上日志)
SQL> RECOVER DATABASE UNTIL CANCEL;
-- 提示應用歸檔日志,依次輸入建議路徑或AUTO
-- 直到提示"Media recovery complete."輸入CANCEL
-- 4. 以RESETLOGS打開數據庫(重置日志序列,生成新Incarnation)
SQL> ALTER DATABASE OPEN RESETLOGS;
Database altered.
-- 5. 立即執行全量備份(Level 0)
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
RESETLOGS產生新DB_INCARNATION#,舊備份無法直接用於時間點恢復,必須建立新基線備份。RESETLOGS後,Standby需重建或使用FLASHBACK DATABASE回閃同步(11g+)。ALTER DATABASE ADD LOGFILE MEMBER '/disk2/redo03b.log' TO GROUP 3;DB_BLOCK_CHECKSUM、DB_LOST_WRITE_PROTECT早期發現磁盤壞塊。CONFIGURE CONTROLFILE AUTOBACKUP ON確保控制文件隨備份自動更新。RECOVER DATABASE UNTIL CANCEL流程,熟悉歸檔應用交互。核心原則:
• 任何Redo Log遺失,首選嘗試CLEAR LOGFILE;只有當前/活躍組遺失且無備份時才走RESETLOGS。
•RESETLOGS後舊歸檔日志對新Incarnation無效,切勿嘗試混用。
• 12c+ CDB架構下,RESETLOGS在CDB$ROOT執行影響全庫,PDB需同步FLASHBACK PLUGGABLE DATABASE。