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

Oracle 實例架構深度解析:進程結構與記憶體架構全景圖

     編輯:Oracle 資料庫基礎

進程架構

單進程 vs 多進程實例

  • 單進程:單一進程執行所有 Oracle 碼與用戶應用,如 MS-DOS 環境,僅支援單用戶。
  • 多進程:採用用戶進程 + Oracle 進程(Server Process + Background Processes)架構,支援高併發。

背景進程速查表

進程全稱核心職責
DBWRDatabase Writer將「髒」緩衝區寫入資料檔,依 LRU 演算法管理緩衝區,觸發條件:髒緩衝區達臨界值、LRU 掃描失敗、3 秒超時、Checkpoint 事件。
LGWRLog Writer同步寫入 Redo Log Buffer 至線上 Redo Log 群組。觸發:Commit、每 3 秒、Log Buffer 1/3 滿、DBWR 寫入資料檔前。
CKPTCheckpoint更新所有資料檔標頭的 Checkpoint 位置,分攤 LGWR 壓力。參數 CHECKPOINT_PROCESS 控制啟用。
SMONSystem Monitor執行例程恢復、清理臨時段、RAC 環境下協助故障實例恢復。
PMONProcess Monitor處理用戶進程失敗清理:釋放鎖、重置交易狀態、重啟異常 Dispatcher/Server 進程。
RECORecoverer自動解決分散式交易懸而未決狀態,需 DISTRIBUTED_TRANSACTIONS > 0。
ARCHArchiver將填滿的線上 Redo Log 複製至歸檔目的地,僅在 ARCHIVELOG 模式且啟用自動歸檔時存在。
LCKnLockRAC 環境下實例間鎖管理,最多 10 個 (LCK0-LCK9)。
Dnnn/SnnnDispatcher/Shared Server多執行緒伺服器架構核心,讓多用戶共享有限 Server Process,減少記憶體佔用。

記憶體架構

SGA(系統全域區)核心組件

  • 資料庫緩衝區快取:儲存資料塊,採 LRU 管理。
  • Redo Log Buffer:循環緩衝區,暫存 Redo Entry。
  • 共用池:Library Cache(SQL/PLAN)、Data Dictionary Cache 等。
  • Large Pool / Java Pool / Streams Pool:特定功能專用區域。

PGA(程序全域區)

專屬於單一 Server Process,包含堆疊空間、工作區(Sort/Hash/ Bitmap Merge)、Session 資訊。SORT_AREA_SIZE 限制排序區大小。

軟體碼區

唯讀,可共享。多用戶共用單一 Oracle 核心碼副本,降低記憶體壓力。

關鍵互動流程

  1. 用戶進程發送 SQL → Server Process 解析/執行。
  2. 資料塊不在 Buffer Cache → Server Process 從磁碟讀入。
  3. 修改產生 Redo Entry → Log Buffer → LGWR 寫入 Redo Log。
  4. Commit 時 LGWR 強制寫入 Redo Log(快速提交機制),賦予 SCN。
  5. DBWR 依 Checkpoint/LRU 將髒塊寫回資料檔。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved