學習 Oracle,先建立架構全景認知
掌握 Oracle 框架,才能高屋建瓴理解各組件交互。核心五大維度:
一、物理結構:磁碟上的實體檔案
| 檔案類型 | 屬性 | 核心功能 |
| 控制檔 | 資料庫檔案 | 維護完整性資訊:DB 名、表空間/資料檔/Redo Log 路徑、Checkpoint、Log Sequence、Archive 狀態 |
| 資料檔 | 儲存實際資料(字典、使用者資料、索引、暫存等),按類型分散不同磁碟提升效能 |
| 重做日誌檔 | 記錄所有變更,支援故障恢復,至少 2 組多路徑 |
| 追蹤/警示檔 | 背景進程事件記錄、資料庫訊息與錯誤同步記錄 |
| 參數檔 | 非資料庫檔案 | 實例配置:控制檔位置、SGA 大小、優化器模式等;指定控制檔與 Archive 目的地 |
| 密碼檔 | 認證 SYSDBA/SYSOPER 特權用戶 |
| 歸檔檔 | 資料庫檔案 | Redo Log 離線副本,媒體恢復必備 |
控制檔啟動流程
- 讀取參數檔獲取控制檔路徑
- 開啟控制檔
- 從控制檔讀取資料檔清單並逐一開啟
二、邏輯結構:儲存層次
表空間 ← 一組資料檔的邏輯集合
↓
段 ← 物件佔用空間(表段、索引段、回滾段、暫存段)
↓
區 ← 一次性分配的連續空間(1+ 區塊)
↓
塊 ← Oracle 最小 I/O 單位,建庫時指定 (DB_BLOCK_SIZE)
三、記憶體架構:SGA 與 PGA
| 區域 | 特性 | 核心組件 |
| SGA (System Global Area) | 所有進程共享,實體記憶體不足寫入虛擬記憶體 | Shared Pool、DB Buffer Cache、Redo Log Buffer、Large Pool、Java Pool、Streams Pool |
| PGA (Program Global Area) | 單一進程專用,建立時分配、終止時回收 | 排序區、雜湊區、游標狀態、Session 資訊 |
四、背景進程:資料庫引擎的心跳
| 進程 | 縮寫 | 核心職責 |
| Database Writer | DBWn | 將髒緩衝區寫入資料檔(LRU/Checkpoint/Timeout 觸發) |
| Log Writer | LGWR | 將 Redo Log Buffer 寫入線上 Redo Log(Commit/1/3 MB/Timeout 觸發) |
| System Monitor | SMON | 執行執行個體恢復、整理暫存段、合併自由空間 |
| Process Monitor | PMON | 清理失敗進程資源、釋放鎖、註冊監聽器 |
| Checkpoint | CKPT | Checkpoint 時更新控制檔/資料檔標頭,分攤 LGWR 壓力(大量資料檔時啟用) |
| Archiver | ARCn | Log Switch 時歸檔滿的 Redo Log 組 |
| Recoverer | RECO | 解決分散式交易未決狀態 |
| Dispatcher/Server | Dnnn/Snnn | 共用伺服器/專用伺服器架構下的用戶服務進程 |
五、SCN (System Change Number):時序與一致性的核心
- 系統內部維護的單調遞增序號
- 每次 Commit、Checkpoint、Log Switch 推進 SCN
- 核心用途:
- 讀一致性判斷(查詢只看
SCN < 查詢起始 SCN 的版本)
- 恢復時序基準(Redo 按 SCN 順序應用)
- 分散式交易全域排序
- 閃回查詢/資料庫的時間基準
架構圖譜速記
實例 (Instance) = SGA + 背景進程
資料庫 (Database) = 物理檔案集合
實例掛載/開啟資料庫 → 可服務用戶
一個資料庫可被多實例掛載 (RAC)
一個實例同一時間只能開啟一個資料庫
建立這張架構全景圖,後續學習備份恢復、效能調優、RAC、Data Guard 等進階主題時,都能精準定位組件邊界與交互機制,事半功倍。
- 上一篇文章: Oracle 實戰經驗六則:HAVING、外部聯接、刪除重複、SET TRANSACTION、索引、重建
- 下一篇文章: Oracle 9i 產品核心優勢:RAC、分區、行級鎖、Clickstream Intelligence
Copyright ©
程式碼之家 All Rights Reserved