掌握 Oracle 架構的核心邏輯,是 DBA 從「會操作」進階到「懂原理」的分水嶺。以下整理 25 條基礎架構法則,涵蓋表空間、資料檔、重做日誌、區段/區塊、交易與 SCN 等核心概念,並附贈區塊大小對應最大檔案數對照表,適合面試複習、日常查閱與知識體系建構。
核心架構法則 (1-25)
邏輯與物理儲存層級
- 表空間專屬性:一個表空間僅隸屬於一個資料庫。
- 控制檔冗余:每個資料庫至少 1 個控制檔,生產環境強烈建議 3 個以上,分置不同磁碟。
- SYSTEM 表空間強制性:每個資料庫至少包含 1 個表空間——SYSTEM,專儲資料字典,嚴禁存放使用者資料。
- 聯機重做日誌組:至少 2 個日誌組,每組至少 1 個成員檔案,建議多路徑多重。
- 資料檔專屬性:一個資料檔只能屬於 1 個表空間。
- 資料檔不可移動:加入表空間後,無法移出或加入其他表空間。
- 新表空間需新資料檔:建立表空間必須伴隨新資料檔建立。
- Oracle 區塊大小固定:9i 以前版本在建庫時一次性決定區塊大小 (2K/4K/8K/16K),建庫後不可變更,唯有重建資料庫。
段、區、區塊與空間管理
- 段跨檔、區不跨檔:一個段可跨多個資料檔,但一個區 只能存在於單一資料檔內。
- PCTFREE + PCTUSED < 100:兩者之和必須小於 100,否則區塊永無可用空間。
交易、Undo 與 Redo 機制
- 單一交易單一 Undo 段:一個交易僅使用一個回滾段 (Undo 段)。
- 索引表不存 ROWID:索引組織表 (IOT) 的葉子區塊直接儲存資料,無 ROWID。
- 等大小 Undo 段最優:擁有不同大小的回滾段無益處,建議統一大小。
- Commit 不等於落盤:提交後資料不一定立即寫入資料檔,僅保證 Redo 生成與 LGWR 寫入線上日誌。
- 未提交交易也產生 Redo:為了復原能力,未提交的變更同樣記錄於重做日誌。
實例與資料庫關係
- 8.0.4 預設實例名:初始安裝建立的預設資料庫實例名為 ORCL。
- 區塊大小上限:單一區塊最大 16KB (支援 2K/4K/8K/16K)。
- 最大資料檔數對照表:
| 區塊大小 | 最大資料檔數 |
| 2KB | 20,000 |
| 4KB | 40,000 |
| 8KB 或以上 | 65,536 |
- 多資料庫並行:單一 Oracle Server 可同時啟動多個資料庫實例。
- 多版本共存:UNIX/Linux 支援同一作業系統安裝多版本 Oracle;Windows 早期版本不支援 (12c 後透過 Oracle Home 隔離實現)。
- 一套軟體多實例:單一 Oracle Home 可管理多個資料庫及其對應實例。
- 1:1 對應原則:非 RAC 環境下,每個資料庫對應一個實例 (OPS/RAC 除外)。
- 作業系統層面多實例:綜合以上,單一 OS 可同時運行多個 Oracle 實例。
實務啟示
- 規劃先行:區塊大小、控制檔多路徑、重做日誌組數/大小,必須在建庫階段定案。
- SYSTEM 純淨:嚴禁建立使用者物件於 SYSTEM 表空間,避免字典爭用與碎片。
- Undo 統一:採用自動 Undo 管理 (AUM),統一區塊大小與保留時間。
- Commit 語義:應用開發需理解「Commit 完成 ≠ 資料安全落盤」,關鍵業務可搭配
COMMIT WRITE BATCH NOWAIT 等語法調整持久化策略。
這 25 條法則構成了 Oracle 物理/邏輯架構的骨幹,建議收藏備查,並在實際架構設計、故障排查、效能調優中反覆驗證內化。