1. 首页 > DB2教程 > 正文

DB2教程FG094-DB2诊断工具使用实战

风哥教程参考DB2官方文档Troubleshooting、Diagnostic Tools等内容,详细介绍诊断工具使用、问题诊断、故障排查等。更多视频教程www.fgedu.net.cn

目录大纲

Part01-诊断工具概述

1.1 DB2诊断工具

DB2提供多种诊断工具:

  • db2pd:问题诊断工具,实时监控
  • db2diag:诊断日志分析工具
  • db2support:技术支持数据收集
  • db2dart:数据库分析和修复工具
  • db2top:实时性能监控工具

1.2 诊断场景

  • 性能问题诊断
  • 故障排查
  • 锁等待分析
  • 死锁分析
  • 内存泄漏排查

Part02-db2pd工具

2.1 基本使用

# 查看实例信息
db2pd -inst

# 查看数据库信息
db2pd -db FGEDB

# 查看所有信息
db2pd -db FGEDB -everything

# 查看应用信息
db2pd -db FGEDB -applications

# 查看事务信息
db2pd -db FGEDB -transactions

# 查看锁信息
db2pd -db FGEDB -locks

# 查看表空间信息
db2pd -db FGEDB -tablespaces

# 查看缓冲池信息
db2pd -db FGEDB -bufferpools

# 查看日志信息
db2pd -db FGEDB -logs

2.2 高级诊断

# 查看锁等待
db2pd -db FGEDB -locks wait

# 查看死锁
db2pd -db FGEDB -deadlocks

# 查看HADR状态
db2pd -db FGEDB -hadr

# 查看内存使用
db2pd -db FGEDB -mempools

# 查看代理进程
db2pd -db FGEDB -agents

# 查看动态SQL
db2pd -db FGEDB -dynamic

# 查看静态SQL
db2pd -db FGEDB -static

# 查看reorg状态
db2pd -db FGEDB -reorgs

# 查看runstats状态
db2pd -db FGEDB -runstats

# 查看备份恢复状态
db2pd -db FGEDB -recovery

# 查看实用程序状态
db2pd -db FGEDB -utilities

Part03-db2diag工具

3.1 日志分析

# 查看诊断日志
db2diag

# 过滤特定数据库
db2diag -db FGEDB

# 过滤特定时间
db2diag -time 2026-04-08-14.00.00

# 过滤特定级别
db2diag -level error

# 过滤特定组件
db2diag -component “buffer pool services”

# 过滤特定进程
db2diag -pid 12345

# 过滤特定线程
db2diag -tid 67890

# 过滤特定函数
db2diag -func “sqlbReadPage”

# 组合过滤
db2diag -db FGEDB -time 2026-04-08 -level error

# 查看最近N条记录
db2diag -last 100

# 持续监控
db2diag -follow

3.2 日志分析脚本

#!/bin/bash
# analyze_diag_log.sh

DIAG_LOG=/db2home/db2inst1/sqllib/db2dump/db2diag.log
OUTPUT_FILE=/db2/logs/diag_analysis_$(date +%Y%m%d).txt

echo “=== DB2 Diagnostic Log Analysis ===” > $OUTPUT_FILE
echo “Date: $(date)” >> $OUTPUT_FILE
echo “” >> $OUTPUT_FILE

# 统计错误数量
echo “Error Count:” >> $OUTPUT_FILE
grep -c “LEVEL: Error” $DIAG_LOG >> $OUTPUT_FILE
echo “” >> $OUTPUT_FILE

# 统计警告数量
echo “Warning Count:” >> $OUTPUT_FILE
grep -c “LEVEL: Warning” $DIAG_LOG >> $OUTPUT_FILE
echo “” >> $OUTPUT_FILE

# 最近10条错误
echo “Recent Errors:” >> $OUTPUT_FILE
grep “LEVEL: Error” $DIAG_LOG | tail -10 >> $OUTPUT_FILE
echo “” >> $OUTPUT_FILE

# 最近10条警告
echo “Recent Warnings:” >> $OUTPUT_FILE
grep “LEVEL: Warning” $DIAG_LOG | tail -10 >> $OUTPUT_FILE
echo “” >> $OUTPUT_FILE

