Oracle 資料庫環境 = 實例 + 物理檔案集合
「資料庫」一詞在 Oracle 語境下雙重含義:狹義指**物理檔案集合**,廣義指**整個 RDBMS 環境**(實例 + 檔案)。
核心組件清單
- Oracle 實例: SGA(共享記憶體)+ 背景進程(DBWn、LGWR、CKPT、SMON、PMON、MMAN、RECO...)。
- SYSTEM 表空間: 唯一強制表空間,存放**資料字典**(核心元資料),由 1+N 個資料檔組成。
- 非 SYSTEM 表空間: DBA 規劃的業務表空間(USERS、UNDO、TEMP、INDEX、DATA...),各 1+N 資料檔。
- 線上 Redo Log: **至少 2 組**,每組 1+N 個成員(鏡像),循環寫入,保證事務持久化。
- 歸檔 Redo Log: 選用,歸檔模式下由 ARCn 將填滿的線上日誌複製歸檔,**備份恢復/備庫同步基石**。
- 其他關鍵檔案: 控制檔(多路徑)、參數檔(SPFILE/PFILE)、密碼檔、網路設定檔。
日誌機制深度解析
線上 Redo Log(Online Redo Log)
- 每實例一組線上日誌,由多個**日誌檔**組成**日誌組**,循環使用。
- LGWR 將 **Redo Entry**(重做記錄)寫入當前日誌組,**記錄所有變更向量**,支援前滾恢復。
- 日誌切換觸發 CKPT 更新控制檔/資料檔頭 SCN、觸發 ARCn 歸檔(歸檔模式)。
歸檔 Redo Log(Archived Redo Log)
- 填滿的線上日誌組被歸檔形成**歸檔日誌檔**,唯一標識(序號+線程+RESETLOGS ID)。
- 用途:① 媒體恢復基石 ② 開啟狀態下熱備份支援 ③ Data Guard/Streams/GoldenGate 同步源。
兩種運行模式
| 模式 | 特徵 | 適用場景 |
| NOARCHIVELOG | 不歸檔,線上日誌覆蓋循環 | 測試/開發/可重建環境,僅支援冷備份 |
| ARCHIVELOG | 歸檔,線上日誌歸檔後才可覆蓋 | **所有生產環境**,支援熱備份、時間點恢復、Data Guard |
物理與邏輯儲存結構映射
Tablespace (邏輯容器)
└─ Datafile (物理檔案, 1+N)
└─ Oracle Block (格式化單位, 512-8192 bytes, 9i前創庫固定)
└─ Extent (連續區塊鏈, ≥5 blocks, 初始/下一/最小/最大)
└─ Segment (段: 表/索引/Undo/Temp, 單表空間可跨多檔)
Oracle vs SQL Server 網路協議對比
| 層面 | Oracle Net Services | SQL Server Network Library |
| 架構 | 分層:應用 → TNS → 協議適配器 → 传输層 | 整合:TDS 封包直接載於 TCP/Named Pipes/Shared Memory |
| 配置檔 | sqlnet.ora、listener.ora、tnsnames.ora | SQL Server Configuration Manager、Cliconfg |
| 命名解析 | 本地 tnsnames、LDAP/OID、EZCONNECT | SPN、別名、IP/端口直連 |
| 進階功能 | 連線負載均衡、故障轉移、SDU/TDU 調優、SSL/TLS、DRCP | AlwaysOn 端點、加密連線、連線池 |
初學者關鍵認知
- **實例 ≠ 資料庫**:實例是記憶體+進程,資料庫是檔案。RAC:多實例掛載單一資料庫。
- **SGA 是實例核心**:Shared Pool、Buffer Cache、Redo Log Buffer、Large Pool、Java Pool、Streams Pool...
- **控制檔是資料庫身份證**:記錄檔案路徑、SCN、Checkpoint、RMAN 元資料、Redo 歷史。
- **歸檔模式是生產底線**:無歸檔 = 無時間點恢復 = 風險不可控。