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

Oracle 體系架構全景圖:內部邏輯結構、SGA/PGA/背景進程、外部物理檔案三大範疇

     編輯:Oracle 資料庫基礎

掌握 Oracle 體系架構,是從「會用」進階到「懂原理、能調優、會排錯」的分水嶺。本文依官方架構劃分為三大範疇——內部邏輯結構 (Schema/邏輯對象)、記憶體與進程結構 (SGA/PGA/背景進程)、外部物理檔案結構,系統梳理核心組件、參數、運作機制,構建完整心智模型。

一、內部邏輯結構 —— Oracle Schema (邏輯層)

資料的邏輯表現,獨立於物理存儲。核心對象:

  • 表、欄位、約束、資料型別 (含 ADT)
  • 分區/子分區
  • 用戶/Schema
  • 索引、叢集、雜湊叢集
  • 視圖、序列
  • 程序、函數、包、觸發器
  • 同義詞、權限/角色
  • 資料庫連結
  • 段、區、塊 (邏輯儲存單元)
  • 回滾段 / Undo
  • 快照 / 物化視圖

關鍵: 邏輯對象透過 Data Dictionary 定義,SQL 操作針對邏輯層,物理層由核心透明映射。

二、記憶體與進程結構 —— Instance 核心

1. SGA (System Global Area) —— 共享記憶體心臟

核心組件 (init.ora 參數):

組件功能關鍵參數管理算法
Database Buffer Cache緩存資料塊 (表、索引、叢集)DB_BLOCK_BUFFERS / DB_CACHE_SIZELRU (最近最少使用)
Dictionary Cache緩存 Data Dictionary (用戶、檔案、段、權限...)SHARED_POOL_SIZE (共用池一部分)LRU
Redo Log Buffer暫存 Redo Entry,批次寫入 Redo Log FileLOG_BUFFER循環緩衝
Shared Pool (SQL 共用池)Library Cache (SQL 解析樹、執行計畫) + Dictionary CacheSHARED_POOL_SIZELRU
Large Pool大型操作 (RMAN、共享伺服器、Parallel Query) 專用,避免衝擊 Shared PoolLARGE_POOL_SIZE堆管理
Java PoolJava 程式碼解析/執行JAVA_POOL_SIZE (預設 10MB)堆管理
Multiple Buffer PoolsDEFAULT / KEEP / RECYCLE 池隔離熱/冷資料BUFFER_POOL_KEEP / RECYCLE各自 LRU

關鍵機制: LRU 淘汰、Dirty Buffer 由 DBWn 寫入磁碟、Redo 由 LGWR 循環寫入、Shared Pool 解析樹共用降低 Hard Parse。

2. PGA (Program Global Area) —— 專用記憶體

每個 Server Process 專屬,不可共享。包含:排序區、雜湊區、Bitmap Merge 區、Session 資訊、游標狀態。
參數: PGA_AGGREGATE_TARGET (11g+ 由 MEMORY_TARGET 統管)、SORT_AREA_SIZE (舊版)。

3. 背景進程 —— 自動化守護者

進程職責關鍵參數/特徵
SMONInstance 恢復 (前滾)、清理臨時段、合併自由區 (PCTINCREASE>0)啟動時自動執行
PMON清理失敗用戶進程、釋放鎖、註冊 Listener定期喚醒檢查
DBWn (DBW0-DBW9)將 Dirty Buffer 批次寫入資料檔DB_WRITER_PROCESSES、DBWR_IO_SLAVES
LGWR將 Redo Log Buffer 循環寫入 Online Redo Log FileLGWR_IO_SLAVES (舊版)
CKPT觸發 DBWn 寫入、更新資料檔頭/控制檔 SCN (檢查點)CHECKPOINT_PROCESS=TRUE、LOG_CHECKPOINT_INTERVAL/TIMEOUT
ARCn歸檔模式下複製填滿 Redo Log 到歸檔目的地LOG_ARCHIVE_DEST_n、ARCH_IO_SLAVES
RECO解決分散式交易疑慮 (In-doubt)DISTRIBUTED_TRANSACTIONS > 0
SNPn (Job Queue)物化視圖刷新、排程 Job 執行JOB_QUEUE_PROCESSES
LCKnRAC 實例間鎖管理 (GC)GC_LCK_PROCS
Dnnn (Dispatcher)共享伺服器架構,多工連線MTS/DISPATCHERS 參數
Snnn (Shared Server)共享伺服器處理請求SHARED_SERVERS
Pnnn (Parallel Query)並行查詢/ DML/ DDL 工作進程PARALLEL_MIN/MAX_SERVERS

追蹤檔: 每進程一追蹤檔,位於 BACKGROUND_DUMP_DEST (通常 $ORACLE_BASE/admin//bdump),故障診斷金鑰。警告日誌 (alert_.log) 記錄關鍵事件,建議每日歸檔重命名。

三、外部物理檔案結構 —— 持久化基石

1. Online Redo Log Files

  • 循環寫入,至少 2 組 (Group),每組多 Member (鏡像)。
  • LGWR 循環覆寫;歸檔模式下 ARCn 備份後才可覆寫。
  • 支援多路徑鏡像 (硬體/OS/資料庫層)。

2. Control Files

  • 記錄資料庫物理結構 (資料檔、Redo Log、檢查點 SCN、RMAN 備份元數據...)。
  • 多路徑多工 (Control File Multiplexing),CONTROL_FILES 參數指定。
  • 損壞可用 CREATE CONTROLFILE 重建 (需知所有檔路徑)。

3. Trace Files & Alert Log

  • 背景進程追蹤檔 + 用戶進程追蹤檔 (USER_DUMP_DEST)。
  • Alert Log:每日重命名 (alert__YYYYMMDD.log) 便於歷史追溯。

架構運作閃念圖

用戶請求
   │
   ▼
Listener (監聽) → Dispatcher / Dedicated Server Process
   │
   ▼
Server Process (PGA) ──▶ SGA (Buffer Cache / Shared Pool / Redo Log Buffer)
   │                           │                    │
   │                    SQL 解析/執行計畫           │
   │                           │                    │
   ▼                           ▼                    ▼
資料塊讀取/修改          Library Cache        Redo Entry 生成
   │                           │                    │
   ▼                           ▼                    ▼
DBWn 寫入資料檔         共用 Cursor          LGWR 寫入 Redo Log
   │                                               │
   ▼                                               ▼
Checkpoint (CKPT) 更新檔頭 SCN              ARCn 歸檔 (歸檔模式)
   │
   ▼
SMON Instance 恢復 (前滾/回滾)

結語

Oracle 架構是精密的齒輪組:邏輯層定義「什麼」,記憶體/進程層實現「怎麼跑」,物理層保證「不丟、可復原」。唯有將三層關係、核心參數、背景進程職責、檔案角色內化為直覺,才能在效能風暴、故障現場、架構演進中,從容掌舵。

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