实例讲解如安在DB2 UDB中正确的监控弃世锁2

 

若何监控弃世锁

为了详尽申明事情监控器在弃世锁监控中的用途,我引入了一个简单的弃世锁场景来触发一个弃世锁,在随后的章节,我会申报读者若何答理监控结果以及凭证结果来克制弃世锁的爆发。

这里我们需要至少三个使用法式来调用DB2 CLI,一个用来监控弃世锁的爆发,其它两个用来孕育爆发弃世锁。我们可以运用DB2 UDB 安装时附带的SAMPLE数据库。

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"
使用法式B也进入一个锁期待的形态。此时就出现了一个弃世锁形态。

3. 两个自身处于锁期待并且占有资源的使用法式互相期待其它一方所持有的资源,这时分Session A和Session B就出现了弃世锁形态,这种形态不休会继承直到弃世锁反省器(凌驾DLCHKTIME工夫以后)反省出一个弃世锁并且回滚此中的一个事务。
Session B
SQLN0991N 由于弃世锁可能超时,以后事务已经被回滚。缘由码为 "2". SQLSTATE=40001这时分弃世锁事情监控器就会记实这个弃世锁,同时使用法式A可以完成他的任务。

Session A
PROJNAME----------……20 条记实已选择
Session A
db2 connect reset
Session B
db2 connect reset

4. 经由进程 db2evmon 器材可以获得弃世锁信息的日记,并且把日记文件导入到本地凝滞的文件琐屑傍边。在上面一节,我们将详尽答理导出的日记文件。

Session Monitordb2 connect resetdb2evmon
-path c:\dlmon > c:\dlmon\dllog1.txt
 
 
来自: 新客网(www.xker.com) 详文参考:http://www.xker.com/page/e2008/0128/46637_2.html


版权声明: 原创作品,承诺转载,转载时请务必以超链接体例标明文章 原始情由 、作者信息和本声明。否则将深究轨则责任。

原文地址:https://www.cnblogs.com/zgqjymx/p/1975419.html