一、Oracle RDBMS 環境組件
Oracle 數據庫不僅指數據文件,而是包含以下核心組件的完整運行環境:
- 實例:後台進程(PMON、SMON、DBWn、LGWR 等)與 SGA(共享池、數據緩衝區、Redo Log Buffer 等)。
- SYSTEM 表空間:存放數據字典、系統類目,由一或多個數據文件組成,每個數據庫必有且僅有一個。
- 非 SYSTEM 表空間:DBA 定義的業務表空間(USERS、INDEX、UNDO、TEMP 等),各由一或多個數據文件構成。
- 聯機重做日志:至少兩組,循環寫入,記錄所有變更,保障事務持久化。
- 歸檔日志:可選,聯機日志切換時歸檔,支撐介質恢復與數據守護。
- 控制文件、參數文件:記錄數據庫物理結構、啟動參數等元數據。
所有組件協同工作,通過中央系統類目與數據字典維護元數據一致性。
二、Redo Log 機制詳解
聯機重做日志
- 每個實例擁有一組聯機日志,由多個日志文件組成。
- LGWR 進程將 Redo Entry 實時寫入當前日志文件,記錄數據塊變更向量,用於實例恢復。
- 日志文件組循環使用,切換時觸發檢查點、歸檔等動作。
歸檔重做日志
- 僅在
ARCHIVELOG 模式下生成,將填滿的聯機日志複製到歸檔目標位置。
- 作用:介質恢復基石(配合備份恢復已提交事務)、熱備份支撐(數據庫開啟狀態下備份)。
NOARCHIVELOG 模式不生成歸檔,僅支持冷備份與實例恢復,無法進行時間點恢復。
三、物理與邏輯存儲結構
表空間 → 數據文件 → 數據塊 → 擴展 → 段
- 塊:最小 I/O 單位,大小由
DB_BLOCK_SIZE 定(512~8192 字節),創建庫時固定。
- 擴展:連續塊的集合,最小 5 個塊。段由多個擴展組成。
- 段:表段、索引段、回滾段、臨時段等邏輯對象的物理存儲載體。
- 存儲參數:
INITIAL、NEXT、MINEXTENTS、MAXEXTENTS 控制空間分配策略。
四、網絡協議對比:Oracle vs SQL Server
Oracle 使用 TNS(Transparent Network Substrate)協議,支持專用/共用服務器模式,配置 listener.ora、tnsnames.ora 實現服務註冊與客戶端解析;SQL Server 採用 TDS(Tabular Data Stream)協議,依賴瀏覽器服務與端口解析。Oracle 的網絡層更獨立於作業系統,跨平台特性更強。