一、物理結構:六大檔案奠基
| 檔案類型 | 核心功能 | 關鍵特性 |
| 控制檔 | 維護資料庫完整性資訊,識別資料檔與 Redo Log | 至少 1 個,建議多路徑多工 |
| 資料檔 | 實際儲存資料 | 屬於某表空間,不可跨表空間 |
| 重做日誌檔 | 記錄所有資料庫變更,支援故障恢復 | 至少 2 組,循環寫入 |
| 參數檔 | 定義 Instance 特性(SGA 大小等) | PFILE/SPFILE 兩種形式 |
| 歸檔檔 | Redo Log 的離線副本,媒體恢復關鍵 | 啟用 ARCHIVELOG 模式後產生 |
| 密碼檔 | 認證具備 SYSDBA/SYSOPER 權限的用戶 | 啟用遠程管理所需 |
二、邏輯結構:四層儲存階梯
- 表空間:邏輯儲存單位,由一組資料檔組成
- 段:物件在資料庫中佔用的空間(表段、索引段、回滾段、臨時段)
- 區:一次性分配的連續空間單位,由多個區塊組成
- 區塊:Oracle 最小 I/O 單位,建庫時指定(如 8K)
關係:表空間 → 段 → 區 → 區塊
三、記憶體架構:SGA 與 PGA 雙核心
SGA (System Global Area)
- 所有資料庫進程共享的記憶體區域
- 包含:共用池、資料庫緩衝區、Redo Log 緩衝區、大池、Java 池、串流池等
- 實體記憶體不足時會使用虛擬記憶體(影響效能)
PGA (Program Global Area)
- 單一進程專用記憶體(排序、雜湊、游標資訊)
- 進程建立時分配,終止時回收
- 專用伺服器模式下每個用戶進程一個 PGA;共用伺服器模式下部分資訊移至 SGA
四、後台進程:七大守護者
| 進程 | 職責 |
| DBWn (Database Writer) | 將髒緩衝區寫入資料檔 |
| LGWR (Log Writer) | 將 Redo Log Buffer 寫入線上 Redo Log |
| SMON (System Monitor) | 啟動時執行實例恢復、清理臨時段、合併自由空間 |
| PMON (Process Monitor) | 清理失敗進程資源、釋放鎖、重新註冊服務 |
| CKPT (Checkpoint) | 定期更新控制檔與資料檔檢查點資訊,加速恢復 |
| ARCn (Archiver) | 日誌切換時將滿載 Redo Log 歸檔 |
| RECO (Recoverer) | 解決分散式交易失敗 |
此外尚有用戶進程(客戶端發送 SQL)與伺服器進程(處理請求、回傳結果),專用/共用模式決定對應關係。
五、核心概念:Instance 與 SCN
- Oracle Instance = SGA + 後台進程。一個 Instance 一次只能掛載/開啟一個資料庫。
- SCN (System Change Number):系統內部維護的遞增序號,是資料一致性與順序恢復的核心基準。每次提交交易、檢查點、日誌切換都會推進 SCN。
六、深入學習路徑建議
DBA 方向
- 考取 OCP 建立系統知識體系
- 研讀 Oracle Concepts 與官方線上文件
- 專題深鑽:RMAN、RAC、Statspack/AWR、Data Guard、SQL Tuning、備份恢復
開發方向
- 精通 PL/SQL:SQL 優化、內建函數、預存程序/函數/觸發器/套件
- 掌握開發工具:Oracle Developer Suite (Forms/Reports) 或現代替代方案
架構理解是所有進階技能的基石,建議初學者先構建完整心智模型,再按角色深耕。