Oracle 架構包含「執行個體」(Instance) 與「資料庫」(Database) 兩大核心概念。執行個體 = SGA + 背景進程;資料庫 = 物理檔案集合。本文系統解析 SGA 內部結構、五大核心背景進程職責、物理檔案類型與邏輯儲存結構對照,建立完整架構心智模型。
| 概念 | 組成 | 查詢方式 |
|---|---|---|
| Oracle 執行個體 | SGA (共享記憶體) + 背景進程 | SELECT * FROM v$instance; |
| Oracle 資料庫 | 資料檔、控制檔、Redo Log、參數檔、密碼檔 | SELECT * FROM v$datafile / v$controlfile / v$logfile; |
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)
V$LIBRARYCACHE.GETHITRATIO、V$ROWCACHE.GETMISS。| 進程 | 縮寫 | 核心職責 | 異常影響 |
|---|---|---|---|
| Process Monitor | PMON | 清理失敗使用者進程:釋放鎖、回滾交易、釋放 SGA 記憶體 | 交易無法回滾、鎖長期持有 |
| System Monitor | SMON | 執行個體復原 (開啟時應用 Redo)、合併臨時段、清理無用暫存段 | 啟動緩慢、臨時表空間碎片 |
| Database Writer | DBWn | 將 Dirty Buffer 寫入資料檔 (LRU/Checkpoint/Table Drop 觸發) | Checkpoint 完成慢、資料遺失風險 |
| Log Writer | LGWR | 將 Redo Log Buffer 寫入 Online Redo Log 檔案 | Commit 延遲、資料不一致 |
| Checkpoint | CKPT | 更新控制檔/資料檔標頭 Checkpoint SCN、觸發 DBW 寫入 | 復原時間不可控 |
其他常見進程:ARCH (歸檔模式下歸檔 Redo)、RECO (分散式交易復原)、MMON/MMNL (AWR/ASH 統計收集)、CJQ0 (Job Queue)、QMNn (Advanced Queuing)。
| 物理檔案 | 副檔名慣例 | 邏輯對應 | 備註 |
|---|---|---|---|
| 資料檔 | .dbf / .ora | 表空間 | 一檔屬一表空間,一表空間可多檔 |
| 控制檔 | .ctl | 資料庫物理結構元資料 | 多工建議 ≥ 3 份,不同磁碟 |
| 線上 Redo Log | .log | Redo Log Group | 多工組 (Member),循環覆寫 |
| 參數檔 | .ora / spfile | 執行個體參數 | SPFILE 可動態修改持久化 |
| 密碼檔 | .pwd | SYS/SYSDBA 遠端驗證 | orapwd 建立 |
表空間 → 段 → 區 → 區塊 Tablespace → Segment → Extent → Data Block
DB_BLOCK_SIZE 定義。使用者擁有的資料庫物件總稱 (表、視圖、索引、同義詞、序列、程序、套件等)。使用者 = 模式擁有者。
掌握 Instance/Database 雙重架構、SGA 組件運作機制、背景進程分工、物理邏輯對照,是進行效能調優、故障排查、架構設計的基石。