為什麼資料庫需要版本控制?
資料庫維護本質是「變更管理」。傳統日誌難以分析、不完整。借鑑軟體開發的版本控制 (CVS、ClearCase、Git),將結構變更、部署腳本、模型納入版本庫,實現:
- 變更追蹤與審計
- 多 DBA 協作無衝突
- 錯誤回滾 (Undo/Rollback)
- 一致的部署流程
核心架構:DB2 Change Management Expert + Eclipse Team
- 基於 Eclipse RCP 平台,整合 Eclipse Team 元件提供版本控制介面 (Commit、Update、Tag、Branch)。
- 資源 (專案、模型、部署腳本) 存放於本地工作區,易於接入任何 SCM。
- Data Design Project 對應單一資料庫生命週期;複雜環境可拆分多專案或多重佈署。
實戰場景:兩位 DBA 協作變更
環境準備
- 安裝 CVS Server,建立儲存庫。
- DB2 CME 中開啟 CVS Repository Exploring 視角,新增儲存庫位置。
- 建立 Data Design Project (如
test),匯入 CreateCMEDEMO.chx 執行建立 CMEDEMO 資料庫。
第 1 部分:Jaya 建立部署腳本與變更
- 新增部署腳本:File → New → Deployment Script,指定連線、產生 Base Model (現狀) 與 Target Model (目標)。
- 編輯 Target Model:在
CL_SCHED 表新增 LOCATION CHAR(128) 欄位,儲存模型。
- 產生變更命令:Outline 視圖右鍵
Change Commands → Generate Change Commands,指定資料保留路徑、啟用 Auto-cast。
第 2 部分:共享專案至版本庫
- 專案右鍵 → Team → Share Project,選擇 CVS 儲存庫,完成簽入。
- 其他 DBA 即可 Check Out 協作。
第 3 部分:Eric 取得專案並追加變更
- CVS 視角 Check Out 專案至工作區。
- 編輯 Target Model:拖入
EMP_PHOTO 表,重新產生變更命令。
- 若不滿意,可 Replace With → Latest from Head 還原。
- 進一步修改:新增
COMPLETION_CODE 表、PROJECT 表外鍵關聯等,儲存並重新產生命令 (含 Undo 命令)。
- Deploy Changes 部署至目標資料庫,部署日誌同步簽入 CVS。
- Team → Commit 提交變更。
第 4 部分:Jaya 審計並回滾 Eric 的變更
- 開啟部署腳本 → Undo Changes 標籤 → Deploy Undo Commands。
- 或 Deploy → Reset 重置部署腳本,重新規劃變更。
無版本控制系統時的替代方案
- 匯出/匯入專案封存 (ZIP/TAR):File → Export → Archive File;對方 File → Import → Existing Projects into Workspace。
- 本地歷史:Eclipse 工作區保留編輯歷史,可 Replace With → Local History 還原,但無法跨用戶共享歷史。
- 模型/腳本級共享:匯出個別模型或部署腳本,利用 CME 合併/遷移功能整合,靈活但需手工協調。
結論:團隊協作強烈建議接入正式版本控制系統,獲得完整審計軌跡與並行開發保障。
總結
DB2 Change Management Expert 結合 Eclipse Team,將資料庫變更納入標準化版本控制流程,支援多角色協作、審計追溯、一鍵回滾,是敏捷資料庫開發的關鍵基礎設施。