前言:安全神話與現實
Oracle 9i 推出時宣稱「絕對安全」,但 2002 年底連續曝光:9iAS 緩衝區溢出 (David Litchfield)、PenTest/eEye 發現的多個漏洞。結論:安全靠配置與運維,不靠營銷口號。
Oracle 核心組件
- 實例:後台進程 (PMON、SMON、DBWn、LGWR、CKPT、ARCn、RECO 等) + SGA (共享池、數據緩衝、重做日志緩衝、大池、Java 池、流池)。
SYSTEM 表空間:數據字典 (核心元數據),1+ 數據文件。
- 非系統表空間:
SYSAUX、UNDOTBS、TEMP、用戶業務表空間。
- 在線重做日志:≥2 組,多路復用,循環寫入。
- 歸檔重做日志:
ARCHIVELOG 模式下自動生成,支援 PITR、Data Guard、閃回。
- 控制文件、參數文件 (
SPFILE/PFILE)、密碼文件 (orapw)。
重做日志機制
在線日志
- LGWR 顺序寫入 Redo Entry (Change Vector),記錄塊級變更向量。
- 提交時 (COMMIT) LGWR 強制刷盤 (LGWR 寫完返回),保證持久性。
- 檢查點 (CKPT) 定期將脏塊刷盤並更新控制文件/數據文件頭 SCN。
歸檔日志
ARCHIVELOG:ARCn 進程複製已填滿日志組到歸檔目標,支援熱備份、介質恢復、邏輯閃回。
NOARCHIVELOG:無歸檔,僅支援實例崩潰恢復,不可 7×24 熱備份。
物理與邏輯存儲層級
- 塊:最小 I/O,大小創庫定 (2K/4K/8K/16K/32K),
DB_BLOCK_SIZE 參數。
- 區塊:連續塊集合,最小 5 塊,分配單位 (
EXTENT)。
- 段:同類對象區塊集合 (表段、索引段、Undo 段、臨時段),屬單一表空間,可跨數據文件。
- 表空間:邏輯容器,1+ 數據文件,管理段集合。
- 數據文件:物理文件,屬唯一表空間,創建後不可移動/重用。
存儲參數關鍵點
INITIAL/NEXT/MINEXTENTS/MAXEXTENTS (舊版字典管理表空間)。
- 局部管理表空間 (LMT) + 自動段空間管理 (ASSM) 為現代默認,無需手工調整存儲參數。