DB2 V9 引入自動存儲,將表空間容器管理權交還資料庫管理器:建立表空間時無需指定容器路徑、大小、擴展參數,DB2 依據存儲路徑自動在檔案系統分配、擴展容器。這極大簡化了 DBA 日常運維,但也帶來還原時的新挑戰——目標端存儲路徑可能與來源端不同,傳統 REDIRECT 逐容器重映射機制不再直接適用。
DBPATH ON 指定)。ON 或 AUTOMATIC STORAGE YES ON 指定)。CREATE DATABASE 未顯式關閉時,預設啟用自動存儲,路徑由 dftdbpath 參數決定。| 範例 | 語句 | 資料庫路徑 | 存儲路徑 | 自動存儲 |
|---|---|---|---|---|
| 1 | CREATE DATABASE DB2TEST1 AUTOMATIC STORAGE NO ON /db2/databases/db2test1 | /db2/databases/db2test1 | 無 | ❌ 關閉 |
| 2 | CREATE DATABASE DB2TEST2 | dftdbpath | dftdbpath | ✅ 預設開啟 |
| 3 | CREATE DATABASE DB2TEST3 ON /db2/databases/db2test3 | /db2/databases/db2test3 | /db2/databases/db2test3 | ✅ 預設開啟 |
| 4 | CREATE DATABASE DB2TEST4 AUTOMATIC STORAGE YES | dftdbpath | dftdbpath | ✅ 顯式開啟 |
| 5 | CREATE DATABASE DB2TEST5 ON /db2/databases/db2test5/autostorage DBPATH ON /db2/databases/db2test5 | /db2/databases/db2test5 | /db2/databases/db2test5/autostorage | ✅ 開啟(路徑分離) |

場景:來源資料庫啟用自動存儲,目標主機磁碟佈局不同,需將資料庫還原至新存儲路徑。
db2 backup database SRC_DB to /backup
db2 get db cfg for SRC_DB show detail | grep -i "automatic storage"
db2 restore database SRC_DB from /backup taken at 20240101120000
into TGT_DB
redirect
without prompting
傳統 SET TABLESPACE CONTAINERS 僅適用非自動存儲表空間。對自動存儲表空間,需使用 SET STOGROUP PATHS:
-- 查看當前儲存群組
db2 "SELECT STOGROUP_NAME, PATHS FROM SYSCAT.STOGROUPS WHERE STOGROUP_NAME NOT LIKE 'SYS%'"
-- 重新映射儲存群組路徑(假設目標掛載點為 /new_storage)
db2 "SET STOGROUP PATHS FOR IBMSTOGROUP ON '/new_storage/autostorage'"
db2 restore database SRC_DB continue
db2 rollforward database TGT_DB to end of logs and complete
db2 list tablespaces show detail 確認所有自動存儲表空間容器已落在新路徑。SET TABLESPACE CONTAINERS 逐一重映射。RUNSTATS 更新統計資訊,必要時 REORG 整理索引。| 坑點 | 現象 | 規避措施 |
|---|---|---|
| 混淆資料庫路徑與存儲路徑 | 還原後系統表空間在預期目錄,用戶表空間卻在舊路徑 | 明確區分 DBPATH(系統)與 ON/STOGROUP(用戶自動存儲) |
| 嘗試用 SET TABLESPACE CONTAINERS 改自動存儲表空間 | SQL1757N 錯誤:自動存儲表空間不支援容器重定義 | 改用 SET STOGROUP PATHS |
| 目標存儲路徑權限不足 | 還原成功但資料庫啟動失敗(SQL1052N) | 確保 instance owner 對新路徑有讀寫執行權限 |
| 多節點環境 db2look 失敗 | 有分區未啟動時 db2look 拋警告、無法產生 DDL | 還原前確保所有分區 ACTIVE,或單獨對協調節點操作 |
自動存儲將「容器管理」升級為「路徑管理」,重定向還原的核心從 逐容器映射 轉向 儲存群組路徑重映射。掌握 SET STOGROUP PATHS 與 DBPATH/ON 路徑分離語義,即能在異構硬體、雲遷移、測試環境刷新等場景中,平穩完成自動存儲資料庫的非增量重定向還原。