DB2 锁问题的监控和解决

常见的锁问题包括:

锁等待

锁超时

锁升级

死锁

而根据问题的特性通常分为两种:

实时事件:问题正在发生

历史事件:问题已经过去

如果实时事件,DBA 可以通过查看表信息、GET SNAPSHOT 或者 db2pd/db2top 查看数据库当前的锁状况;这毕竟少数,往往锁问题都是历史事件,应用通过查看日志才发现存在锁问题,这种情况下,需要数据库本身对锁事件进行监控,如果发生收集相关的信息,方便DBA去分析。

 
数据库版本 实时事件监控工具 历史事件监控工具
V9 之前的版本 表函数 SNAP_GET_LOCKWAIT/GET SNAPSHOT FOR LOCKS db2cos
V9.1 新增管理视图 SYSIBMADM. SNAPLOCKWAIT db2cos
V9.5   db2cos
V9.7   事件监控/db2cos
     

 

通过事件监控抓取锁信息

配置方法

1. 创建事件监控(create event monitor)

1.1 创建bufferpool

1.2 创建临时表空间

1.3 创建事件监控

2. 配置数据库相关参数

事件监控类型 相关数据库参数
锁等待事件监控 MON_LOCKWAIT,MON_LW_THRESH                                                                                                                                       
锁超时事件监控 MON_LOCKTIMEOUT,LOCKTIMEOUT
死锁事件监控 MON_DEADLOCK,DLCHKTIME

 

数据库参数 参数详解
MON_LOCKWAIT 设置锁事件监控对锁信息收集的详细程度,值包括:NONE,WITHOUT_HIST, WITH_HIST,HIST_AND_VALUES;
MON_LOCKTIMEOUT 同MON_LOCKWAIT, 同时参数LOCKTIMEOUT
MON_DEADLOCK 同MON_LOCKWAIT
MON_LW_THRESH 设置锁等待发生的时间阀值,超过该值将会触发锁等待事件监控,单位微妙

参数配置命令:

db2 update db cfg using MON_LOCKTIMEOUT HIST_AND_VALUES 
 MON_DEADLOCK HIST_AND_VALUES MON_LOCKWAIT HIST_AND_VALUES 
 MON_LW_THRESH 5000000 
原文地址:https://www.cnblogs.com/DBA-Ivan/p/7929884.html