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

深度解析 Oracle 資料庫核心後台進程架構與運作機制

     編輯:Oracle 資料庫基礎

Oracle 後台進程核心架構總覽

Oracle 資料庫的高效運作仰賴一組協同工作的後台進程,各司其職地管理記憶體、處理 I/O、保障資料一致性與支援高可用性。本文將系統性剖析 DBWR、LGWR、CKPT、SMON、PMON、RECO、ARCH、LCKn 以及 Dnnn 等關鍵進程的功能定位、觸發條件與協作邏輯,助您建立完整的內核認知框架。

DBWR(Database Writer)—— 緩衝區寫入守門員

核心職責

DBWR 專責將系統全域區 (SGA) 中的「髒緩衝區」寫入資料檔,維持緩衝區快取的可用性。當使用者進程修改資料塊時,該塊即標記為「髒」;DBWR 的任務便是定期將這些髒塊刷回磁碟,釋放乾淨緩衝區供後續讀取使用。

觸發寫入的四大機制

  • 髒緩衝區佇列臨界值觸發:當伺服器進程將髒緩衝區移入 LRUW 佇列達到臨界長度(由 DB_BLOCK_WRITE_BATCH 參數一半決定)時,通知 DBWR 寫入。
  • LRU 掃描失敗觸發:使用者進程在 LRU 列表掃描 DB_BLOCK_MAX_SCAN_CNT 個緩衝區仍找不到可用緩衝區時,喚醒 DBWR。
  • 三秒超時機制:DBWR 每 3 秒自動檢查一次,掃描雙倍 DB_BLOCK_WRITE_BATCH 數量的緩衝區,將發現的髒塊寫入磁碟。
  • 檢查點 (Checkpoint) 觸發:LGWR 在檢查點發生時通知 DBWR 將指定修改緩衝區寫入磁碟,確保恢復點一致性。

多 DBWR 進程支援

在支援非同步 I/O 的平台上,可透過 DB_WRITERS 參數配置多個 DBWR 進程,分別將資料寫入不同磁碟裝置,提升 I/O 並行度。

LGWR(Log Writer)—— 重做日誌持久化引擎

核心職責

LGWR 負責將重做日誌緩衝區的內容同步寫入線上重做日誌檔組,是資料庫復原機制的基石。

四大寫入觸發條件

  1. 使用者提交交易時,立即寫入 Commit 記錄(快速提交機制)
  2. 每 3 秒定時刷新
  3. 日誌緩衝區達到 1/3 滿時
  4. DBWR 寫入修改緩衝區前(Write-Ahead Logging 協議)

鏡像日誌組與容錯

LGWR 同步寫入活動鏡像日誌組的所有成員;若某成員損壞或不可用,LGWR 仍可繼續寫入其餘成員,保障日誌寫入不中斷。

CKPT(Checkpoint)—— 檢查點協調者

CKPT 在檢查點發生時更新所有資料檔標頭的檢查點資訊。正常情況下由 LGWR 兼任;僅當檢查點操作明顯拖慢系統效能(通常因資料檔過多)時,才啟用獨立 CKPT 進程(CHECKPOINT_PROCESS=TRUE)。注意:CKPT 不直接寫入資料塊,實際寫入仍由 DBWR 執行。

SMON(System Monitor)—— 系統級恢復與清理專家

  • 執行實例啟動時的崩潰恢復
  • 清理不再使用的臨時段
  • RAC 環境下執行失敗實例的恢復
  • 定期喚醒檢查,或由其他進程喚醒處理

PMON(Process Monitor)—— 使用者進程守護者

  • 使用者進程異常終止時執行進程恢復:回滾未提交交易、釋放鎖、清理 SGA 資源
  • 定期檢查調度器與共享伺服器進程狀態,自動重啟異常終止的進程

RECO(Recoverer)—— 分散式交易自動解決者

僅在啟用分散式交易(DISTRIBUTED_TRANSACTIONS > 0)時存在。自動連線至涉及懸而未決分散式交易的遠端資料庫,解決所有 in-doubt 交易,並從各資料庫的掛起交易表中移除已處理記錄。網路中斷時會按間隔自動重試連線。

ARCH(Archiver)—— 歸檔日誌管理者

僅在資料庫啟用 ARCHIVELOG 模式並設定自動歸檔時啟動。負責將填滿的線上重做日誌檔複製至指定歸檔目的地,支援時間點恢復 (PITR) 與 Data Guard 部署。

LCKn(Lock Process)—— RAC 全域鎖管理

RAC 環境專用,最多 10 個進程 (LCK0~LCK9),管理實例間的全域資源鎖定,確保跨實例資料一致性。

Dnnn(Dispatcher)—— 共享伺服器架構核心

支援多執行緒伺服器 (MTS) 架構,讓多個使用者進程共享有限的伺服器進程。每種網路協定至少需一個調度進程;DBA 可依作業系統連線數限制動態調整調度進程數量。網路監聽器負責將用戶連線導向調度進程或專用伺服器進程。

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