实例讲解如何在DB2 UDB中正确的监控死锁

豆豆网   技术应用频道   2008年01月28日  【字号: 收藏本文

内容摘要:事件监控器提供了一种可以分析历史数据(本文的重点),猜测将来趋势的可能。DB2 UDB同时提供了DB2 Performance Expert (DB2/PE) 或者类似的程序用来生成分析报表,不过这已经超出了本文的范畴。

  1. 首先建立一个死锁事件监控器

Session Monitor
db2 connect to sampledb2 "create event monitor
dlmon for tables, deadlocks with details write
to file 'C:dlmon'"mkdir C:dlmondb2 "
set event monitor dlmon state 1"

  2. 用另外两个应用程序来产生一个死锁

Session A
db2 connect to sampledb2 c "insert into employee values('000350', 'Truman', 'I', 'Jiang',
'B00', '5892','1999-02-21', 'Engineer', 19, 'M',
'1978-06-17', 60000, 2000, 6000)"

  现在应用程序A就拥有了一个EMPLOYEE表的行级别的排他锁

  (注: c 代表不自动提交SQL语句,DB2 中 autocommit 是缺省设置,也可以通过 db2 update command options using c off 关闭该缺省选项。)

Session B
db2 connect to sampledb2 c "insert into project
values('AD3300', 'Dead Lock Monitor', 'B00', '000350',
7.00, '1982-07-21', '1983-02-03', 'AD3111')"

  现在应用程序B就拥有了一个PROJECT表的行级别的排他锁

Session A
db2 c "select projname from project"

  应用程序A需要PROJECT表上所有行的共享锁,但是因为PROJECT表正在被应用程序B以排他锁的形式独占,这时候应用程序1就进入一个锁等待的状态。

Session B
db2 c "select firstnme from employee"

责编:豆豆技术应用

正在加载评论...