您好,欢迎访问一九零五行业门户网

DB2中表损坏问题和db2dart工具的使用

这几天需要从一个备份集中恢复一个数据库,恢复后发现问题很多,本身这个备份中可能有存在不完整的log,处理完一个个问题后发现还是有表损坏,在db2diag中其日志
这几天需要从一个备份集中恢复一个数据库,恢复后发现问题很多,本身这个备份中可能有存在不完整的log,处理完一个个问题后发现还是有表损坏,在db2diag中其日志信息如下,倒是很清楚的看到损坏对象:db2数据库坏块代码
常规表的ddl语句示例
2014-04-27-05.06.42.071142-240 i36137a535         level: severe
pid     : 14680376             tid  : 13881       proc : db2sysc 0
instance: db2rilo              node : 000         db   : web
apphdl  : 0-40                 appid: 9.32.130.62.37608.140427090600
authid  : devprcbk
eduid   : 13881                eduname: db2agent (web) 0
function: db2 udb, data management, sqldfetchdirect, probe:4603
retcode : zrc=0x87040001=-2029780991=sqld_badpage bad data page
 dia8500c a data file error has occurred, record id is .
2014-04-27-05.06.42.071901-240 i36673a555         level: severe
pid     : 14680376             tid  : 13881       proc : db2sysc 0
instance: db2rilo              node : 000         db   : web
apphdl  : 0-40                 appid: 9.32.130.62.37608.140427090600
authid  : devprcbk
eduid   : 13881                eduname: db2agent (web) 0
function: db2 udb, trace services, sqlt_logerr_string (secondary logging fu, probe:0
message : tablespace attributes:
data #1 : string, 73 bytes
tablespace seed = 5, bufferpool id = 7, extent size = 16, page size = 8k
2014-04-27-05.06.42.072336-240 i37229a535         level: severe
pid     : 14680376             tid  : 13881       proc : db2sysc 0
instance: db2rilo              node : 000         db   : web
apphdl  : 0-40                 appid: 9.32.130.62.37608.140427090600
authid  : devprcbk
eduid   : 13881                eduname: db2agent (web) 0
function: db2 udb, trace services, sqlt_logerr_string (secondary logging fu, probe:0
message : page object identifiers:
data #1 : string, 51 bytes
tablespace id = 5, object id = 72, object type = 0
2014-04-27-05.06.42.072612-240 i37765a511         level: severe
pid     : 14680376             tid  : 13881       proc : db2sysc 0
instance: db2rilo              node : 000         db   : web
apphdl  : 0-40                 appid: 9.32.130.62.37608.140427090600
authid  : devprcbk
eduid   : 13881                eduname: db2agent (web) 0
function: db2 udb, trace services, sqlt_logerr_string (secondary logging fu, probe:0
message : page numbers:
data #1 : string, 38 bytes
obj page = 15430, pool page = 1061398
2014-04-27-05.06.42.072878-240 i38277a485         level: severe
pid     : 14680376             tid  : 13881       proc : db2sysc 0
instance: db2rilo              node : 000         db   : web
apphdl  : 0-40                 appid: 9.32.130.62.37608.140427090600
authid  : devprcbk
eduid   : 13881                eduname: db2agent (web) 0
function: db2 udb, trace services, sqlt_logerr_string (secondary logging fu, probe:0
message : lifelsn:
data #1 : string, 17 bytes
000000003ca9a178
分析:对于db2中数据库出现坏块问题,如果没有使用该表时候,并不会影响数据库的正常使用,一旦有访问该表的会话,那么会造成整个数据库实例宕机,从而影响业务的应用,所以问题比较棘手,对于此类问题没有很好的解决,唯独可以通过db2dart离线方式将表中的数据导出,并且将表mark为unvaliable后重建即可,db2dart只开放了部分免费功能,如标记索引,导出数据,表空间高水位线处理及一些查看功能,但是对于标记表失效需要客服提供密码才可以使用。其实根据上面提供的信息已经比较完全了,只需要找出是那张表表即可。
tablespace id = 5, object id = 72, object type = 0
其中tablespace id即是坏块所在表的表空间id,object id对应出现坏块的对象id,可以是表索引或lob,object type代表损坏对象的类型,0表示表,1表示索引,还有其他的lob之类的吧,不过很少见,,上面可见损坏的是表,所以所以根据信息就可以通过syscat.tables查看损坏的表名称:
其它类似信息

推荐信息