WEB开发网
开发学院数据库DB2 DB2 V9.7 锁事件监控 阅读

DB2 V9.7 锁事件监控

 2010-02-04 00:00:00 来源:WEB开发网   
核心提示: 清单 12. 查询锁事件参与者的活动SELECTPARTICIPANT_NO,ACTIVITY_TYPE,substr(STMT_TEXT,1,256)sql_textFROMLOCK_PARTICIPANT_ACTIVITIES;对清单 12 的查询结果,我们重点关注 ACTIVITY_TYP

清单 12. 查询锁事件参与者的活动

 SELECT 
 PARTICIPANT_NO, 
 ACTIVITY_TYPE, 
 substr(STMT_TEXT,1,256) sql_text 
 FROM LOCK_PARTICIPANT_ACTIVITIES; 

对清单 12 的查询结果,我们重点关注 ACTIVITY_TYPE 和 SQL。活动类型取值 current 表示应用正在执行某个 SQL,取值 past 表示该 SQL 已经执行完成。上述查询结果在显示 PARTICIPANT_NO 为 1(与清单 11 查询语句关联,即为应用程序 2)正在执行 Update 语句,PARTICIPANT_NO 为 2(与清单 11 查询语句关联,即为应用程序 1)则已经完成 Update 语句执行。

清单 13. 引起锁等待的 SQL 

 PARTICIPANT_NO ACTIVITY_TYPE SQL_TEXT 
 
 1 current update db2admin.stock set qty=qty+1 where itemno=300 
 2 past update db2admin.stock set qty=qty+1 where itemno=300 

锁超时事件

为避免应用程序处于无限等待状态,我们可以为应用程序设定锁超时。这可以通过修改数据库配置参数 LOCKTIMEOUT 为所有应用程序设置超时时间,也可以通过为特定会话设置 CURRENT LOCK TIMEOUT 特殊寄存器达到这个目的。本文在两个应用程序的命令行中设置 CURRENT LOCK TIMEOUT 特殊寄存器为 30 秒给 APP1 和 APP2 限定超时时间,然后重新执行 Update 语句。为避免与锁等待的事件信息混淆,我们删除事件、删除非格式化表、删除格式化结果表

清单 14. 为 APP1 和 APP2 会话设置锁超时

 db2 "set current lock timeout 30" 

清单 15. 创建锁超时事件

 db2 " drop event monitor LOCKWAITEVM" 
 db2 " drop table LOCKWAITEVM" 
 db2 " drop table LOCK_ACTIVITY_VALUES" 
 db2 " drop table LOCK_EVENT" 
 db2 " drop table LOCK_PARTICIPANTS" 
 db2 " drop table LOCK_PARTICIPANT_ACTIVITIES " 
 db2 create event monitor locktimeout for locking 
 WRITE TO UNFORMATTED EVENT TABLE 
 
 db2 set event monitor locktimeout state 1 

上一页  3 4 5 6 7 8 9 10  下一页

Tags:DB 事件 监控

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