自 DB2 V8.2.2 引入自動存儲簡化容器管理,V9 設為預設。但 9.7 前,非自動存儲資料庫無法事後啟用,既有 DMS 表空間也無法轉換。DB2 9.7 打破限制:提供 ALTER DATABASE ADD STORAGE 啟用資料庫級自動存儲,並支援將 DMS 表空間線上或離線轉換為自動存儲(SMS 不支援轉換)。
| 類型 | 管理者 | 特點 |
|---|---|---|
| SMS (系統管理) | OS 檔案系統 | 易管理、自動擴展、效能較弱、大小受限 |
| DMS (資料庫管理) | DB2 管理器 | 高效能、容器手動管理、支援 AUTORESIZE |
| 自動存儲 | DB2 管理器(資料庫級路徑) | 兼具 DMS 效能與 SMS 易管理性、容器自動配置 |
ALTER DATABASE <dbname> ADD STORAGE ON '<path1>' [, '<path2>', ...]
範例:db2 "alter database testdb add storage on '/db2/db6test/path1', '/db2/db6test/path2'"
注意:存儲路徑一旦新增無法全部刪除(SQLSTATE 428HH),分區庫需確保所有節點路徑存在且權限一致,新路徑需手動重新分佈資料才會生效。
db2 get snapshot for tablespaces on testdb
# 確認 Tablespace Type = Database managed space
db2 "alter tablespace TS1 managed by automatic storage"
快照顯示:原有容器保留,新增兩個自動存儲容器(新 stripe set),Rebalancer Mode 顯示進行中。db2 "alter tablespace TS1 rebalance"
完成後:原 DMS 容器移除,僅剩自動存儲容器,stripe set 合併為一,Rebalancer Mode = No Rebalancing。若跳過此步,未來 REDUCE 操作可能誤刪新容器。代價:REBALANCE 為資料搬移操作,大表空間耗時長、資源消耗大,可搭配 throttling 降低影響。
適用於可容許停機維護窗口,無需 REBALANCE。
db2 backup db testdb tablespace ts2 online to /db2/backupdb2 "restore db testdb tablespace(ts2) from /db2/backup redirect"db2 "set tablespace containers for 5 using automatic storage" → db2 restore database testdb continuedb2 "rollforward db testdb to end of logs and stop"結果:快照顯示原使用者容器被自動存儲容器取代,表空間類型仍顯示 DMS(底層已為自動存儲)。
MON_GET_TABLESPACE 或 SYSIBMADM.SNAPTBSP 篩選 TBSP_USING_AUTO_STORAGE != 1 AND TBSP_TYPE = 'DMS'ALTER TABLESPACE ... MANAGED BY AUTOMATIC STORAGE + REBALANCE 腳本GENERATE SCRIPT 產生重導向恢復模板,修改後批量執行DB2 9.7 的雙模式轉換機制,讓既有 DMS 表空間得以平滑遷移至自動存儲架構,釋放 DBA 容器管理負擔,提升運維彈性。選擇線上或離線模式視業務連續性需求與維護窗口而定,配合節流與批量化工具,可安全高效完成大規模遷移。