重做日誌是 Oracle 恢復機制的核心,記錄所有資料變更。管理不善將導致災難恢復失敗。本文凝練三大管理支柱:異地存放、強制歸檔、保留策略,構建零資料遺失防線。
失誤案例:某企業將資料檔、線上日誌、歸檔日誌全放同一 RAID 5,磁碟陣列控制器故障導致全部遺失,無法恢復。
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
-- 設定歸檔目的地(建議多重目的地)
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u02/archivelog MANDATORY' SCOPE=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='LOCATION=/u03/archivelog_standby OPTIONAL' SCOPE=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='arch_%t_%s_%r.arc' SCOPE=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=4 SCOPE=BOTH;
MANDATORY 確保至少一個目的地寫入成功才允許覆寫線上日誌,防止歸檔卡住導致資料庫停擺。
| 業務類型 | 建議保留期 | 清理機制 |
|---|---|---|
| 一般企業應用 | 30-90 天 | RMAN CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 2 TIMES TO DEVICE TYPE DISK; |
| 金融/證券/保險 | 7-10 年(法規要求) | 歸檔至 WORM 存儲/雲端冷存儲,定期驗證完整性 |
| 高頻交易/電信 | 1-3 年 | 分層:熱歸檔(SSD,30 天)+ 冷歸檔(HDD/雲,長期) |
RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK FORMAT '/backup/arch_%U';
BACKUP ARCHIVELOG ALL DELETE INPUT; -- 備份並刪除已備份的輸入歸檔
RELEASE CHANNEL ch1;
}
排程每小時/每日執行,配合 CONFIGURE ARCHIVELOG DELETION POLICY 確保至少 2 份備份才清理。
V$ARCHIVED_LOG.NEXT_TIME 最大值與 SYSDATE 差距 > 1 小時 → 歸檔卡住告警。V$FLASH_RECOVERY_AREA_USAGE > 85% → 空間不足告警。V$ARCHIVE_DEST_STATUS 錯誤狀態 → 目的地故障告警。ALTER DATABASE BACKUP CONTROLFILE TO TRACE;SHUTDOWN ABORT → 刪除線上日誌檔。RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL; → 應用歸檔日誌 → ALTER DATABASE OPEN RESETLOGS;「重做日誌異地存放、歸檔模式強制開啟、保留策略自動化」三支柱缺一不可。立即檢視您的環境:歸檔目的地是否單點?保留策略是否配置?上次災難演練是何時?