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

这几天需要从一个备份集中恢复一个数据库,恢复后发现问题很多,本身这个备份中可能有存在不完整的log,处理完一个个问题后发现还是有表损坏,在db2diag中其日志信息如下,倒是很清楚的看到损坏对象:DB2数据库坏块代码

DB2数据库性能调整和优化(第1、2版) PDF

DB2数据库性能优化介绍

<code type="section">

<heading refname=Listing 2" type="code">常规表的DDL语句示例</heading>

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


</code>

分析:对于DB2中数据库出现坏块问题,如果没有使用该表时候,并不会影响数据库的正常使用,一旦有访问该表的会话,那么会造成整个数据库实例宕机,从而影响业务的应用,所以问题比较棘手,对于此类问题没有很好的解决,唯独可以通过db2dart离线方式将表中的数据导出,并且将表mark为unvaliable后重建即可,db2dart只开放了部分免费功能,如标记索引,导出数据,表空间高水位线处理及一些查看功能,但是对于标记表失效需要客服提供密码才可以使用。其实根据上面提供的信息已经比较完全了,只需要找出是那张表表即可。

Tablespace ID = 5, Object ID = 72, Object Type = 0

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/bc0365aae559552e66e35dff10f46882.html