核心概念:實例 vs 數據庫
Oracle Database(數據庫) = 物理文件集合:數據文件、控制文件、重做日志、參數文件、口令文件、歸檔日志
Oracle Instance(實例) = 內存結構 + 後台進程
關鍵區別:數據庫是靜態持久化存儲,實例是動態運行實體。**一個數據庫可被多個實例掛載(RAC),一個實例同一時刻只能掛載一個數據庫。**
實例內存架構(SGA + PGA)
系統全局區域
SGA (System Global Area)
├── Shared Pool (共享池)
│ ├── Library Cache (庫緩存) - SQL/PLSQL 解析樹、執行計劃
│ └── Data Dictionary Cache (字典緩存) - 表/列/索引/用戶等元數據
├── Database Buffer Cache (數據庫緩存區) - 數據塊副本,LRU 算法管理
├── Redo Log Buffer (重做日志緩存) - 變更向量,順序寫入,提交時刷盤
├── Large Pool (大池) - 並行查詢、RMAN、共享服務器分配
├── Java Pool - Java 代碼/數據
├── Streams Pool - Streams 複製數據
└── In-Memory Area (12c+) - 列式內存存儲
程序全局區域
PGA (Program Global Area) - 每個服務器進程私有
├── Session Memory - 會話狀態、游標狀態
├── Sort Area - 排序操作內存(ORDER BY, GROUP BY)
├── Hash Area - 雜湊連接構建雜湊表
├── Bitmap Merge Area - 位圖索引合並
└── SQL Work Area - 執行計劃操作符工作區
關鍵參數與監控
| 組件 | 參數 | 動態調整 | 監控視圖 |
| Shared Pool | SHARED_POOL_SIZE | 是 | V$SGASTAT, V$LIBRARYCACHE |
| Buffer Cache | DB_CACHE_SIZE | 是 | V$BH, V$DB_CACHE_ADVICE |
| Redo Log Buffer | LOG_BUFFER | 否(需重啟) | V$SGASTAT |
| PGA 總量 | PGA_AGGREGATE_TARGET | 是 | V$PGASTAT, V$SQL_WORKAREA |
後台進程架構
核心必選進程
| 進程 | 全稱 | 核心職責 | 異常影響 |
| PMON | Process Monitor | 清理失敗進程資源、釋放鎖、回滾未提交事務、註冊服務 | 實例掛起,需重啟 |
| SMON | System Monitor | 實例恢復、臨時段清理、碎片合並、死事務回滾 | 啟動慢,臨時表空間耗盡 |
| DBWn | Database Writer | 將髒塊從 Buffer Cache 寫入數據文件(检查點、LRU 末端、表空間離線) | 緩存命中率降、檢查點不完整 |
| LGWR | Log Writer | 將 Redo Log Buffer 寫入在線重做日志文件(提交、1/3滿、1MB、每3秒、DBWn寫前) | 數據丟失風險、提交延遲 |
| CKPT | Checkpoint | 更新數據文件頭/控制文件檢查點 SCN,指導 DBWn 寫入範圍 | 恢復時間不可控 |
輔助進程
- ARCn:歸檔進程,將已填滿的在線日志複製到歸檔目標
- RECO:分布式事務恢復,解決雙階段提交失敗
- MMON/MMNL:自動工作負載儲存庫(AWR)收集、閾值告警
- SMCO:空間管理協調,段縮小、自動擴展
- VKTM:虛擬時間保持,高精度時間源
邏輯存儲層次
Tablespace (表空間) - 最大邏輯單位,屬於單一數據庫
│
├── Segment (段) - 對象存儲空間(表段、索引段、LOB段、回滾段、臨時段)
│ │
│ ├── Extent (區) - 連續塊集合,最小分配單位
│ │ │
│ │ └── Block (塊/頁) - Oracle I/O 最小單位(默認 8KB)
│ │
│ └── Freelist / Bitmap - 空閒空間管理
│
└── Datafile (數據文件) - 物理文件,一個表空間可含多個
塊大小選擇指南
| 塊大小 | 適用場景 | 權衡 |
| 2KB/4KB | OLTP 高並發、小行、隨機訪問 | 元數據開銷大,索引層次深 |
| 8KB (默認) | 通用、混合負載 | 平衡選擇 |
| 16KB/32KB | DSS/數倉、大行、順序掃描、LOB | 緩存利用率低,小行浪費空間 |
客戶端連接架構
用戶進程 → 網絡層 (TNS/TCP) → 監聽器 →
├── 專用服務器模式:每用戶一個服務器進程 (PGA 獨立)
└── 共享服務器模式:調度器 + 共享服務器池 (PGA 部分共享到 SGA)
關鍵文件職能速查
| 文件類型 | 作用 | 冗余建議 |
| Datafile | 存儲表/索引/LOB 等業務數據 | RAID 1/5/10 + ASM 正常/高冗余 |
| Controlfile | 記錄數據庫物理結構、檢查點、RMAN 元數據 | 至少 3 路鏡像,不同磁盤控制器 |
| Redo Log | 順序記錄所有變更,保障事務持久性 | 多組多成員,分離存儲 |
| Parameter File | 實例啟動參數 (SPFILE/PFILE) | SPFILE 放共享存儲/ASM |
| Password File | SYSOPER/SYSDBA 遠程認證 | Data Guard 環境必須同步 |
| Archived Log | 歷史重做日志,介質恢復/備份/DP 基石 | FRA 自動管理 + 異地傳輸 |
架構演進關鍵節點
- 8i:引入 PGA_AGGREGATE_TARGET 自動內存管理
- 9i:RAC、SGA 動態調整、自動 UNDO 管理
- 10g:ASM、ADDM/ASH/AWR、自動內存管理 (MEMORY_TARGET)
- 11g:結果緩存、自適應游標共享、In-Memory 奠基
- 12c:多租戶 (CDB/PDB)、In-Memory Column Store、JSON 支持
- 19c/21c:長期支持版、自治數據庫、區塊鏈表、原生機器學習