掌握 Oracle 內部架構是效能調優、故障診斷、架構設計的基石。本文彙整五大核心架構圖解:邏輯/物理資料庫結構、SGA/PGA 記憶體結構、前景/背景進程架構、實例啟動階段與背景進程職責、資料庫緩衝區四狀態轉換機制。


| 區域 | 核心組件 | 功能 |
|---|---|---|
| SGA (共享) | Database Buffer Cache | 資料塊副本 (Dirty/Clean/Free) |
| Redo Log Buffer | Redo 向量,LGWR 寫入線上日誌 | |
| Shared Pool | Library Cache (SQL/PLAN)、Dictionary Cache、Result Cache | |
| Large Pool | 備份/還原、共享伺服器 UGA、平行執行訊息 | |
| Java Pool / Streams Pool | Java 物件、Streams 佇列 | |
| PGA (私有) | Sort Area | 排序、雜湊連接、位圖建立 |
| Hash Area | 雜湊連接建構 | |
| Session Info | 游標狀態、PL/SQL 執行上下文 |

| 類型 | 進程 | 職責 |
|---|---|---|
| 前景進程 | User Process | 客戶端工具 (sqlplus, JDBC, OCI) 發起請求 |
| Server Process | 處理 SQL 解析/執行/擷取,專用/共享模式 | |
| 背景進程 | DBWn (Database Writer) | 將 Dirty Buffer 寫入 Datafile (LRU/Checkpoint/Truncate 觸發) |
| LGWR (Log Writer) | 將 Redo Log Buffer 寫入線上日誌 (Commit/1/3MB/Timeout 觸發) | |
| CKPT (Checkpoint) | 更新 Datafile/Controlfile 標記檢查點位置,通知 DBWn | |
| SMON (System Monitor) | 執行個體恢復、臨時段清理、合併可用空間 | |
| PMON (Process Monitor) | 失敗進程清理、釋放鎖、釋放 SGA 資源、重新註冊 Listener | |
| ARCn (Archiver) | 線上日誌切換時複製至歸檔目的地 | |
| RECO (Recoverer) | 分散式事務自動解決 | |
| MMON/MMNL | 自動負載儲存庫 (AWR) 統計收集、閾值告警 |

關鍵背景進程職責 (同上表)

| 狀態 | 含義 | 可被淘汰 | 觸發條件 |
|---|---|---|---|
| Pinned (已連接) | 正被 Session 修改,防止併發寫入衝突 | 否 | DML 執行中 |
| Clean (乾淨) | 內容與磁碟同步,或為 CR 快照 | 是 (優先) | Commit 後、Checkpoint 後、Consistent Read 建構 |
| Free/Unused (空閒/未使用) | 實例啟動初期,或從未載入資料 | 是 | 實例啟動、縮減 SGA |
| Dirty (髒數據) | 內容已修改,未寫回磁碟 | 否 (需 DBWn 先寫入) | DML 修改後、尚未 Checkpoint |
淘汰演算法:LRU (Least Recently Used) + Touch Count,優先淘汰 Clean/Free,Dirty 必須先寫入才能淘汰。
這五大架構圖是 Oracle 內核知識體系的骨架,建議收藏並定期回顧,將抽象概念與具體調優動作 (如調整 DB_CACHE_SIZE、分析 V$BH 狀態、優化 Checkpoint 頻率) 建立強關聯。