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

Oracle 資料庫系統架構總體圖解析

     編輯:Oracle 資料庫基礎

Oracle 資料庫系統架構:實例與資料庫檔案的完整圖解

Oracle 架構分為兩大核心部分:記憶體結構 + 背景程序 = 實例 (Instance),以及 作業系統層面的實體檔案 = 資料庫。實例啟動後掛載並開啟資料庫,提供服務。

一、 實例架構 (Instance = SGA + 背景程序)

SGA (System Global Area,系統全域區) 是共享記憶體核心,包含三大關鍵組件:

  1. 資料庫緩衝區快取 (Database Buffer Cache):
    儲存從磁碟讀入的資料塊。
    → 避免重複物理 I/O,提升查詢速度。
    包含預設、保留 (KEEP)、回收 (RECYCLE) 三大池。
  2. 重做日誌緩衝區 (Redo Log Buffer):
    暫存 DML (INSERT/UPDATE/DELETE) 產生的重做項目。
    → 批次寫入磁碟,提升寫入效能。
    觸發寫入條件:每 3 秒、滿 1MB 或 1/3、使用者 COMMIT、檢查點 (CKPT)。
  3. 共用池 (Shared Pool):
    儲存 SQL/PLSQL 執行計畫、剖析樹、資料字典快取。
    → 避免重複硬剖析,大幅降低 CPU、提升並發。
    包含函式庫快取、資料字典快取、伺服器結果快取 (11g+)。

其他 SGA 組件:大型池、Java 池、串流池、固定 SGA (管理指標)。

關鍵背景程序:

  • DBWn (Database Writer):將髒緩衝區寫入資料檔。
  • LGWR (Log Writer):將重做日誌緩衝區寫入線上重做日誌檔。
  • CKPT (Checkpoint):觸發檢查點,更新資料檔標頭、控制檔 SCN。
  • SMON (System Monitor):執行執行個體恢復、合併自由空間、清理臨時段。
  • PMON (Process Monitor):清理失敗程序資源、釋放鎖、重啟失敗的調度程序/共用伺服器。
  • ARCn (Archiver):封存模式下將線上重做日誌複製至封存目的地。
  • RECO (Recoverer):解決分散式交易失敗。
  • CJQ0 (Job Queue Coordinator)、QMNn (Queue Monitor) 等。

二、 資料庫邏輯結構 (Logical Structure)

  1. 表空間:邏輯儲存單位,由一或多個資料檔組成。
    預設:SYSTEM、SYSAUX、UNDO、TEMP、USERS。
  2. 段:表空間中儲存特定類型資料的空間 (表段、索引段、UNDO 段、臨時段)。
  3. 區塊:段的空間配置單位,由連續區組成。
    目的:一次配置較大空間,減少碎片。
  4. 區:最小儲存單位,建立資料庫時指定大小 (2K/4K/8K/16K/32K)。
    Oracle 所有 I/O 以區為單位。

三、 資料庫實體結構 (Physical Files)

  1. 資料檔:實際儲存資料 (表、索引等)。屬於某表空間。
  2. 線上重做日誌檔:循環記錄所有資料變更,供執行個體/媒體恢復。至少 2 組多工。
  3. 控制檔:記錄資料庫實體結構 (資料檔/日誌檔路徑、SCN、檢查點資訊、RMAN 備份資訊)。多工至少 2 份。
  4. 參數檔:SPFILE (二進位、伺服器端、可動態修改) 或 PFILE (文字、客戶端)。啟動時讀取配置 SGA 大小等參數。
  5. 密碼檔:儲存 SYSDBA/SYSOPER 使用者雜湊,允許遠端啟動/關閉資料庫。

架構圖關鍵流向

  1. 使用者連線 → 專用/共用伺服器程序 → PGA (私有記憶體)。
  2. SQL 剖析 → Shared Pool 檢查快取 → 未命中則硬剖析 → 產生執行計畫存入 Library Cache。
  3. 執行計畫存取資料 → Buffer Cache 檢查 → 未命中 → DBWn 從資料檔讀入區塊。
  4. DML 修改 → 產生 Redo 存入 Redo Log Buffer → LGWR 寫入 Online Redo Log → Commit 確認。
  5. DBWn 定期/檢查點將髒區塊寫回資料檔。
  6. ARCH 模式下 ARCn 將填滿的 Redo Log 複製為 Archived Redo Log。

理解此架構是 SQL 調優、備份恢復、故障診斷、容量規劃的基石。建議配合官方文件 Oracle Database Concepts 深入研讀。

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