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

Oracle 資料庫體系架構全景圖解:實例、記憶體、進程、邏輯與物理結構深度解析

     編輯:Oracle 資料庫基礎

前言:架構圖是 DBA 腦中的「導航儀」

Oracle 架構雖複雜,但遵循「實例 + 資料庫檔案」雙核心設計。理解 SGA/ PGA 記憶體結構、背景進程分工、邏輯/物理儲存層次,是效能調優、故障診斷、容量規劃的認知基石。本文以架構圖為骨架,深度解析各組件功能、交互關係與實戰關注點。

一、整體架構:雙核心模型

Oracle 架構總體圖

架構橫向劃分為兩大獨立又協作的區域:

  • 實例:記憶體結構 + 背景進程,是資料庫的「大腦與神經」,決定運行時行為與效能
  • 資料庫檔案:作業系統層面的物理檔案集合,是資料的「骨骼與血肉」,決定持久化與可恢復性

兩者通過「讀寫資料檔、重做日誌檔、控制檔」進行持續交互。

二、實例深度剖析:記憶體與進程

1. 系統全局區 (SGA) — 共享記憶體心臟

SGA 是所有服務器進程共享的記憶體區,大小由 SGA_TARGET/SGA_MAX_SIZE 控制,核心三大組件:

組件核心功能效能關鍵指標調優手段
資料緩衝區
(Database Buffer Cache)
緩存從資料檔讀入的資料塊,避免重複物理讀取緩衝區命中率 (>99%)、物理讀/邏輯讀比、熱點塊爭用增大 DB_CACHE_SIZE、啟用 KEEP/RECYCLE 池、大表全掃描走直接路徑讀取
重做日誌緩衝區
(Redo Log Buffer)
順序寫入重做記錄,批次刷盤,減少 LGWR I/O 調用重做日誌緩衝區等待、LGWR 寫入延遲、Log File Switch 等待增大 LOG_BUFFER (通常 1-100MB)、優化提交頻率、使用 NOLOGGING 操作
共享池
(Shared Pool)
緩存 SQL/PLSQL 解析樹、執行計劃、資料字典、鎖結構硬解析率、共享池命中率、ORA-04031 錯誤、Cursor 共享度使用綁定變數、增大 SHARED_POOL_SIZE、啟用 Result Cache、適度設定 CURSOR_SHARING

其他 SGA 組件:Large Pool (並行操作、備份/恢復、共享服務器 UGA)、Java Pool、Streams Pool、In-Memory Column Store (12c+)。

2. 程序全局區 (PGA) — 專用記憶體工作區

  • 每個服務器進程專有,包含排序區、雜湊區、位圖合併區、游標狀態
  • 自動管理模式:PGA_AGGREGATE_TARGET + WORKAREA_SIZE_POLICY=AUTO
  • 關鍵指標:V$PGA_TARGET_ADVICE、V$SQL_WORKAREA_HISTOGRAM (單次/多次/超大排序分布)

3. 背景進程矩陣 — 分工協作的「幕後團隊」

三、邏輯儲存結構:從表空間到資料塊

邏輯結構是資料庫內部的空間組織體系,獨立於物理檔案位置:

  1. 表空間:最高層邏輯容器,由 1 個或多個資料檔組成,對應業務域 (USERS, SYSAUX, UNDO, TEMP, INDEX_TS...)
  2. 段:表空間中特定類型物件佔用的空間集合 (表段、索引段、UNDO 段、臨時段、LOB 段)
  3. 區:段擴展的基本單位,由連續資料塊組成,預留連續空間減少碎片 (預設 1MB/8MB/64MB 等)
  4. 塊:最小 I/O 單位,建庫時由 DB_BLOCK_SIZE 定義 (4K/8K/16K/32K),決定單次 I/O 讀寫粒度

關鍵關係:表空間 ⊃ 段 ⊃ 區 ⊃ 塊。段跨越檔案但區不跨檔案。

四、物理儲存結構:作業系統可見的檔案族群

