WEB开发网
开发学院数据库DB2 实例讲解如何在DB2 UDB中正确的监控死锁 阅读

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

 2008-01-28 16:24:38 来源:WEB开发网   
核心提示: 应用程序B也进入一个锁等待的状态,此时就出现了一个死锁状态,实例讲解如何在DB2 UDB中正确的监控死锁(4), 3. 两个本身处于锁等待并且占有资源的应用程序互相等待另外一方所持有的资源,这时候Session A和Session B就出现了死锁状态,模式以及产生死锁的SQL语句,从而据此

应用程序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:dlmondllog1.txt

分析监控结果

本节我们开始具体分析上一节产生的监控结果,从监控导出的日志文件中,我们可以分析出死锁发生的时间,级别,模式以及产生死锁的SQL语句,从而据此来进一步地修正可能由程序并发设计或者数据库设计所导致的缺陷。

---------------------------------
EVENT LOG HEADER Event Monitor name:
DLMON Server Product ID: SQL08022…… Server instance name: DB2
--------------------------------------
--------------------------------------
Database Name: SAMPLE  Database Path:
C:DB2NODE0000SQL00001  ……------------------3)
Deadlock Event ... Deadlock ID:  1  ……4)
Connection Header Event ... Appl Handle: 949  ……5)
Deadlocked Connection ... Deadlock ID: 
1 Participant no.:
2 Participant no. holding the lock: 1 Appl Id:
G9B56A72.HE13.01B406083205 Appl Seq number: 0001 
Appl Id of connection holding the lock:
G9B56A72.HD13.02CE06083152  …… Deadlock detection
time: 2006-01-06 16:34:27.327582 Table of lock waited on:
EMPLOYEE  (A锁发生的表) Schema of lock waited on:
JT    Tablespace of lock waited on : USERSPACE1 
Type of lock: Row  (A锁级别为行锁) Mode of lock:
X  - Exclusive  (A锁模式为排他锁) Mode application
requested on lock: NS - Share (and Next Key Share)  
(在A排他锁上要求B共享锁,发生死锁)  ……Text:
select name from employee(产生B共享锁的SQL语句) 
List of Locks:  (当前所有锁的列表)……   Lock Name
: 0x020005000D0000000000000052   Lock Attributes: 0x00000008
Release Flags        : 0x40000000   Lock Count
: 1   Hold Count         : 0   Lock Object Name
: 13   Object Type : Row   Tablespace Name: USERSPACE1
Table Schema        : JT      Table Name
: PROJECT   Mode            : X  - Exclusive
(在PROJECT表上有一个排他锁)……   Lock Name:
0x02000300000000000000000054   Lock Attributes:
0x00000000  Release Flags: 0x00000001   Lock Count
: 1   Hold Count         : 0   
Lock Object Name      : 3   Object Type:
Table   Tablespace Name: USERSPACE1   Table Schema:
JT      Table Name: EMPLOYEE   Mode
: IS - Intent Share(在EMPLOYEE表上有一个共享锁) 
Locks Held: 6 Locks in List: 6……9) Table Event... 
Table schema: JT    Table name: EMPLOYEE Record
is the result of a flush: FALSE Table type: User 
Data object pages: 1…… Rows read: 35 Rows written:
1  …… Tablespace id: 2 Table event timestamp:
2006-01-06 16:37:28.972501  (记录EMPLOYEE表上发生的事件)

上一页  1 2 3 4 5  下一页

Tags:实例 讲解 如何

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接