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

Oracle 進程架構與背景進程詳解:從用戶進程到 DBWR/LGWR/CKPT

     編輯:Oracle 資料庫基礎

理解 Oracle 進程模型是效能調優與故障診斷的基石。本文梳理單/多進程架構、用戶/伺服器/背景進程分工與關鍵背景進程職責。

實例模式

  • 單進程:用戶程式與 Oracle 核心同一進程(如 MS-DOS 版),單用戶。
  • 多進程:每個連線一個用戶進程,配對專用/共享伺服器進程,背景進程協同工作。

進程分類

類別進程職責
前台用戶進程執行應用程式(SQL*Plus、Pro*C、JDBC 驅動等)
伺服器進程解析/執行 SQL、讀取資料塊至 SGA、回傳結果
背景DBWR將「髒」緩衝區寫回資料檔,管理 LRU 列表
LGWR將 Redo Log Buffer 寫入線上 Redo Log 檔
CKPT檢查點:通知 DBWR 寫髒塊、更新控制檔/資料檔標頭
SMON執行執行個體復原、合併自由空間、清理臨時段
PMON清理失敗用戶進程資源、釋放鎖、重註冊 Listener
ARCH封存模式下將線上 Redo Log 複製至封存目的地
RECO解決分散式交易失敗(雙階段提交)
LCKnRAC 環境下的全域鎖管理
Dnnn / Snnn共享伺服器模式下的調度器與共享伺服器進程

DBWR 寫入觸發條件

  1. 髒緩衝區列表達臨界長度(DB_BLOCK_WRITE_BATCH / 2)。
  2. 伺服器進程掃描 LRU 達 DB_BLOCK_MAX_SCAN_CNT 未找到可用緩衝區。
  3. 每 3 秒逾時喚醒。
  4. 檢查點(CKPT)通知。

每次寫入區塊數由 DB_BLOCK_WRITE_BATCH 決定;若髒列表不足則從 LRU 尾端補齊。

LRU 與中點插入策略(8i+)

新讀入區塊放入 LRU 中點,而非 MRU 端。僅被重複存取的區塊才會升至熱區,避免大量一次性掃描沖刷熱資料。

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