背景進程兩大分類
| 分類 | 特徵 | 代表進程 |
| 核心進程 | 資料庫運行不可或缺,啟動實例必存在 | 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 下為單進程多線程。
核心進程職責速查
| 進程 | 全名 | 核心職責 |
| PMON | Process Monitor | 清理異常終止進程:釋放鎖、回滾交易、釋放 SGA 資源、重新註冊 Listener |
| SMON | System Monitor | 執行執行個體恢復 (Instance Recovery)、整理臨時段、合併字典管理表空間自由空間 |
| DBWn | Database Writer | 將緩衝區髒塊寫入資料檔 (LRU、Checkpoint、Tablespace Offline 觸發),可多進程 DBW0-DBW9, DBWa-DBWj |
| LGWR | Log Writer | 將 Redo Log Buffer 寫入線上重做日誌檔組 (Commit、1/3 Full、3MB、Timeout 觸發) |
| CKPT | Checkpoint | 更新控制檔與資料檔標頭的 Checkpoint SCN,觸發 DBWn 寫入,縮短恢復時間 |
| ARCn | Archiver | ARCHIVELOG 模式下,將填滿的線上日誌複製至歸檔目的地 (ARC0-ARC9, ARCa-ARCt) |
| RECO | Recoverer | 解決分散式交易 In-Doubt 狀態,自動連接遠端資料庫 Commit/Rollback |
| MMAN | Memory Manager | ASMM (SGA_TARGET) 動態調整 SGA 組件大小 (Shared Pool, Buffer Cache, Java Pool, Large Pool) |
| MMON | Manageability Monitor | AWR 快照擷取、自動 SQL 調優、空間預警、效能基線維護 |
| MMNL | Manageability 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 允許叢集多節點同時以讀寫模式掛載同一資料庫,目標:高可用性 (節點故障不中斷服務) + 水平擴展 (增加廉價節點而非垂直升級)。
| 進程 | 全名 | 職責 |
| LMON | Lock Monitor | 監控叢集節點健康、偵測節點失效、恢復失效節點持有的全域鎖、動態重配置資源 |
| LMD | Lock Manager Daemon | 全域緩存服務 (GCS) 鎖管理代理,處理資源請求佇列、全域死鎖偵測、鎖超時監控 |
| LMSn | Lock Manager Server | 緩存融合核心:節點間透過高速互聯進行塊緩存一致性交換 (Cache Fusion),取代舊版 Ping 磁碟刷新,最多 10 個 |
| LCK0 | Lock Process | 處理非緩存塊的全域資源請求 (Library Cache、行鎖等) |
| DIAG | Diagnosability Daemon | 監控實例整體健康狀態,擷取失效診斷資訊 (僅 RAC) |
四、ASM 相關進程
| 進程 | 全名 | 職責 |
| ASMB | ASM Background | 資料庫實例與 ASM 實例通訊、提供統計資訊、發送心跳 |
| RBAL | Rebalance | ASM 磁碟組增減磁碟時,處理再平衡請求 (負載重新分佈) |
五、其他工具進程
- 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 檢視線程