Oracle 體系由物理檔案、邏輯結構、記憶體架構、背景進程、實例概念、SCN 機制六大支柱構成。本文系統梳理各支柱核心組件、職責邊界、交互關係,建立完整的架構心智模型,作為效能調優、故障診斷、架構設計的理論基石。
| 檔案類型 | 功能 | 關鍵特性 |
| 控制檔 | 資料庫身分證:名稱/DBID/建立時間/資料檔/日誌檔路徑/檢查點資訊 | 至少 1 個,建議多路複寫 (CONTROL_FILES) 分散不同磁碟 |
| 資料檔 | 實際儲存表/索引/LOB 等段資料 | 屬於單一表空間,可自動擴展/手動調整大小 |
| 重做日誌檔 | 記錄所有變更 (Redo Entry),支援崩潰恢復/介質恢復/備份 | 組 循環寫入,至少 2 組,建議多成員鏡像 |
| 參數檔 | 實例啟動配置 (PFILE 文字/SPFILE 二進位) | 記憶體大小、進程上限、優化器模式等 |
| 歸檔日誌檔 | 已填滿 Redo Log 的離線副本 | 啟用 ARCHIVELOG 模式產生,支援時間點恢復 (PITR) |
| 密碼檔 | 儲存 SYSDBA/SYSOPER 使用者雜湊,支援遠端管理認證 | ORAPWD 建立,RAC/Data Guard 需同步 |
二、邏輯結構 (資料庫內部組織)
資料庫
└─ 表空間
└─ 段
└─ 區
└─ 塊 (最小 I/O 單位,預設 8KB)
| 層級 | 說明 | 關鍵點 |
| 表空間 | 邏輯容器,群組相關段 | 永久/暫時/UNDO,本地/字典管理,自動/手動區分配 |
| 段 | 物件儲存空間 (表段/索引段/LOB段/暫時段/回滾段) | 跨資料檔非連續,由區組成 |
| 區 | 連續塊集合,空間分配單位 | 大小由表空間區管理策略決定 |
| 塊 | 最小讀寫單位,對應 OS 區塊整數倍 | DB_BLOCK_SIZE 建庫時固定,含頁頭/行目錄/行資料/自由空間 |
三、記憶體架構 (SGA + PGA)
| 區域 | 核心組件 | 共享性 | 生命週期 |
| SGA (System Global Area) | Shared Pool / Buffer Cache / Redo Log Buffer / Large Pool / Java Pool / Streams Pool / In-Memory Area | 所有進程共享 | 實例啟動分配,關閉釋放 |
| PGA (Program Global Area) | 排序區 / 雜湊區 / 位圖合併區 / 會話資訊 / 游標狀態 | 專用進程私有 | 進程建立分配,終止釋放 |
關鍵交互:Server Process 讀資料檔 → Buffer Cache (SGA) → 傳回用戶;修改 → Redo Log Buffer (SGA) → LGWR 寫 Redo Log;DBWn 定期將髒塊寫回資料檔。
四、背景進程 (守護實例運行)
| 進程 | 職責 | 觸發/頻率 |
| DBWn (Database Writer) | 將髒塊從 Buffer Cache 寫回資料檔 | 檢查點/滿載/定時/表空間離線 |
| LGWR (Log Writer) | 將 Redo Log Buffer 寫入線上 Redo Log | Commit/1/3 滿/每 3 秒/切換日誌組 |
| CKPT (Checkpoint) | 更新控制檔/資料檔頁頭檢查點資訊 | 日誌切換/時間間隔/手動 |
| SMON (System Monitor) | 執行個體恢復/臨時段清理/合併連續自由空間 | 啟動時/定期/空間壓力 |
| PMON (Process Monitor) | 清理失敗進程資源/釋放鎖/重新註冊 Listener | 進程異常終止時 |
| ARCn (Archiver) | 將已滿 Redo Log 組歸檔 | 日誌切換時 (ARCHIVELOG 模式) |
| RECO (Recoverer) | 解決分散式交易失敗 | 定期輪詢 |
| MMON/MMNL | AWR 快照/閾值告警/統計收集 | 定期/事件驅動 |
五、Oracle 實例
定義:SGA 記憶體結構 + 背景進程集合 = 實例
關鍵特性:
- 一個實例一次只能掛載/開啟一個資料庫
- RAC:多實例 (多節點) 共享同一資料庫 (共享儲存)
- 啟動階段:NOMOUNT (僅實例) → MOUNT (掛載控制檔) → OPEN (開啟資料檔/日誌檔)
六、SCN (System Change Number)
| 屬性 | 說明 |
| 本質 | 單調遞增的邏輯時鐘,標識資料庫版本 |
| 生成 | 每次 Commit、檢查點、日誌切換、DDL 等遞增 |
| 用途 | 一致性讀 (查詢見到 ≤ 查詢 SCN 的版本)、恢復基準 (從 SCN 向前應用 Redo)、分散式交易協調、閃回查詢 |
| 查看 | SELECT current_scn FROM v$database; / DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER |
架構交互全景流程
用戶 SQL
↓
Server Process (PGA 解析/優化/執行計劃)
↓
Shared Pool (Library Cache: 共享游標/執行計劃; Dictionary Cache: 物件定義)
↓
Buffer Cache (SGA) ←── DBWn ──→ Datafiles
↓ ↑
Redo Log Buffer (SGA) ←── LGWR ──→ Redo Log Files
↓ ↑
ARCn → Archived Logs
↓
Commit → LGWR 強制寫入 Redo Log (SCN 推進) → CKPT 更新檢查點
↓
查詢一致性:構建 CR 區塊 (Undo + 當前塊) → 返回滿足 SCN 的版本
內化此六維架構模型,將零散知識點掛載至對應支柱,即可在面對效能瓶頸、故障現象、架構決策時,快速定位根因層級、推導影響範圍、制定精準對策。
- 上一篇文章: Oracle 入門學習路徑指南:體系結構、定位選擇、科學方法與資源地圖
- 下一篇文章: Oracle DBA 成長階梯:從 SQL 基礎到架構師的五階學習路徑與實戰清單
Copyright ©
程式碼之家 All Rights Reserved