Oracle 資料庫的高效運作仰賴一組協同工作的後台進程,各司其職地管理記憶體、處理 I/O、保障資料一致性與支援高可用性。本文將系統性剖析 DBWR、LGWR、CKPT、SMON、PMON、RECO、ARCH、LCKn 以及 Dnnn 等關鍵進程的功能定位、觸發條件與協作邏輯,助您建立完整的內核認知框架。
DBWR 專責將系統全域區 (SGA) 中的「髒緩衝區」寫入資料檔,維持緩衝區快取的可用性。當使用者進程修改資料塊時,該塊即標記為「髒」;DBWR 的任務便是定期將這些髒塊刷回磁碟,釋放乾淨緩衝區供後續讀取使用。
DB_BLOCK_WRITE_BATCH 參數一半決定)時,通知 DBWR 寫入。DB_BLOCK_MAX_SCAN_CNT 個緩衝區仍找不到可用緩衝區時,喚醒 DBWR。DB_BLOCK_WRITE_BATCH 數量的緩衝區,將發現的髒塊寫入磁碟。在支援非同步 I/O 的平台上,可透過 DB_WRITERS 參數配置多個 DBWR 進程,分別將資料寫入不同磁碟裝置,提升 I/O 並行度。
LGWR 負責將重做日誌緩衝區的內容同步寫入線上重做日誌檔組,是資料庫復原機制的基石。
LGWR 同步寫入活動鏡像日誌組的所有成員;若某成員損壞或不可用,LGWR 仍可繼續寫入其餘成員,保障日誌寫入不中斷。
CKPT 在檢查點發生時更新所有資料檔標頭的檢查點資訊。正常情況下由 LGWR 兼任;僅當檢查點操作明顯拖慢系統效能(通常因資料檔過多)時,才啟用獨立 CKPT 進程(CHECKPOINT_PROCESS=TRUE)。注意:CKPT 不直接寫入資料塊,實際寫入仍由 DBWR 執行。
僅在啟用分散式交易(DISTRIBUTED_TRANSACTIONS > 0)時存在。自動連線至涉及懸而未決分散式交易的遠端資料庫,解決所有 in-doubt 交易,並從各資料庫的掛起交易表中移除已處理記錄。網路中斷時會按間隔自動重試連線。
僅在資料庫啟用 ARCHIVELOG 模式並設定自動歸檔時啟動。負責將填滿的線上重做日誌檔複製至指定歸檔目的地,支援時間點恢復 (PITR) 與 Data Guard 部署。
RAC 環境專用,最多 10 個進程 (LCK0~LCK9),管理實例間的全域資源鎖定,確保跨實例資料一致性。
支援多執行緒伺服器 (MTS) 架構,讓多個使用者進程共享有限的伺服器進程。每種網路協定至少需一個調度進程;DBA 可依作業系統連線數限制動態調整調度進程數量。網路監聽器負責將用戶連線導向調度進程或專用伺服器進程。