進程簡稱核心職責異常信號
Process MonitorPMON清理失敗進程資源、釋放鎖、註冊服務到監聽器PMON 異常 → 例項掛起、連線風暴
System MonitorSMON啟動時例項恢復、臨時段釋放、碎片合併 (PCTINCREASE>0)啟動緩慢、臨時表空間耗盡
Database WriterDBWn將髒緩衝區寫入資料檔 (LRU/Checkpoint/快速啟動)Checkpoint not complete、Free buffer waits
Log WriterLGWR將重做日誌緩衝區順序寫入線上重做日誌檔Log file sync、Log file switch completion
CheckpointCKPT更新資料檔頭/控制檔檢查點資訊、觸發 DBWn 寫入Checkpoint 過頻/過疏影響恢復時間
ArchiverARCn歸檔模式下複製滿載重做日誌至歸檔目的地Archiver stuck、歸檔目的地空間滿
RecovererRECO解決分散式事務失敗 (雙階段提交)分散式事務掛起 (IN-DOUBT)
Manageability MonitorMMON/MMNLAWR 快照收集、閾值告警、自動調優任務觸發AWR 數據缺失、告警不觸發
檔案類型功能關鍵管理點
資料檔 (Data File)儲存所有用戶/系統資料 (表、索引、LOB...)多路徑分佈、AUTOEXTEND/MAXSIZE、備份包含、離線/恢復操作
重做日誌檔 (Redo Log File)循環記錄所有變更,支援例項/介質恢復多路徑多路複用、組員≥2、大小規劃 (切換頻率 vs 恢復時間)、歸檔模式
控制檔 (Control File)記錄資料庫物理結構 (檔案名、SCN、檢查點、RMAN 備份元數據)多路徑多路複用 (≥3)、定期備份、CONTROL_FILES 參數、損壞需重建
參數檔 (PFILE/SPFILE)啟動配置 (記憶體、進程、路徑、特性開關...)SPFILE 優先、修改持久化、備份至異地、CREATE PFILE FROM SPFILE
口令檔 (Password File)認證 SYSDBA/SYSOPER 遠程連線啟動/關閉權限REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE/SHARED、定期同步備份

五、架構交互關鍵路徑:讀寫流程一覽

  1. 查詢路徑:Server Process → SGA (Buffer Cache 命中? → 回傳 / Miss → 物理讀 Data File → 填充 Buffer Cache → 回傳)
  2. 修改路徑:Server Process → SGA (Buffer Cache 修改 → 標記髒塊) → Redo Log Buffer 記錄 Redo Entry → Commit → LGWR 刷盤 Redo Log File → 回傳成功 → DBWn 延遲寫入 Data File
  3. 檢查點/歸檔路徑:CKPT 觸發 → DBWn 寫入髒塊 → CKPT 更新檔案頭/控制檔 → ARCn 複製滿載 Redo Log → 歸檔目的地

六、實戰架構視角的決策指南

  • 🔧 效能調優:從等待事件反推架構組件 (Log file sync → LGWR/Redo Log Buffer/Redo Log File; db file scattered read → Buffer Cache/DBWn/Data File/ASM)
  • 💾 備份恢復:架構決定策略 (控制檔多路徑 → 單點失效風險為 0; 歸檔模式 → 時間點恢復能力; 重做日誌多路徑 → 介質恢復零遺失)
  • 📈 容量規劃:邏輯結構增長趨勢 (段/區/塊) → 物理檔案擴展/AUTOEXTEND → 磁碟陣列/ASM 磁碟組擴容
  • 🏗️ 架構演進:單機 → RAC (多實例共享存儲) → Data Guard (主備同步) → Sharding (水平分片) → 雲原生 (自治/Serverless),每層演進都在架構圖上可視化

總結

Oracle 架構不是死記硬背的知識點,而是 DBA 解決問題的「思維地圖」。當你能在腦海中流暢運行「SQL 從發送到返回經過哪些組件?」、「備份恢復依賴哪些檔案?」、「效能瓶頸對應哪個進程/記憶體區?」時,你就真正擁有了架構視角。請將這張架構圖印在腦海裡,它是通往 Oracle 專家之路的必經關卡。

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