# 死锁信息
echo “Deadlock Information:” >> $OUTPUT_FILE
grep -i “deadlock” $DIAG_LOG | tail -10 >> $OUTPUT_FILE
echo “” >> $OUTPUT_FILE

# 锁等待信息
echo “Lock Wait Information:” >> $OUTPUT_FILE
grep -i “lock wait” $DIAG_LOG | tail -10 >> $OUTPUT_FILE

echo “Analysis completed: $OUTPUT_FILE”

Part04-问题诊断实战

4.1 性能问题诊断

# 1. 查看慢查询
db2pd -db FGEDB -dynamic | grep -A 10 “EXEC_TIME”

# 2. 查看锁等待
db2pd -db FGEDB -locks wait

# 3. 查看缓冲池命中率
db2pd -db FGEDB -bufferpools | grep -A 5 “BP_NAME”

# 4. 查看排序溢出
db2pd -db FGEDB -mempools | grep -A 5 “Sort”

# 5. 查看表空间使用
db2pd -db FGEDB -tablespaces | grep -A 5 “TBSP_NAME”

# 性能诊断脚本
#!/bin/bash
# performance_diagnosis.sh

DBNAME=FGEDB

echo “=== Performance Diagnosis ===”
echo “Time: $(date)”

# 1. 检查缓冲池
echo “1. Bufferpool Status:”
db2pd -db $DBNAME -bufferpools | grep -A 10 “BP_NAME”

# 2. 检查锁等待
echo “2. Lock Waits:”
db2pd -db $DBNAME -locks wait

# 3. 检查慢查询
echo “3. Slow Queries:”
db2pd -db $DBNAME -dynamic | grep -A 5 “EXEC_TIME” | head -20

# 4. 检查排序
echo “4. Sort Status:”
db2pd -db $DBNAME -mempools | grep -A 5 “Sort”

# 5. 检查表空间
echo “5. Tablespace Status:”
db2pd -db $DBNAME -tablespaces | grep -A 5 “TBSP_NAME”

4.2 故障排查

# 1. 查看实例状态
db2pd -inst

# 2. 查看数据库状态
db2pd -db FGEDB

# 3. 查看错误日志
db2diag -db FGEDB -level error -last 50

# 4. 查看挂起的事务
db2pd -db FGEDB -transactions | grep -A 10 “APPHDL”

# 5. 查看挂起的应用
db2pd -db FGEDB -applications | grep -A 10 “APPHDL”

# 故障排查脚本
#!/bin/bash
# fault_diagnosis.sh

DBNAME=FGEDB

echo “=== Fault Diagnosis ===”
echo “Time: $(date)”

# 1. 检查实例
echo “1. Instance Status:”
db2pd -inst

# 2. 检查数据库
echo “2. Database Status:”
db2pd -db $DBNAME

# 3. 检查错误
echo “3. Recent Errors:”
db2diag -db $DBNAME -level error -last 20

# 4. 检查挂起事务
echo “4. Pending Transactions:”
db2pd -db $DBNAME -transactions

# 5. 检查挂起应用
echo “5. Pending Applications:”
db2pd -db $DBNAME -applications

# 6. 检查HADR
echo “6. HADR Status:”
db2pd -db $DBNAME -hadr

# 7. 检查内存
echo “7. Memory Status:”
db2pd -db $DBNAME -mempools

Part05-风哥经验总结与分享

5.1 诊断工具使用要点

  • 熟悉各种诊断工具
  • 掌握常用诊断命令
  • 建立诊断脚本库
  • 定期分析诊断日志
  • 建立问题知识库
  • 持续学习新功能

5.2 诊断建议

问题类型 诊断工具 关键命令
性能问题 db2pd, db2top db2pd -db FGEDB -dynamic
锁问题 db2pd db2pd -db FGEDB -locks wait
故障问题 db2diag db2diag -level error

5.3 运维要点

  • 定期收集诊断数据
  • 定期分析诊断日志
  • 建立诊断脚本库
  • 建立问题知识库
  • 持续优化诊断流程
  • 培训运维人员
更多视频教程www.fgedu.net.cn
学习交流加群风哥微信: itpux-com
风哥Oracle/MySQL/PostgreSQL/Greenplum/DB2/Redis等数据库培训课程,10年一线实战经验,企业级培训,真正掌握数据库核心技术!

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息