db2haodb
作者db2haodb·2016-07-13 17:28
数据库开发工程师·IGI

通过事件监控器查找锁

字数 2506阅读 1248评论 0赞 0

在DB29.7之前:

 

(1)创建死锁监控器:

1. cd /home/db2inst1

2. mkdir deadlock

3. db2 connect to db1

4. 创建deadlock事件监控器

db2 "create event monitor dlockevm for deadlockswith details history write to file '/home/db2inst1/deadlock' “

5.开启事件监控器

db2 set event monitor dlockevm state=1

 

(2)发生死锁情况。或者模拟一个死锁。

 

(3)死锁结果分析

1. db2 flush event monitor dlockevm

2. 关闭事件监听器:

  db2 set event monitor dlockevm state=0 

3. 监听文件产生:

ls –l

0000000.evt db2event.ct1

4.

db2evmon –path /home/db2inst1/deadlock > deadlock.txt

打开文件deadlock.txt

 

 

 

在DB29.7之后(包括9.7):

9.7引入了新的锁事件监控器 ,

•      用同一个锁事件监控器就可捕获死锁、锁超时和锁等待

•      采用UE表存取锁事件结果,使得分析更简单

•      锁事件监控器的使用包含三个步骤:

•      1. 创建锁事件监控器

•      2. 设置数据收集的类型和级别

•      3. 格式化并分析数据

 

 

步骤:

1. 修改db cfg参数:

 Lock timeoutevents                  (MON_LOCKTIMEOUT) = NONE

 Deadlockevents                         (MON_DEADLOCK) = WITHOUT_HIST

 Lock waitevents                        (MON_LOCKWAIT) = NONE

 Lock wait eventthreshold               (MON_LW_THRESH) =4294967295

(为了简化,此处将前三个都设置为HIST_VALUES)

(1) 捕获死锁事件

   db2 update db cfg using mon_deadlockhist_and_values

(2) 捕获锁超时事件

   db2 update dbcfg using mon_locktimeout hist_and_values

(3) 捕获锁等待事件

   db2 update dbcfg using mon_lw_thresh 5000000

   db2 update dbcfg using mon_lockwait hist_and_values

 

2. create event monitor lockevmon for locking writeto unformatted event table (table locks)

 

3. setevent monitor lockevmon state=1

4. 发生死锁情况。或者模拟一个死锁。

5. 解析,方法一: Java程序(要先编译,参考徐P264)

~> ~/sqllib/java/jdk32/jre/bin/java  db2evmonfmt –d sample –ue locks –ftext –udb2inst1 –p password>db2locks.out

 

6. 解析,方法二: 存储过程

call EVMON_FORMAT_UE_TO_TABLES(

'LOCKING',NULL,NULL,NULL,NULL,NULL,'RECREATE_FORCE',-1,'select * from locks order by event_timestamp‘          )

结果如:

 

7.

 

8.

 

 

 

 

 

 

 

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广