首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2DART 數據恢復實戰:損壞表數據提取與修復完整操作流程

     編輯:DB2 教學

前言

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

二、DB2DART 互動式操作流程


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

三、參數詳細解析

關鍵提示: 第 4 參數「頁數」務必估大 (如 9999),確保掃描完整表空間,避免遺漏數據。

四、輸出結果處理

  • 生成分隔檔:TS2T2.DEL (預設命名規則:TS{FID}T{TID}.DEL)
  • 報表檔:SAMPLE.RPT (含掃描統計、錯誤頁面、數據行數)
  • 分隔檔可直接用於 IMPORT 或 LOAD 重建表

五、重建表標準流程


# 1. 建立目標表結構 (從 db2look 獲取 DDL)
db2look -d SAMPLE -e -t target_table -o target_table.ddl
db2 -tvf target_table.ddl

# 2. 匯入 DART 提取的數據
db2 "IMPORT FROM TS2T2.DEL OF DEL INSERT INTO target_table"

# 3. 驗證數據完整性
db2 "SELECT COUNT(*) FROM target_table"
db2 "RUNSTATS ON TABLE target_table"

六、適用場景與限制

參數位置含義範例值說明
1Table ID (TID)2來自 SYSIBM.SYSTABLES.TID
2Tablespace ID (FID)2來自 SYSIBM.SYSTABLES.FID
3First Page0從第 0 頁開始 (表首頁)
4Num of Pages999盡量估大,覆蓋整個表
適用場景限制條件
表空間損壞但頁面部分可讀資料庫必須離線 (DEACTIVATE)
誤 DROP TABLE 後未提交/無備份僅能提取未被覆寫的頁面數據
系統表損壞需提取用戶表數據大表提取耗時極長,需規劃維護窗口
配合 db2dart /DHWM 降低高水位線不支援加密資料庫、Column-organized 表

七、進階參數速查


# 完整選項列表
DB2DART database_alias
    /DDEL          # 格式化提取表數據 (本文示例)
    /DHWM          # 降低高水位線
    /INSPECT       # 檢查頁面完整性
    /LHWM          # 列出高水位線資訊
    /PAGE          # 提取指定頁面
    /ROW           # 提取指定行
    /T             # 指定表空間
    /TS            # 指定表
    /RPT           # 指定報表輸出路徑

結語

DB2DART 是「最後防線」級工具,不應作為常規恢復手段。其價值在於:當備份缺失、日誌不全、表空間部分損壞時,仍能從物理頁面層面搶救核心業務數據。建議:

  1. 定期演練 DART 提取流程,熟悉參數與輸出格式
  2. 將關鍵表的 TID/FID 映射表納入運維手冊
  3. 搭配 db2dart /INSPECT 定期掃描表空間健康度
  4. 核心業務表務必實施完整備份策略,DART 只是保底
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved