在資料庫技術日新月異的今天,善用既有知識快速掌握新平台是資深 DBA 的核心競爭力。本文專為熟悉 Oracle 10g Release 2 的專業人士設計,透過對比兩大資料庫的架構差異,助您在最短時間內掌握 DB2 9 for Linux, UNIX and Windows 的核心技術。IBM 於 2006 年發布的 DB2 9 是業界首款真正的混合型資料伺服器,其突破性的 pureXML™ 技術可原生儲存階層式 XML 資料,更引入列壓縮、LBAC 安全控制、自調適記憶體管理器 (STMM) 等自治特性,全方位滿足企業級應用的嚴苛需求。
Oracle 採「一實例一資料庫」的強綁定模式,建立資料庫即隱式建立實例,管理工具仰賴 Database Configuration Assistant 或 ORADIM 工具。DB2 則採用「一實例多資料庫」的鬆耦合架構:Windows 預設建立 "DB2" 實例,Linux/UNIX 為 "db2inst1",新增實例僅需執行 db2icrt <instance_name>。切換實例環境變數 DB2INSTANCE 即可指向目標實例,類似 Oracle 的 ORACLE_SID,但 DB2 Control Center 圖形介面提供更直觀的多實例管理視圖(圖 3)。刪除實例僅需 db2idrop 指令,不影響 DB2 核心程式碼。
Oracle 依賴 CREATE DATABASE 或 DBCA 建庫,元資料集中存放於 SYSTEM 表空間的 Data Dictionary。DB2 每個資料庫都是完全獨立單元,擁有專屬的類別表空間 (SYSCATSPACE)、暫存表空間 (TEMPSPACE1) 和使用者表空間 (USERSPACE1)。系統資料庫目錄為二進位檔案,記錄實例下所有可連線資料庫。建庫需顯式執行 CREATE DATABASE 或透過 Control Center 精靈(圖 4、5),刪庫則有專屬 DROP DATABASE 指令,較 Oracle 手動刪除資料檔更規範。跨資料庫查詢需啟用聯邦支援,確保資料隔離性。
DB2 表空間為邏輯層,介於邏輯表與物理容器之間,支援 SMS (系統管理) 與 DMS (資料庫管理) 兩類。SMS 以目錄形式自動擴展,管理簡易;DMS 使用檔案或裸裝置,效能最佳但需預先規劃空間。Oracle 無 SMS 概念,其資料檔類似 DMS。表 1 列出 DB2 三大預設表空間,表 2 則詳細對照 Oracle 與 DB2 的表空間對應關係:SYSTEM 對應 SYSCATSPACE、TEMP 對應 TEMPSPACE1、UNDO 無對應項、USER 表空間對應 USERSPACE1。
DB2 允許建立多個具名緩衝池,無預設數量限制,可針對「熱點表」配置專屬緩衝池確保資料常駐記憶體。頁大小支援 4K/8K/16K/32K,單列不可跨頁儲存(Oracle 允許跨區塊),減少碎片化。索引儲存語法更靈活:CREATE TABLE ... IN tbls1 INDEX IN tbls2 可分離資料與索引表空間,Oracle 需在 CREATE INDEX 中指定。
Oracle 物件命名為 [Schema.]Object[@DB],DB2 簡化為 Schema.Object。關鍵差異在於 DB2 Schema 不必對應 OS 使用者,擁有 IMPLICIT_SCHEMA 權限即可隱式建立新 Schema(如 CREATE TABLE WORLD.TABLEA ...)。連線時已指定資料庫,故物件名稱無需包含資料庫名稱。
DB2 推薦使用類 PL/SQL 的 SQL Procedural Language (SQL PL),效能優於解釯執行的 Transact-SQL,因程式碼編譯一次即可重複使用(特別是 unfenced 模式)。但開發環境需 C 編譯器(未來版本將改善)。觸發器與 UDF 可用 Inline SQL PL 免除 C 編譯需求。Development Center 工具提供全生命週期開發支援。
Oracle 早期依賴 initSID.ora 文字檔,9i 引入二進位 SPFILE。DB2 原生採二進位配置檔,參數多支援動態修改無需重啟。CLP 指令 UPDATE DBM CFG (實例級) 和 UPDATE DB CFG (資料庫級) 分別對應 Oracle 的 ALTER SYSTEM/SESSION。Configuration Advisor (圖 8) 可根據硬體資源自動產生最佳參數值。平台相關設定使用 db2set 管理 DB2 登錄變數 (非 Windows Registry)。網路配置存於系統/本地資料庫目錄與節點目錄,僅可透過 CATALOG/UNCATALOG 修改。
Oracle SGA/PGA 為實例級共享記憶體。DB2 因支援多資料庫,記憶體分配分三層:db2start 時分配實例共享記憶體;啟動資料庫或首次連線時分配資料庫共享記憶體 (緩衝池、鎖清單、堆疊、快取等);應用程式連線時分配應用程式共享記憶體供代理程式使用。Windows 採執行緒模型,Linux/UNIX 採背景程序模型(圖 10 列出完整程序清單:db2sysc、db2loggr、db2pclnr、db2agent 等)。
Oracle 鎖儲存於資料頁,DB2 鎖儲存於記憶體,透過 LOCKLIST (鎖記憶體總量) 和 MAXLOCKS (單應用程式上限) 參數精確控制。支援 ANSI 四大隔離等級 (UR/CS/RS/RR),除 UR 外僅可見提交資料。行鎖依隔離等級隱式獲取,表/表空間可顯式 LOCK TABLE。
DB2 使用者由 OS 管理,無資料庫內部帳號。認證方式由 AUTHENTICATION 參數決定:SERVER_ENCRYPT、KRB_SERVER_ENCRYPT、DATA_ENCRYPT、DATA_ENCRYPT_CMP、GSS_SERVER_ENCRYPT,支援密碼與資料傳輸加密。權限體系以 Authority (SYSADM/SYSCTRL/SYSMAINT/DBADM/LOAD) 替代 Role,Privilege 對應物件權限。DB2 9 引入 LBAC (Label-Based Access Control):建立安全政策 → 定義行/列/使用者安全標籤 → 授予使用者標籤。SECADM 角色專司 LBAC 管理,實現行/列級存取控制,滿足法規遵循需求。
Oracle 10g 仍屬「XML-enabled」資料庫,透過 CLOB 儲存或分解映射至關聯表,查詢需昂貴的 JOIN 操作,難以維護數位簽名保真度。DB2 9 pureXML 採原生階層儲存 (XQuery Data Model 樹狀結構),資料格式即處理格式,免去轉換開銷。建庫需指定 Unicode (UTF-8),建表使用 XML 資料型別:CREATE TABLE T (i INT, doc XML)。支援四種查詢模式:純 SQL、SQL/XML、純 XQuery、XQuery 嵌入 SQL (圖 13)。XML 索引指定 XPath 路徑,備份/恢復/匯入工具全相容(LOAD 暫不支援 XML)。表 3 詳細對比 XML 功能:原生儲存、易維護性、擴展性 DB2 全面領先。
DB2 9 表分區 (Range Partitioning) 允許依欄位範圍將資料分散至多表空間,支援分區剪枝:查詢第 4 季資料時自動跳過前三季掃描。語法範例:PARTITION BY RANGE(l_shipdate) (STARTING ... ENDING ... EVERY 3 MONTHS)。三種分區技術可疊加使用:DPF (雜湊分區) + Range 分區 + MDC (多維叢集),極大提升大規模資料倉庫效能。
Oracle 需規劃索引/表壓縮鍵值。DB2 9 列壓縮採樣本字典壓縮演算法,自動略過壓縮效益低的列,無需指定鍵值。COMPRESS YES 於 CREATE/ALTER TABLE 指定,Control Center 勾選「Store table data in a compressed format」即可 (圖 14)。執行 REORG 時建立/更新壓縮字典,壓縮資料同時存在磁碟與記憶體,甚至壓縮日誌檔減少空間。分區表每分區可擁有獨立字典。輔助機制包含 NULL/預設值壓縮、MDC 區塊索引壓縮、備份壓縮。
Oracle 10g 自動化重做日誌大小、檢查點、共享記憶體、回滾監控。DB2 9 引入 Self-Tuning Memory Manager (STMM, self_tuning_mem 參數) 動態分配記憶體給緩衝池、鎖清單、排序堆疊等消費者。資料庫建立後自動執行 Configuration Advisor,預設啟用自動儲存管理 (跨磁碟自動擴展)、自動統計收集 (背景 RUNSTATS)、增強版自動重組 (支援離線/線上、大小限制、壓縮字典保留策略)。
Control Center 對應 Oracle Enterprise Manager,CLP/Command Center 對應 SQL*Plus/Query Analyzer。DB2 9 重磅推出基於 Eclipse 的 DB2 Developer Workbench (DWB,圖 18),整合 Database Explorer、Data Project Explorer、Data Output 視圖,支援存儲過程/UDF 開發除錯、SQLJ、XML 查詢建構 (XQuery Builder)、遷移報告、常式比較,全面取代 Development Center。
本文系統對比 Oracle 10g R2 與 DB2 9 在架構、儲存、開發、管理、安全、XML、分區、壓縮、自治、工具等十大維度的異同。表 3 概念對照表 (實例/資料庫/表空間/頁/配置/編目/緩衝池/SGA 等) 為快速查閱參考。掌握「一實例多庫」、「Schema 解耦」、「pureXML 原生儲存」、「STMM 自調適記憶體」、「LBAC 細粒度安全」五大核心差異,即可平滑完成技能轉型,在 DB2 9 平台發揮 Oracle 專長。