前言:安全從「知己」開始
Oracle 9i 曾宣稱「Unbreakable」,但發布一月即被曝出緩衝區溢出漏洞。資料安全非廠商口號所能保證,而是 DBA 深度理解架構、配置最小權限、建立多層防護、持續修補漏洞的系統工程。
Oracle RDBMS 環境組件
- 資料庫進程與記憶體結構(執行個體)。
- SYSTEM 表空間(含資料字典),由一或多個資料檔組成。
- DBA 定義的其他表空間(使用者資料、索引、暫存、UNDO 等)。
- 兩個以上的線上重做日誌組(多工)。
- 歸檔重做日誌(可選,ARHIVELOG 模式)。
- 控制檔、參數檔 (SPFILE/PFILE)、密碼檔、網路設定檔等。
所有資料庫在中央系統類目(SYSTEM 表空間)與資料字典上運行。
日誌機制核心
線上重做日誌
- 每個執行個體對應一組線上日誌(多組成員多工)。
- LGWR 同步寫入,記錄所有變更的重做項,支援實例/介質恢復。
- 循環使用,填滿觸發日誌切換(Checkpoint)。
歸檔重做日誌
- 線上日誌填滿後由 ARCn 複製至歸檔目的地,形成離線備份鏈。
- 唯一標識(日誌序列號 + 線程號),不可修改、不可刪除(除非已備份)。
- 支援:
① 介質故障下所有已提交交易可恢復。
② 資料庫開啟狀態下進行線上備份(熱備份)。
兩種運行模式
| 模式 | 特徵 | 恢復能力 |
| NOARCHIVELOG | 不產生歸檔,線上日誌循環覆寫 | 僅支援實例恢復(崩潰恢復),不支援介質恢復、熱備份 |
| ARCHIVELOG | 自動歸檔,需管理歸檔空間 | 支援完整介質恢復、時間點恢復、熱備份、Data Guard |
生產環境強制啟用 ARCHIVELOG。
物理與邏輯儲存結構
層級關係
資料庫
└─ 表空間
└─ 資料檔 (一或多個)
└─ 區塊 (Block, 512~8192 bytes, 建庫指定)
└─ 區
└─ 段
└─ 物件
關鍵概念
- 區塊:最小 I/O 單位,典型 8KB。建庫時
DB_BLOCK_SIZE 指定,創建後不可變更。
- 區:連續區塊集合,空間分配單位。最小 5 區塊。可為均勻大小或自動分配。
- 段:物件(表、索引、LOB、暫存、UNDO、叢集)佔用的空間集合。
- 表空間:邏輯儲存容器,映射一組資料檔。本地管理 (LMT) + 自動區塊管理 (ASSM) 為現代標準。
安全基線配置清單(基於架構理解)
- 控制檔多工:至少 3 份分散不同磁碟/控制器,
CONTROL_FILES 參數列出所有路徑。
- 線上日誌多工:每組至少 2 成員,分散不同磁碟,成員大小一致。
- 啟用 ARCHIVELOG + 多歸檔目的地:
LOG_ARCHIVE_DEST_n、LOG_ARCHIVE_MIN_SUCCEED_DEST。
- 資料檔/臨時檔/UNDO 檔分盤:分離 I/O 熱點,提升效能與可用性。
- 參數檔使用 SPFILE:支援動態修改、備份、多實例共享(RAC)。
- 密碼檔 EXCLUSIVE 模式:支援遠端 SYSDBA 管理。
- 區塊大小選型:OLTP 8KB,DSS/數倉 16KB/32KB,建庫前規劃。
理解架構是安全的前提。下一篇將深入備份恢復策略,構建「可恢復」的核心防線。