db2 Db2 故障诊断的正确思路

如果你是技术支持人员,肯定会遇到一些用户。他们遇到问题就拿起电话对你说:“我的系统坏了,你快来!”。他不能给你任何信息帮你分析问题,你必须耐心的问几个问题…
1.故障描述
正确描述自己遇到的错误是解决问题或寻求帮助的前提。您需要注意以下问题:
错在哪里?
故障发生在哪里?
故障是什么时候发生的?
故障是在什么情况下发生的?
故障可再现吗?
如果你是技术支持人员(跟我一样),肯定会遇到一些用户。他们遇到问题就拿起电话对你说:“我的系统坏了,你快来!”。他不能给你任何信息来帮助你分析问题。以上问题一定要耐心问。
对于“错在哪里?”这个问题可以从以下几个方面来回答:谁遇到的问题,是什么现象,是否影响应用。例如,客户报告“我的应用程序失败”。你可以问“你的应用是什么,在处理什么操作”,比如客户回答“这个应用是在处理薪资信息,它的日志显示一个SQL INSERT操作多次失败,返回值是SQLCODE SQL0289N”。这个SQL0289N将是你处理问题的重要信息。
找到故障的根本原因并不容易,因为现象和故障之间可能有很多层,网络、硬盘和驱动程序也需要考虑。如果应用程序是本地的,那么我们不需要考虑网络问题,相反,我们应该考虑网络问题。我们稍后会更详细地解释这个问题,所以让我们暂停一下。
提供故障模式的具体时间有助于支持人员通过日志找到故障的具体信息,尤其是只发生一次的故障。如果故障多次发生,我们需要考虑:故障是否定期发生,是否有自动执行的脚本或cron作业。
什么情况下会出现故障,比如是否执行了其他程序或者执行了一系列操作,或者是否其他应用程序同时也出现了故障?很多问题和当时的环境有关,所以在我们没有头绪的时候,要慎重考虑环境问题。
最后,可再现故障是解决故障的理想情况。首先,您可以使用许多工具来监控故障发生的各种信息,这将有助于深入了解故障的性质,更好地解决故障。其次,在解决问题的时候,也可以确认问题是否真的解决了。
2.收集数据
很多情况下,你无法通过客户告诉你的信息来解决问题。DB2本身提供了大量信息来帮助您解决问题。在此,我们将重点介绍以下文档:
db2diag.log
陷阱文件
转储文件
消息文件
Db2diag.log是故障诊断最常用的文件。它通常位于目录$HOME/sqllib/db2dump/。如果在目录中找不到该文件,请检查DBM配置变量DIAGPATH以确定具体位置。DBM配置变量DIAGLEVEL控制哪些信息将被写入db2diag.log。值的范围是0-4:
0-没有消息
1-严重错误消息
2-仅错误消息
3-所有错误和警告消息(默认)
4-所有错误、警告、信息和内部诊断消息
一般情况下,默认值3就足够解决问题了。在特殊情况下,可以设置为4以获取更多信息,但是设置4会导致性能问题,请在解决问题后修改回3。
陷阱文件:DB2进程收到异常信号时,会在DIAGPATH下生成陷阱文件。文件名为tpppppp.nnn,其中ppp表示进程号,nnn表示生成陷阱的节点。对于具体的信号代码对应,可以查看文件/usr/include/sys/signal.h .本文后面会详细解释陷阱文件
转储文件:当DB2检测到它需要收集内部信息时,它将在DIAGPATH中生成一个转储文件。这些文件有两种格式:
类型1:二进制转储文件
ppp.nnn格式和陷阱文件名具有相同的含义
类型2:锁定列表文件(锁定列表)
lpppppp.nnn格式
消息文件:一些DB2工具,如BIND、LOAD、EXPORT和IMPORT,提供了生成消息文件的选项。这些消息文件记录了工具执行的结果和错误信息,这是处理工具执行失败所必需的。

推荐阅读