Oracle 架構雖複雜,但遵循「實例 + 資料庫檔案」雙核心設計。理解 SGA/ PGA 記憶體結構、背景進程分工、邏輯/物理儲存層次,是效能調優、故障診斷、容量規劃的認知基石。本文以架構圖為骨架,深度解析各組件功能、交互關係與實戰關注點。

架構橫向劃分為兩大獨立又協作的區域:
兩者通過「讀寫資料檔、重做日誌檔、控制檔」進行持續交互。
SGA 是所有服務器進程共享的記憶體區,大小由 SGA_TARGET/SGA_MAX_SIZE 控制,核心三大組件:
| 組件 | 核心功能 | 效能關鍵指標 | 調優手段 |
|---|---|---|---|
| 資料緩衝區 (Database Buffer Cache) | 緩存從資料檔讀入的資料塊,避免重複物理讀取 | 緩衝區命中率 (>99%)、物理讀/邏輯讀比、熱點塊爭用 | 增大 DB_CACHE_SIZE、啟用 KEEP/RECYCLE 池、大表全掃描走直接路徑讀取 |
| 重做日誌緩衝區 (Redo Log Buffer) | 順序寫入重做記錄,批次刷盤,減少 LGWR I/O 調用 | 重做日誌緩衝區等待、LGWR 寫入延遲、Log File Switch 等待 | 增大 LOG_BUFFER (通常 1-100MB)、優化提交頻率、使用 NOLOGGING 操作 |
| 共享池 (Shared Pool) | 緩存 SQL/PLSQL 解析樹、執行計劃、資料字典、鎖結構 | 硬解析率、共享池命中率、ORA-04031 錯誤、Cursor 共享度 | 使用綁定變數、增大 SHARED_POOL_SIZE、啟用 Result Cache、適度設定 CURSOR_SHARING |
其他 SGA 組件:Large Pool (並行操作、備份/恢復、共享服務器 UGA)、Java Pool、Streams Pool、In-Memory Column Store (12c+)。
PGA_AGGREGATE_TARGET + WORKAREA_SIZE_POLICY=AUTOV$PGA_TARGET_ADVICE、V$SQL_WORKAREA_HISTOGRAM (單次/多次/超大排序分布)| 進程 | 簡稱 | 核心職責 | 異常信號 |
|---|---|---|---|
| Process Monitor | PMON | 清理失敗進程資源、釋放鎖、註冊服務到監聽器 | PMON 異常 → 例項掛起、連線風暴 |
| System Monitor | SMON | 啟動時例項恢復、臨時段釋放、碎片合併 (PCTINCREASE>0) | 啟動緩慢、臨時表空間耗盡 |
| Database Writer | DBWn | 將髒緩衝區寫入資料檔 (LRU/Checkpoint/快速啟動) | Checkpoint not complete、Free buffer waits |
| Log Writer | LGWR | 將重做日誌緩衝區順序寫入線上重做日誌檔 | Log file sync、Log file switch completion |
| Checkpoint | CKPT | 更新資料檔頭/控制檔檢查點資訊、觸發 DBWn 寫入 | Checkpoint 過頻/過疏影響恢復時間 |
| Archiver | ARCn | 歸檔模式下複製滿載重做日誌至歸檔目的地 | Archiver stuck、歸檔目的地空間滿 |
| Recoverer | RECO | 解決分散式事務失敗 (雙階段提交) | 分散式事務掛起 (IN-DOUBT) |
| Manageability Monitor | MMON/MMNL | AWR 快照收集、閾值告警、自動調優任務觸發 | AWR 數據缺失、告警不觸發 |
| 檔案類型 | 功能 | 關鍵管理點 |
|---|---|---|
| 資料檔 (Data File) | 儲存所有用戶/系統資料 (表、索引、LOB...) | 多路徑分佈、AUTOEXTEND/MAXSIZE、備份包含、離線/恢復操作 |
| 重做日誌檔 (Redo Log File) | 循環記錄所有變更,支援例項/介質恢復 | 多路徑多路複用、組員≥2、大小規劃 (切換頻率 vs 恢復時間)、歸檔模式 |
| 控制檔 (Control File) | 記錄資料庫物理結構 (檔案名、SCN、檢查點、RMAN 備份元數據) | 多路徑多路複用 (≥3)、定期備份、CONTROL_FILES 參數、損壞需重建 |
| 參數檔 (PFILE/SPFILE) | 啟動配置 (記憶體、進程、路徑、特性開關...) | SPFILE 優先、修改持久化、備份至異地、CREATE PFILE FROM SPFILE |
| 口令檔 (Password File) | 認證 SYSDBA/SYSOPER 遠程連線啟動/關閉權限 | REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE/SHARED、定期同步備份 |
Oracle 架構不是死記硬背的知識點,而是 DBA 解決問題的「思維地圖」。當你能在腦海中流暢運行「SQL 從發送到返回經過哪些組件?」、「備份恢復依賴哪些檔案?」、「效能瓶頸對應哪個進程/記憶體區?」時,你就真正擁有了架構視角。請將這張架構圖印在腦海裡,它是通往 Oracle 專家之路的必經關卡。