DB2 SQL5005C 系统错误问题排查

今天现场运维人员反馈,在备份数据库的时候,提示“SQL5005C 系统错误”。运维人员反馈之前备份数据库从没有出现过这种错误,今天备份的时候就出现了这种错误,无法备份数据库。
于是,通过查询“SQL5005C”的错误解释:“A system error, probably an I/O error, was encountered while accessing a configuration file”,提示“当访问配置文件的时候出现了IO错误”。怀疑是数据库在访问某些文件时出来问题,于是让运维人员拿取db2diag.txt的文件查看是不是有详细错误打印出来,果然,在里面看到如下的错误:
2016-04-06-17.00.56.529000+480 I7974839F392       LEVEL: Error
PID     : 5936                 TID  : 5648        PROC : db2fmp64.exe
INSTANCE: DB2                  NODE : 000
EDUID   : 5648
FUNCTION: DB2 UDB, config/install, sqlfGetDbmCfg, probe:10
MESSAGE : SQL5005: sqlf_openfile rc =
DATA #1 : Hexdump, 4 bytes
0x000000000931B188 : 0A00 0F86  

通过查询MESSGAE信息,在http://www-01.ibm.com/support/docview.wss?uid=swg21642594的文章中找到了灵感,这个问题解决方案中提示查询db2systm文件的权限。于是,让运维同事找一下这个文件,可是在系统中竟然找不到这个文件,可是在测试环境能够找到这个文件。突然想到之前由于数据库磁盘空间不够,让运维同事删除过一些日志或监控文件,可能当时这个文件就被误删了。于是,在本地测试环境删除db2systm文件后,然后执行备份操作,发现问题现场和现场反馈的现象一致,于是得出结论,由于db2systm文件保存了数据库的配置信息,误删db2systm文件导致备份操作时读取该文件信息时出错,导致无法执行备份操作。

此时文件已经被删除,想想该如何补救吧。。。

在测试环境测试发现,删除db2systm文件后,再重新将db2systm文件还原(重新复制到)以后,问题竟然不存在了,想到将测试环境的db2systm文件copy到生产环境是不是就可以,于是让运维同事将db2systm文件copy到生产环境相同路径下,然后再次执行备份操作,问题解决。

注:之前让运维同事执行db2set命令的时候,显示不出来任何信息,当时没有引起足够重视,其实,执行db2set命令查询数据库的一些变量信息时,应该也是通过读取db2systm文件获取的,文件没有当然就获取不到任何信息。文件恢复后,执行db2set命令时,可以获取到变量信息了。

猜你喜欢

转载自lingfeng2011.iteye.com/blog/2289035