DB2DART (Database Analysis and Reporting Tool) 是 DB2 內建的底層診斷與數據提取工具,可在資料庫離線狀態下直接讀取表空間頁面,提取受損表的殘留數據。本文詳細記錄從系統表查詢元數據到 DART 提取數據的完整實戰流程。
# 查詢表的 TABLEID (TID) 與 TABLESPACEID (FID)
db2 "SELECT CREATOR, NAME, TID, FID FROM SYSIBM.SYSTABLES WHERE NAME = 'target_table'"
假設查詢結果:TID=2, FID=2
D:\> DB2DART SAMPLE /DDEL
Table object data formatting start.
Please enter
Table ID or name, tablespace ID, first page, num of pages:
(suffix page number with 'p' for pool relative)
2,2,0,999
5 of 5 columns in the table will be dumped.
Column numbers and datatypes of the columns dumped:
0 SMALLINT
1 VARCHAR() - VARIABLE LENGTH CHARACTER STRING
2 SMALLINT
3 VARCHAR() - VARIABLE LENGTH CHARACTER STRING
4 VARCHAR() - VARIABLE LENGTH CHARACTER STRING
Default filename for output data file is TS2T2.DEL,
do you wish to change filename used? y/n
N
Filename used for output data file is TS2T2.DEL. If existing file, data will be appended to it.
Formatted data being dumped ...
Dumping Page 0 ....
Table object data formatting end.
The requested DB2DART processing has completed successfully!
Complete DB2DART report found in:
C:\PROGRA~1\IBM\SQLLIB\DB2\DART0000\SAMPLE.RPT
| 參數位置 | 含義 | 範例值 | 說明 |
|---|---|---|---|
| 1 | Table ID (TID) | 2 | 來自 SYSIBM.SYSTABLES.TID |
| 2 | Tablespace ID (FID) | 2 | 來自 SYSIBM.SYSTABLES.FID |
| 3 | First Page | 0 | 從第 0 頁開始 (表首頁) |
| 4 | Num of Pages | 999 | 盡量估大,覆蓋整個表 |
| 適用場景 | 限制條件 |
|---|---|
| 表空間損壞但頁面部分可讀 | 資料庫必須離線 (DEACTIVATE) |
| 誤 DROP TABLE 後未提交/無備份 | 僅能提取未被覆寫的頁面數據 |
| 系統表損壞需提取用戶表數據 | 大表提取耗時極長,需規劃維護窗口 |
| 配合 db2dart /DHWM 降低高水位線 | 不支援加密資料庫、Column-organized 表 |
# 完整選項列表
DB2DART database_alias
/DDEL # 格式化提取表數據 (本文示例)
/DHWM # 降低高水位線
/INSPECT # 檢查頁面完整性
/LHWM # 列出高水位線資訊
/PAGE # 提取指定頁面
/ROW # 提取指定行
/T # 指定表空間
/TS # 指定表
/RPT # 指定報表輸出路徑
DB2DART 是「最後防線」級工具,不應作為常規恢復手段。其價值在於:當備份缺失、日誌不全、表空間部分損壞時,仍能從物理頁面層面搶救核心業務數據。建議:
db2dart /INSPECT 定期掃描表空間健康度