db2dart用于由于日志被破坏或者磁盘故障导致的db2不能连接(也适用于实例不能启动)的情况。
1. 尽量在执行db2dart的时候deactivate数据库:
(0). db2 force applications all
(1). db2 deactivate db sample
2. 找到需要恢复的表的表id和表空间id
db2 "select TABSCHEMA,TABNAME, TABLEID,TBSPACEID from syscat.tables where TABSCHEMA='DB2INST1' and TABNAME='PRODUCT'"
找到需要恢复的表的表id和所在表空间的id。 问题是,数据库没法连接,该怎么得到这两个值呢?
db2inst2@db2awse:~/db2dart_sample> db2dart sample /db /rpt /home/db2inst2/liujw/db2dart_sample /rptn checkdb_dart.out
The requested DB2DART processing has completed successfully!
Complete DB2DART report found in:
/home/db2inst2/db2dart_sample/DART0000/checkdb_dart.out
在输出文件中找到类似于:Data inspection phase start. Data obj: 5 In pool: 0的语句, TABLEID为5,TBSPACEID为0
3. db2dart sample /ddel
Table object data formatting start.
Please enter
Table ID or name, tablespace ID, first page or logical row, num of pages or logical rows:
(may suffix page number with 'p' for pool relative if working with a pool-relative tablespace)
4,5,0,999
依次输入:表ID,表空间ID,起始页,页个数
起始页可以设为0, 页个数可以设为999999999
这样就可以得到del
对于以上步骤,一般情况下是整个db所有的表都需要操作,所以可以通过shell脚本批量操作。
4.重建数据库
需要用到db2look导出的设置。所以建议平时运维时经常保存一份建库脚本:
db2look -d sample -e -l -o sample_db2look.ddl
6. load del文件
重建数据库和表之后,将第3步得到的del文件load进相应的表中。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞0
添加新评论0 条评论