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

Oracle 後台進程核心功能深度解析:DBWR、LGWR、CKPT、SMON、PMON、RECO、ARCH、LCKn、Dnnn

     編輯:Oracle 資料庫基礎

前言:實例架構的心跳與血脈

Oracle 實例由 SGA (共享記憶體) 與一組後台進程構成。每個進程承擔特定職責,協同完成資料持久化、崩潰恢復、並發控制、分布式事務等核心能力。本文逐一解析九大關鍵進程的觸發條件、工作流程與配置參數。

1. DBWR (Database Writer) — 髒緩衝區刷盤守護者

核心任務:將 Buffer Cache 中被修改的「髒緩衝區」寫入資料檔,維持緩衝區可用空間。

觸發寫入的五大場景

  1. 髒緩衝區佇列達臨界長度:達到 DB_BLOCK_WRITE_BATCH 參數值一半時,服務進程通知 DBWR。
  2. LRU 掃描失敗:服務進程掃描 DB_BLOCK_MAX_SCAN_CNT 個緩衝區仍找不到可用塊,通知 DBWR。
  3. 定時喚醒:每 3 秒自動檢查並寫入發現的髒塊 (掃描數量 = 參數值 2 倍)。
  4. 檢查點:CKPT/LGWR 通知 DBWR 將指定修改塊強制落盤。
  5. 表空間離線/唯讀/截斷/備份開始 等 DDL 操作前。

多 DBWR 配置:DB_WRITERS 參數控制進程數 (支援多磁碟並行寫入)。採 LRU 演算法保持熱點資料在記憶體,最小化 I/O。

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

核心任務:將 Redo Log Buffer 內容同步寫入線上重做日誌檔組 (多路鏡像)。

四大觸發條件

  1. 用戶提交事務 — 寫入 Commit 記錄 (Fast Commit 機制)
  2. 每 3 秒
  3. Redo Log Buffer 使用達 1/3
  4. DBWR 寫入髒塊前 (Write-Ahead Logging 協議)

採循環緩衝區設計,LGWR 高速寫入確保空間常備可用。注意:提交前可能預寫日誌項,僅在提交後永久生效。SCN (System Change Number) 賦予提交時刻,支援並行恢復同步。

3. CKPT (Checkpoint) — 同步協調者

正常情況下 LGWR 執行檢查點更新控制檔/資料檔標頭。若檢查點導致效能下降 (大量資料檔),啟用 CHECKPOINT_PROCESS=TRUE 獨立 CKPT 進程分擔標頭更新工作,DBWR 仍負責實際寫塊。

4. SMON (System Monitor) — 啟動恢復與空間整理

  • 實例恢復:啟動時前滾 Redo Log、回滾未提交事務 (含 RAC 環境下失敗節點恢復)
  • 空間合併:每 3 秒合併自由區塊 (Coalesce)
  • 臨時段清理:釋放不再使用的臨時段

5. PMON (Process Monitor) — 失敗進程清道夫

  • 回滾異常終止用戶進程的事務
  • 釋放鎖、移除活動進程表記錄、釋放 PGA 資源
  • 監控 Dispatcher/Shared Server 進程健康,自動重啟意外終止者

6. RECO (Recoverer) — 分布式事務自動修復

僅在 DISTRIBUTED_TRANSACTIONS > 0 時存在。定期連接掛起分布式事務的遠端節點,自動解決 in-doubt 事務,清理懸掛事務表。遠端不可用時按間隔重試。

7. ARCH (Archiver) — 歸檔守護者

僅在 ARCHIVELOG 模式且啟用自動歸檔時啟動。將填滿的線上重做日誌組複製至歸檔目的地,支援時間點恢復 (PITR) 與 Data Guard 同步。

8. LCKn (Lock Process) — RAC 實例間鎖協調

最多 10 個進程 (LCK0-LCK9),僅在 Parallel Server/RAC 環境下運作,處理跨實例的全域資源鎖 (Global Enqueue Service)。

9. Dnnn (Dispatcher) — 共享伺服器連接多工器

允許大量用戶進程共享少量 Shared Server 進程,減少 PGA 總佔用。每種網路協議至少一個 Dispatcher。網路接收器接收連線請求,分派給 Dispatcher 或建立專用伺服器連線。需 SQL*Net v2+。

總結對照表

進程核心職責關鍵參數/備註
DBWR髒塊刷盤、緩衝區管理DB_WRITERS, DB_BLOCK_WRITE_BATCH
LGWRRedo 同步寫入、SCN 生成LOG_BUFFER, Fast Commit
CKPT檢查點標頭更新分擔CHECKPOINT_PROCESS
SMON實例恢復、空間合併、臨時段清理自動喚醒
PMON進程失敗清理、鎖釋放、Dispatcher 重啟定期喚醒
RECO分布式 in-doubt 事務解決DISTRIBUTED_TRANSACTIONS
ARCH線上日誌歸檔LOG_ARCHIVE_START, 歸檔模式
LCKnRAC 全域鎖協調最多 10 個
Dnnn共享伺服器連接多工MTS/Shared Server 架構
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved