Windows 2003 + Oracle 9.2.0.8 環境,Data Guard 最大性能模式(ARCH 傳輸),主庫因遠程歸檔失敗反複掛起。告警日誌顯示 ORA-00270、ORA-16055,且 ARC 進程無法完成本地歸檔。Metalink 文檔確認:當 ARC 進程同時處理本地與遠程歸檔、且網絡較慢時,即使在最大性能模式下也會阻塞主庫歸檔。解決方案:設置隱含參數 _LOG_ARCHIVE_CALLOUT='LOCAL_FIRST=TRUE' 強制優先完成本地歸檔,再異步傳輸備庫。
ARC2: Begin FAL archive (thread 1 sequence 38840 destination standby)
ARC2: FAL archive, error 270 creating remote archivelog file 'standby'
ORA-00270: error creating archive log
ORA-16055: FAL request rejected
ARCH: FAL archive failed. Archiver continuing
...
ARC0: Unable to archive log 1 thread 1 sequence 38841
Log actively being archived by another process
現象:遠程歸檔失敗 → ARC 進程阻塞 → 本地歸檔無法推進 → Redo Log 循環寫滿 → 主庫掛起。
9i ARC 架構下,單一 ARC 進程串行處理「本地寫入」與「網絡傳輸」。若網絡抖動導致遠程寫入緩慢或超時,該進程被佔用,後續本地歸檔請求只能排隊或報錯「Log actively being archived by another process」。即使 LOG_ARCHIVE_DEST_2 設置 ASYNC 或最大性能模式,9i 仍無法完全解耦兩者。
-- 主庫執行(需以 SYSDBA)
ALTER SYSTEM SET "_LOG_ARCHIVE_CALLOUT"='LOCAL_FIRST=TRUE' SCOPE=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=6 SCOPE=BOTH;
_LOG_ARCHIVE_CALLOUT='LOCAL_FIRST=TRUE':指示 ARC 進程先完成本地歸檔寫入,再嘗試遠程傳輸,切斷阻塞鏈路。LOG_ARCHIVE_MAX_PROCESSES=6:增加 ARC 進程數,提升並發歸檔能力,進一步降低阻塞概率。注意:隱含參數需諮詢 Oracle Support 確認適用性,生產環境建議先在測試環境驗證。
ORA-270/ORA-16055,主庫不再掛起。COMPRESSION=ENABLE 減少傳輸量。V$ARCHIVE_DEST_STATUS、V$DATAGUARD_STATS,設置告警閾值。9i DG 最大性能模式下,遠程歸檔失敗仍可拖垮主庫,核心是 ARC 進程串行化處理本地與遠程寫入。_LOG_ARCHIVE_CALLOUT='LOCAL_FIRST=TRUE' 為經典臨時規避方案,長期治理應規劃版本升級與網絡優化。