风哥教程参考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 日志分析脚本
# 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 性能问题诊断
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 故障排查
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 运维要点
- 定期收集诊断数据
- 定期分析诊断日志
- 建立诊断脚本库
- 建立问题知识库
- 持续优化诊断流程
- 培训运维人员
学习交流加群风哥微信: itpux-com
风哥Oracle/MySQL/PostgreSQL/Greenplum/DB2/Redis等数据库培训课程,10年一线实战经验,企业级培训,真正掌握数据库核心技术!
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
