環境與症狀
- 平台:SunOS 5.8 / Oracle 8.1.5.0.0
- 現象:回應極慢,應用請求逾時無回應
- 發現:
V$LOG 顯示 9 個 Redo Log 群組,除 Current 外全部為 ACTIVE
現場查詢紀錄
SQL> SELECT * FROM v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
------ ------- --------- ---------- ------- --- -------- ------------- ---------
1 1 520403 31457280 1 NO ACTIVE 1.3861E+10 23-JUN-05
2 1 520404 31457280 1 NO ACTIVE 1.3861E+10 23-JUN-05
3 1 520405 31457280 1 NO ACTIVE 1.3861E+10 23-JUN-05
4 1 520406 31457280 1 NO CURRENT 1.3861E+10 23-JUN-05
5 1 520398 31457280 1 NO ACTIVE 1.3860E+10 23-JUN-05
6 1 520399 31457280 1 NO ACTIVE 1.3860E+10 23-JUN-05
7 1 520400 104857600 1 NO ACTIVE 1.3860E+10 23-JUN-05
8 1 520401 104857600 1 NO ACTIVE 1.3860E+10 23-JUN-05
9 1 520402 104857600 1 NO ACTIVE 1.3861E+10 23-JUN-05
根因分析
- ARCH 進程異常或未啟動:
ARC = NO 顯示歸檔進程未將 ACTIVE 群組歸檔為 INACTIVE。
- 歸檔目的地空間不足/掛載失敗:導致 ARCH 寫入失敗、卡住。
- Checkpoint 未能推進:所有群組均被標記 ACTIVE,LGWR 無可覆寫群組,產生 Log Switch Hang,前景進程等待
log file switch (archiving needed) 事件。
- 群組數量雖多(9 組)但尺寸不均:前 6 組 30MB、後 3 組 100MB,切換頻率不一,管理複雜。
緊急處理步驟
- 檢查
alert.log 確認 ARCH 錯誤訊息(ORA-00257、ORA-16038 等)。
- 釋放歸檔目的地空間、修復網路掛載、重啟 ARCH:
ALTER SYSTEM ARCHIVE LOG START;
- 若歸檔模式非強制,可暫時關閉歸檔:
ALTER DATABASE NOARCHIVELOG;(需重啟實例),讓群組快速轉為 INACTIVE 恢復服務,事後再開啟歸檔並補備份。
- 強制 Checkpoint:
ALTER SYSTEM CHECKPOINT; 推進检查点,釋放群組。
長效優化建議
- 統一 Redo Log 群組大小(建議 512MB~1GB 視負載),群組數 4~6 組即足,避免過多小群組增加管理負擔。
- 啟用
LOG_ARCHIVE_MAX_PROCESSES 多 ARCH 進程並行歸檔。
- 監控
V$ARCHIVE_DEST_STATUS、V$ARCHIVED_LOG 確保歸檔無滯後。
- 升級至受支援版本(8.1.5 早已停止支援),修復已知 Redo/Archive 相關 Bug。