理解 Oracle 進程模型是效能調優與故障診斷的基石。本文梳理單/多進程架構、用戶/伺服器/背景進程分工與關鍵背景進程職責。
| 類別 | 進程 | 職責 |
|---|---|---|
| 前台 | 用戶進程 | 執行應用程式(SQL*Plus、Pro*C、JDBC 驅動等) |
| 伺服器進程 | 解析/執行 SQL、讀取資料塊至 SGA、回傳結果 | |
| 背景 | DBWR | 將「髒」緩衝區寫回資料檔,管理 LRU 列表 |
| LGWR | 將 Redo Log Buffer 寫入線上 Redo Log 檔 | |
| CKPT | 檢查點:通知 DBWR 寫髒塊、更新控制檔/資料檔標頭 | |
| SMON | 執行執行個體復原、合併自由空間、清理臨時段 | |
| PMON | 清理失敗用戶進程資源、釋放鎖、重註冊 Listener | |
| ARCH | 封存模式下將線上 Redo Log 複製至封存目的地 | |
| RECO | 解決分散式交易失敗(雙階段提交) | |
| LCKn | RAC 環境下的全域鎖管理 | |
| Dnnn / Snnn | 共享伺服器模式下的調度器與共享伺服器進程 |
DB_BLOCK_WRITE_BATCH / 2)。DB_BLOCK_MAX_SCAN_CNT 未找到可用緩衝區。每次寫入區塊數由 DB_BLOCK_WRITE_BATCH 決定;若髒列表不足則從 LRU 尾端補齊。
新讀入區塊放入 LRU 中點,而非 MRU 端。僅被重複存取的區塊才會升至熱區,避免大量一次性掃描沖刷熱資料。