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

Oracle 資料庫架構深度解析:Instance 與 Database 兩大核心、SGA 三大組件、邏輯與物理結構完整圖譜

     編輯:Oracle 資料庫基礎

為何 Oracle 架構複雜?

核心目標:極致節省記憶體、最大化併發效能。架構在整體上劃分為兩大獨立部分:Instance (記憶體+背景程序) 與 Database (物理檔案),兩者 1:N 關係 (RAC 下一資料庫多 Instance)。

一、Instance (實例) — Oracle 的心臟

Instance = SGA (System Global Area) + 背景程序。SGA 為所有 Server Process 共享,包含三大核心組件:

SGA 組件功能效能關鍵
資料緩衝區 (Database Buffer Cache)快取資料塊,避免重複讀取磁碟命中率 > 95% 為佳;DB_CACHE_SIZE、DB_KEEP_CACHE_SIZE、DB_RECYCLE_CACHE_SIZE
重做日誌緩衝區 (Redo Log Buffer)暫存變更向量,批次寫入 Redo Log File減少磁碟 I/O 等待;LOG_BUFFER、COMMIT_WRITE (10g+)
共用池 (Shared Pool)快取 SQL/PLSQL 執行計劃、資料字典、鎖結構硬解析率 < 1%;SHARED_POOL_SIZE、CURSOR_SHARING、RESULT_CACHE (11g+)

其他 SGA 組件:Large Pool (並行/備份/共用伺服器)、Java Pool、Streams Pool、In-Memory Column Store (12c+)。

關鍵背景程序

  • DBWn:將髒塊從 Buffer Cache 寫入資料檔
  • LGWR:將 Redo Log Buffer 寫入線上 Redo Log (關鍵:Commit 觸發)
  • CKPT:更新控制檔與資料檔檢查點資訊
  • SMON:Instance 恢復、暫存段清理、合併空閒區塊
  • PMON:清理失敗 Process 資源、重註冊 Listener
  • ARCn:歸檔 Redo Log (Archive 模式)
  • RECO:分散式交易恢復
  • MMAN/MMON/MMLT:自動記憶體管理、AWR 快照、自動調優

二、Database (資料庫檔案) — 由作業系統檔案組成

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

  1. 表空間:邏輯儲存單位,由一或多個資料檔組成 (SYSTEM, SYSAUX, USERS, TEMP, UNDO...)
  2. 段:特定類型物件佔用的空間集合 (表段、索引段、UNDO 段、暫存段);由多個區組成
  3. 區:連續區塊集合,為段一次性預留較大空間 (預設 1MB/8MB,視 AUTOALLOCATE/UNIFORM)
  4. 塊:最小儲存單位,建庫時指定 (標準 8KB,可 2K/4K/16K/32K);DB_BLOCK_SIZE

2. 物理結構 (OS 層面檔案)

檔案類型功能關鍵參數/特性
資料檔 (Data File)儲存實際資料 (表、索引、LOB...)AUTOEXTEND、MAXSIZE、OMF
重做日誌檔 (Redo Log File)循序記錄所有變更,支援 Instance/媒體恢復多路徑多重 (Multiplex)、Group/Member、切換觸發歸檔
控制檔 (Control File)記錄資料庫實體結構 (檔案名、SCN、Checkpoint、RMAN 中繼資料)多路徑多重、CONTROL_FILES、CONTROL_FILE_RECORD_KEEP_TIME
初始化參數檔 (PFILE/SPFILE)Instance 啟動配置 (記憶體、程序、儲存、網路...)SPFILE 為二進位、支援動態修改、CREATE SPFILE FROM PFILE
口令檔 (Password File)認證 SYSDBA/SYSOPER/ SYSBACKUP/SYSDG/SYSKM 權限遠端啟動關閉REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE、ORAPWD 建立

Instance 與 Database 互動流程 (以 UPDATE 為例)

  1. Server Process 讀取資料塊至 Buffer Cache (若不在)
  2. 產生 Redo Vector 寫入 Redo Log Buffer
  3. 修改 Buffer Cache 中資料塊 (產生髒塊)
  4. Commit → LGWR 將 Redo Log Buffer 同步寫入線上 Redo Log (SCN 推進)
  5. DBWn 依 Checkpoint/髒塊閾值/時間 將髒塊寫入資料檔
  6. CKPT 更新控制檔與資料檔 Header Checkpoint SCN

架構演進補充 (12c/19c)

  • 多租戶 (CDB/PDB):一 Instance 管理多個可攜式資料庫 (PDB),共享 SGA/背景程序,隔離資料/使用者。
  • In-Memory Column Store:SGA 新增行列混合儲存區,加速分析查詢。
  • Sharding:水平分片架構,跨獨立資料庫分散資料,線性擴展。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved