首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 核心後台進程 SMON 與 ARCH 深度解析

     編輯:Oracle 資料庫基礎

前言

Oracle 實例擁有多個後台進程,其中 SMON (System Monitor) 與 ARCH (Archiver) 雖屬「小角色」,卻對資料完整性、效能穩定性影響深遠。本文系統整理兩者職責、關鍵參數與調優策略,助 DBA 掌握核心運作細節。

一、SMON:碎片整理與執行個體恢復的守護者

核心職責

  1. 空間碎片合併:定期掃描字典管理表空間,將相鄰空閒區段合併,減少延伸區碎片,提升空間分配效率。
  2. 執行個體恢復:非正常關閉後重啟時,自動讀取線上重做日誌,執行「前滾」與「回滾」,確保交易一致性。
  3. 臨時段釋放:清理因異常終止而殘留的臨時段。

關鍵參數:PCTINCREASE

字典管理表空間的 PCTINCREASE 直接影響 SMON 整理行為:

  • PCTINCREASE = 0:SMON 不會 自動合併該表空間碎片,DBA 必須手動 ALTER TABLESPACE ... COALESCE 或匯出/匯入重組。
  • PCTINCREASE > 0:SMON 依排程自動合併碎片。

建議:除非特殊需求(如精確控制延伸區大小),否則勿設為 0。局部管理表空間 (LMT) 已透過位圖自動管理空間,不受此參數影響。

啟動時機

  • 實例啟動時自動啟動(執行個體恢復)。
  • 運行期間定期喚醒檢查工作(預設約 5 分鐘一次,可透過事件 10013 調整)。
  • DBA 可手動觸發:EXEC DBMS_SYSTEM.KSDWRT(1, 'SMON');(需謹慎)。

二、ARCH:重做日誌歸檔的核心執行者

運作模式

  • 歸檔模式 (ARCHIVELOG):LGWR 切換日誌組前,必須等待 ARCH 將舊日誌複製到歸檔目的地,才能覆寫。保證時間點恢復能力。
  • 非歸檔模式 (NOARCHIVELOG):日誌組循環覆寫,無歸檔動作,無法執行時間點恢復。

效能影響與優化策略

1. 增加 ARCH 進程數量

  • 參數 LOG_ARCHIVE_MAX_PROCESSES (1~30,預設 1,9i 最高 10)。
  • 高負載時 LGWR 會自動啟動額外 ARCH 進程(最多 10 個)。
  • 手動設定 >1 可預先啟動多進程,避免切換等待。
  • 注意:ARCH 進程數不受 CPU 核心數限制,與 DBWR 不同。

2. 增大重做日誌檔案

較大的日誌檔 → 切換頻率降低 → ARCH 啟動間隔拉長 → 系統暫停機率降低。建議根據尖峰產生日誌量,規劃單組日誌可支撐 15~30 分鐘。

3. 大量資料載入時的暫時調整

  • 使用 NOLOGGING 操作(如 CREATE TABLE ... NOLOGGING, INSERT /*+ APPEND */)減少重做產生。
  • 或暫時增加日誌檔大小/數量,延長切換間隔。
  • 載入完成後恢復正常設定並立即執行完整備份。

總結對照表

進程核心職責關鍵參數調優重點
SMON碎片合併、執行個體恢復、臨時段清理PCTINCREASE (字典管理表空間)避免設 0;改用 LMT 自動管理空間
ARCH重做日誌歸檔,支援時間點恢復LOG_ARCHIVE_MAX_PROCESSES、日誌檔大小多進程並行、適度增大日誌檔、大量載入暫用 NOLOGGING

結語

SMON 與 ARCH 雖不如 DBWR、LGWR 顯眼,卻是資料安全與效能穩定的基石。DBA 應熟悉其運作細節,配合參數調整與操作策略,讓資料庫在高負載與異常情境下依然穩健運行。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved