IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Information Management  >

DB2 Express-C 9 DBA 和开发人员实验教程,快速实验 17

为死锁创建事件监视器

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


developerWorks 中国网站编辑团队, 编辑, IBM

2008 年 7 月 15 日

事件监视器可以收集数据库活动事件(连接、死锁、语句等等)的相关信息。在本次实验中,将为死锁创建一个事件监视器并模拟一个死锁场景。可以按照相同的步骤创建任何类型的监视器。您还将体验 DB2 Command Line Processor 和 Event Analyzer 工具。

目标

事件监视器可以收集数据库活动事件(连接、死锁、语句等等)的相关信息。在本次实验中,将为死锁创建一个事件监视器并模拟一个死锁场景。可以按照相同的步骤创建任何类型的监视器。您还将体验 DB2 Command Line Processor 和 Event Analyzer 工具。





回页首


前提条件





回页首


步骤

IBM 为社区提供了 DB2 免费版本 DB2 Express-C,它提供了与 DB2 Express Edition 相同的核心数据特性,为构建和部署应用程序奠定了坚实的基础。

DB2 Express-C

1.打开 “控制中心”。

2.展开 EXPRESS 数据库的对象树并右击“事件监视器” (Event Monitors)文件夹。选择 “创建”菜单项。


图 1. 打开“创建事件监视器”菜单项
打开'创建事件监视器'菜单项

3.在“创建事件监视器” 对话框中,为要创建的事件监视器指定以下信息:

名称:DeadlockMonitor

复选框:Deadlocks(with details)(死锁)

Start Now(立即启动)


图 2. 设置“事件监视器”选项
设置'事件监视器'选项

单击“确定”按钮创建事件监视器。在“控制中心”中,选择对象树中的“事件监视器”文件夹。应该会看到这个事件监视器处于“已启动”(Started)状态。


图 3. 确认事件监视器已启动
确认事件监视器已启动

4.模拟一个死锁场景。打开两个单独的命令行 DB2 Command Line Processor(CLP)窗口。打开 CLP 窗口的方法是选择 “开始” 〉“程序” 〉IBM DB2 > (命令行工具)Command Line Tools > (命令行处理器)Command Line Processor。

5.在第一个窗口中,执行以下命令(在每个命令后面按回车):


清单 1. 模拟一个死锁场景1
                
UPDATE COMMAND OPTIONS USING c OFF
(注意:这会关闭自动提交。)
CONNECT TO EXPRESS
CREATE TABLE deadtable (c1 INTEGER)
COMMIT
INSERT INTO deadtable VALUES (1)


图 4. 死锁场景1
死锁场景1

6.在第二个窗口中,执行以下命令:


清单 2. 模拟一个死锁场景2
                
UPDATE COMMAND OPTIONS USING c OFF
(注意:这会关闭自动提交。)
CONNECT TO EXPRESS
INSERT INTO deadtable VALUES(2)
SELECT * FROM deadtable
(您会看到光标标不动动了。)


图 5. 死锁场景2
死锁场景2

7.在完成第 6 步之后,等待大约 15 秒。然后,在第一个窗口中,执行以下命令:

SELECT * FROM deadtable


图 6.在第一个窗口中执行命令
在第一个窗口中执行命令

8.这时会发生死锁,因为第一个窗口和第二个窗口都在等待对方释放锁,必须让其中一个应用程序回滚,才能打破锁冲突。DB2 死锁监视器进程会在 10 秒内选择一个应用程序并使它回滚;10 秒是默认设置,可以通过数据库配置参数 DLCHKTIME 来设置。一个窗口将返回查询结果,另一个窗口将返回死锁消息。


图 7. 第二窗口返回死锁信息
第二窗口返回死锁信息

9.分析事件监视器信息。在“控制中心”中,展开“事件监控器”(Event Monitors) 文件夹并右键单击您创建的事件监视器对象。选择“停止事件监控” (Stop Event Monitoring 菜单项。


图 8. 停止事件监视
停止事件监视

10.再次右键单击事件监视器对象并选择“分析事件监视记录” (Analyze Event Monitor Records 菜单项。这会启动“监视分析器” (Event Analyzer) 工具。


图 9. 启动监视分析器
启动监视分析器

11.在第一个屏幕上,会看到发生的事件的列表。这里应该有一个事件(刚才模拟的死锁事件)。为了详细了解这个事件,可以使用分析工具执行一系列信息探索。

12.因为正在寻找死锁信息,所以首先检查 Deadlocks(死锁)(在下拉列表中选择 Deadlocks)。


图 10. 查看死锁信息
查看死锁信息

13.在这个视图中,应该会看到记录的一次死锁的信息。为了看到死锁涉及的连接,应该进一步探索 Deadlock Connections(死锁连接)。在下拉列表中选择 Deadlock Connections


图 11. 查看死锁连接信息
查看死锁连接信息

14.现在应该会看到死锁涉及的两个应用程序 ID。滚动屏幕可以看到关于应用程序的更多信息。


图 12. 查看死锁连接更多信息
查看死锁连接更多信息

15.为了看到关于每个连接的详细信息,比如死锁发生时执行的 SQL 语句,在下拉列表中选择 Data Elements (数据元素)


图 13. 查看死锁连接涉及的数据元素
查看死锁连接涉及的数据元素

16.如您所见,这个工具非常有用,可以提供判断事件原因所需的信息。可以根据找到的信息采取纠正措施。





回页首


参考资源



关于作者

developerWorks 中国网站编辑团。




对本文的评价










回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款