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

Oracle 數據庫體系架構核心解析:實例與數據庫文件雙重視角

     編輯:Oracle 資料庫基礎

前言

Oracle 架構以「實例 + 數據庫文件」雙重結構著稱。本文從內存結構、後台進程、邏輯/物理存儲結構三個維度,系統梳理核心組件與交互關係,構建完整架構心智模型。

一、實例—— 內存與進程的動態集合

實例 = SGA (System Global Area) + 後台進程。是數據庫運行時的「心臟」。

1. SGA 核心組件

2. 關鍵後台進程

組件功能關鍵參數
數據緩沖區緩存數據塊,減少物理讀DB_CACHE_SIZE, DB_nK_CACHE_SIZE
日志緩沖區緩存 Redo 條目,批量寫入 Redo LogLOG_BUFFER
共享池緩存 SQL/PLSQL 解析樹、執行計劃、數據字典SHARED_POOL_SIZE
大池RMAN、共享服務器、並行查詢分配LARGE_POOL_SIZE
Java 池Java 代碼/數據JAVA_POOL_SIZE
Streams 池Streams 復制STREAMS_POOL_SIZE

二、數據庫文件—— 靜態持久化存儲

1. 邏輯結構(由大到小)

Tablespace (表空間) ──→ Segment (段) ──→ Extent (區) ──→ Block (塊/頁)
  • 表空間:邏輯存儲單元,由一或多個數據文件組成(如 SYSTEM, SYSAUX, USERS, UNDO, TEMP)。
  • 段:同一類型對象的空間集合(表段、索引段、回滾段、臨時段)。
  • 區:連續塊的集合,空間分配單位(初始/下一區大小由存儲參數控制)。
  • 塊:最小 I/O 單位(通常 8KB),創建數據庫時指定 DB_BLOCK_SIZE,不可變。

2. 物理文件

進程職責
DBWn將髒塊從緩沖區寫入數據文件
LGWR將 Redo Log Buffer 寫入 Online Redo Log 文件
CKPT定期更新數據文件頭/控制文件檢查點信息
SMON實例恢復、臨時段釋放、合併連續空閒區
PMON清理失敗進程、釋放鎖、進程恢復
ARCn歸檔模式下複製 Redo Log 至歸檔目標
RECO解決分佈式事務失敗
MMON/MMNL自動工作負載儲存庫 (AWR) 統計收集

三、實例與數據庫文件的交互

  1. 啟動:讀取 SPFILE → 分配 SGA、啟動進程 → 掛載控制文件 → 打開數據文件/Redo Log。
  2. 讀取:Server Process 檢查 Buffer Cache → 未命中則從數據文件讀塊入 Cache。
  3. 修改:生成 Redo 入 Log Buffer → LGWR 寫 Redo Log → DBWn 延遲寫數據文件。
  4. 提交:LGWR 強制刷新 Redo Log Buffer(Commit 完成標誌)。
  5. 檢查點:CKPT 觸發 DBWn 寫髒塊,更新控制文件/數據文件頭 SCN。

總結

「實例」是動態運行環境,「數據庫」是靜態文件集合。理解 SGA 組件分工、後台進程協作、邏輯/物理存儲層級映射,是性能調優、故障診斷、備份恢復的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
文件類型作用關鍵點
數據文件存儲用戶數據、字典、Undo 等屬於某表空間,可自動擴展
控制文件記錄數據庫物理結構(文件名、檢查點、Redo 信息)多路鏡像,損壞導致掛起
Online Redo Log循環記錄所有變更,支撐實例恢復組/成員多路鏡像,LGWR 循環寫入
歸檔日志Redo Log 歸檔副本,支撐介質恢復/備份啟用 ARCHIVELOG 模式後生成
參數文件 (SPFILE/PFILE)實例啟動配置SPFILE 二進制可動態修改,PFILE 文本
口令文件認證 SYSDBA/SYSOPER 權限orapwd 創建,REMOTE_LOGIN_PASSWORDFILE