db2diag.log文件
对于日志,我们需要终点关注Severe和Error,Warning关注频率和其他日志结合,Info可以忽略
对于一条 db2diag.log 日志,
- 第一行主要包含日期与记录级别
- 第二行是进程 ID、线程 ID和进程名
- 第三行为实例名和节点ID
- 如果该记录对应某一 特定应用,则第四行是应用程序句柄和ID,
- 第五行为其授权ID;否则第四行为函数名和记录点。接下来是该记录的信息。
剩下的内容为该记录信息
2025-04-02-14.41.25.671280+480 E1176213E575 LEVEL: Error
PID : 7436 TID : 140236137674496 PROC : db2acd
INSTANCE: db2inst1 NODE : 000 DB : YS
APPID : *LOCAL.db2inst1.250402064129
HOSTNAME: standby
FUNCTION: DB2 UDB, Automatic Table Maintenance, atmRefreshInfoTable, probe:320
DATA #1 : String, 11 bytes
AutoStats:
DATA #2 : String, 137 bytes
[IBM][CLI Driver][DB2/LINUXX8664] SQL0668N Operation not allowed for reason code "3" on table "SYSTOOLS.HMON_ATM_INFO". SQLSTATE=57016
DATA #3 : String, 5 bytes
57016
宕机
非法内存访问导致的宕机可以在diag日志中搜索sigsegv
数据损坏
挂起
分为整个实例停止响应和单个应用程序挂起
可以使用list applications和db2pd来判断是实例问题还是单个应用程序挂起
错误信息
SQLCODE
标准的DB2错误代码
使用db2 ? <SQLCODE>
来查询代码含义
[db2inst1@standby ~]$ db2 ? SQL911
SQL0911N The current transaction has been rolled back because of a
deadlock or timeout. Reason code "<reason-code>".
Explanation:
The current unit of work was involved ...
有些代码不能直接看出含义,需要结合日志
分析数据收集工具
普通收集
db2support /tmp/db2support -d ys -c -s
hang住收集
db2support /tmp/db2support -g -s
优化sql收集
db2support /tmp/db2support -d ys -cl l -sf <sql文件名>