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

Oracle 執行個體架構解析:SGA、背景進程與資料庫物理檔案完整對照

     編輯:Oracle 資料庫基礎

Oracle 架構包含「執行個體」(Instance) 與「資料庫」(Database) 兩大核心概念。執行個體 = SGA + 背景進程;資料庫 = 物理檔案集合。本文系統解析 SGA 內部結構、五大核心背景進程職責、物理檔案類型與邏輯儲存結構對照,建立完整架構心智模型。

核心定義

概念組成查詢方式
Oracle 執行個體SGA (共享記憶體) + 背景進程SELECT * FROM v$instance;
Oracle 資料庫資料檔、控制檔、Redo Log、參數檔、密碼檔SELECT * FROM v$datafile / v$controlfile / v$logfile;

System Global Area (SGA) 詳細結構


SQL> SELECT * FROM v$sga;
NAME                    VALUE
Fixed Size              39,816
Variable Size           259,812,784   (Shared Pool + Large Pool + Java Pool + Streams Pool)
Database Buffers        1,048,576,000 (DB Buffer Cache)
Redo Buffers            327,680       (Redo Log Buffer)

四大核心組件

  1. 共用池:Library Cache (SQL/PLAN) + Data Dictionary Cache。
    關鍵指標:V$LIBRARYCACHE.GETHITRATIO、V$ROWCACHE.GETMISS。
    最佳化:使用綁定變數提高 Cursor 共用率、避免硬解析。
  2. 資料庫緩衝區快取:儲存從資料檔讀入的資料塊 (預設/Keep/Recycle 池)。
    管理演算法:LRU (Least Recently Used) + Dirty List (需 DBWR 寫回)。
    32-bit 上限 1.7GB、64-bit 上限 10GB (未啟用間接緩衝區時)。
  3. Redo Log Buffer:循環緩衝區,記錄所有變更 (DML/DDL)。
    LGWR 觸發寫入條件:Commit、1/3 滿、3MB、每 3 秒、Checkpoint。
    大小通常 1~10MB,超過 3MB 效益遞減。
  4. 大型池 / Java 池 / Streams 池:特定功能專用 (共用伺服器、備份、JVM、Streams)。

五大核心背景進程

進程縮寫核心職責異常影響
Process MonitorPMON清理失敗使用者進程:釋放鎖、回滾交易、釋放 SGA 記憶體交易無法回滾、鎖長期持有
System MonitorSMON執行個體復原 (開啟時應用 Redo)、合併臨時段、清理無用暫存段啟動緩慢、臨時表空間碎片
Database WriterDBWn將 Dirty Buffer 寫入資料檔 (LRU/Checkpoint/Table Drop 觸發)Checkpoint 完成慢、資料遺失風險
Log WriterLGWR將 Redo Log Buffer 寫入 Online Redo Log 檔案Commit 延遲、資料不一致
CheckpointCKPT更新控制檔/資料檔標頭 Checkpoint SCN、觸發 DBW 寫入復原時間不可控

其他常見進程:ARCH (歸檔模式下歸檔 Redo)、RECO (分散式交易復原)、MMON/MMNL (AWR/ASH 統計收集)、CJQ0 (Job Queue)、QMNn (Advanced Queuing)。

物理檔案 vs 邏輯結構對照

物理檔案副檔名慣例邏輯對應備註
資料檔.dbf / .ora表空間一檔屬一表空間,一表空間可多檔
控制檔.ctl資料庫物理結構元資料多工建議 ≥ 3 份,不同磁碟
線上 Redo Log.logRedo Log Group多工組 (Member),循環覆寫
參數檔.ora / spfile執行個體參數SPFILE 可動態修改持久化
密碼檔.pwdSYS/SYSDBA 遠端驗證orapwd 建立

邏輯儲存層級

表空間 → 段 → 區 → 區塊
Tablespace → Segment → Extent → Data Block
  • 表空間:最大邏輯單位 (SYSTEM, SYSAUX, USERS, UNDO, TEMP 等)。
  • 段:資料段、索引段、回滾段、臨時段。
  • 區:空間配置最小單位,連續區塊組成。
  • 區塊:IO 存取最小單位 (2K~64K),DB_BLOCK_SIZE 定義。

模式

使用者擁有的資料庫物件總稱 (表、視圖、索引、同義詞、序列、程序、套件等)。使用者 = 模式擁有者。

掌握 Instance/Database 雙重架構、SGA 組件運作機制、背景進程分工、物理邏輯對照,是進行效能調優、故障排查、架構設計的基石。

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