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

Oracle 背景進程全景圖:核心進程 (PMON/SMON/DBWn/LGWR...) 與工具進程 (Job Queue/AQ/ASMM/RAC) 完整分類詳解

     編輯:Oracle 資料庫基礎

背景進程兩大分類

分類特徵代表進程
核心進程資料庫運行不可或缺,啟動實例必存在PMON, SMON, DBWn, LGWR, CKPT, ARCn, RECO, MMON, MMNL, MMAN
工具進程可選,啟用特定功能時才出現CJQ0/Jnnn, QMNC/Qnnn, EMNn, CTWR, RVWR, RAC 專用進程

一、核心背景進程

查詢當前運行進程

SELECT PADDR, NAME, DESCRIPTION FROM V$BGPROCESS ORDER BY PADDR DESC;

PADDR 非 0 表示該進程正在運行。

進程命名規則 (UNIX/Linux)

ORA_<進程代號>_
例:ORA_PMON_ORCL, ORA_DBW0_ORCL, ORA_LGWR_ORCL

所有進程實為同一二進制檔 ORACLE,啟動時建立別名以利識別。Windows 下為單進程多線程。

核心進程職責速查

進程全名核心職責
PMONProcess Monitor清理異常終止進程:釋放鎖、回滾交易、釋放 SGA 資源、重新註冊 Listener
SMONSystem Monitor執行執行個體恢復 (Instance Recovery)、整理臨時段、合併字典管理表空間自由空間
DBWnDatabase Writer將緩衝區髒塊寫入資料檔 (LRU、Checkpoint、Tablespace Offline 觸發),可多進程 DBW0-DBW9, DBWa-DBWj
LGWRLog Writer將 Redo Log Buffer 寫入線上重做日誌檔組 (Commit、1/3 Full、3MB、Timeout 觸發)
CKPTCheckpoint更新控制檔與資料檔標頭的 Checkpoint SCN,觸發 DBWn 寫入,縮短恢復時間
ARCnArchiverARCHIVELOG 模式下,將填滿的線上日誌複製至歸檔目的地 (ARC0-ARC9, ARCa-ARCt)
RECORecoverer解決分散式交易 In-Doubt 狀態,自動連接遠端資料庫 Commit/Rollback
MMANMemory ManagerASMM (SGA_TARGET) 動態調整 SGA 組件大小 (Shared Pool, Buffer Cache, Java Pool, Large Pool)
MMONManageability MonitorAWR 快照擷取、自動 SQL 調優、空間預警、效能基線維護
MMNLManageability Monitor Lite將 SGA 統計資料定期刷新至 AWR 表 (輕量級)

二、工具背景進程

1. CJQ0 / Jnnn:Job Queue (DBMS_JOB / DBMS_SCHEDULER)

  • CJQ0 (Job Queue Coordinator):定期掃描 Job 表,啟動 Jnnn 執行到期作業
  • Jnnn (J000-J999):實際執行 Job 的從屬進程,做完即退出,動態來去
  • 參數:JOB_QUEUE_PROCESSES (最大 1000)
  • 用途:物化視圖刷新、自定義排程作業 (發郵件、批次處理)

2. QMNC / Qnnn / EMNn:Advanced Queuing (AQ)

  • QMNC (Queue Monitor Coordinator):監控 AQ 隊列,通知出隊進程有新訊息
  • Qnnn (Q000-Q009):持久進程,處理訊息傳播 (Propagation)、出隊通知
  • EMNn (Event Monitor):非同步通知隊列訂閱者 (OCI Callback)
  • 參數:AQ_TM_PROCESSES (0-10),0 即停用

3. CTWR:Change Tracking Writer (10g 新增)

  • 維護區塊級變更追蹤檔,支援 RMAN 增量備份優化 (BLOCK CHANGE TRACKING)

4. RVWR:Recovery Writer (10g 新增)

  • 維護閃回恢復區區塊「前像」,支援 FLASHBACK DATABASE

三、RAC 專用進程 (Real Application Clusters)

RAC 允許叢集多節點同時以讀寫模式掛載同一資料庫,目標:高可用性 (節點故障不中斷服務) + 水平擴展 (增加廉價節點而非垂直升級)。

進程全名職責
LMONLock Monitor監控叢集節點健康、偵測節點失效、恢復失效節點持有的全域鎖、動態重配置資源
LMDLock Manager Daemon全域緩存服務 (GCS) 鎖管理代理,處理資源請求佇列、全域死鎖偵測、鎖超時監控
LMSnLock Manager Server緩存融合核心:節點間透過高速互聯進行塊緩存一致性交換 (Cache Fusion),取代舊版 Ping 磁碟刷新,最多 10 個
LCK0Lock Process處理非緩存塊的全域資源請求 (Library Cache、行鎖等)
DIAGDiagnosability Daemon監控實例整體健康狀態,擷取失效診斷資訊 (僅 RAC)

四、ASM 相關進程

進程全名職責
ASMBASM Background資料庫實例與 ASM 實例通訊、提供統計資訊、發送心跳
RBALRebalanceASM 磁碟組增減磁碟時,處理再平衡請求 (負載重新分佈)

五、其他工具進程

  • Data Guard:NSAn (Network Server), NSSn (Network Slave) - Redo 傳輸與應用
  • Data Pump:DWnn (Data Pump Worker) - 並行導入導出
  • Streams:CAPn (Capture), APSn (Apply) - 變更擷取與應用

總結

  • 核心進程 (PMON/SMON/DBWn/LGWR/CKPT/ARCn/RECO) 是資料庫心跳,必須熟知觸發條件與職責
  • 10g/11g 新增 MMAN/MMON/MMNL/CTWR/RVWR 實現自動化管理與閃回技術
  • 工具進程 (Job Queue, AQ) 按需啟用,參數控制最大併發度
  • RAC 進程 (LMON/LMD/LMSn/LCK0) 實現 Cache Fusion,是叢集高效能關鍵
  • UNIX 下 ps -ef | grep ora_ 可清晰識別各進程;Windows 下需用 Process Explorer 檢視線程
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved