利用DB2事件监控语句执行情况

原创 2011年01月21日 09:25:00

DB2提供了一个创建事件监听的功能,用于检查数据库的日常运行情况,这里给出一个对于日常开发我认为最有用的监听——STATEMENT,它的好处就是不必逐行逐行的读代码,直接从应用的操作所产生的数据变化来理解业务。

-- 连接数据库
db2 "connect to 【dbname】"
-- 创建事件监听
db2 "create event monitor stmtmon for statements write to file '/home/【login_username】/'"
-- 启动事件监听
db2 "set event monitor stmtmon state=1"

--
-- 切换至应用程序进行数据库操作
--

-- 停止事件监听
db2 "set event monitor stmtmon state=0"
-- 删除事件监听
db2 "drop event monitor stmtmon"
-- 结束连接
db2 "terminate"
-- 整理监听内容
db2evmon -db 【dbname】 -evm stmtmon </home/【login_username】/sqltrace.out
-- 去除SELECT语句
grep -E 'Text +:' ./sqltrace | grep -v -i 'SELECT' | uniq > dml.sql.out

下面是一小部分输出内容:

  Text     : UPDATE xxx SET NOTREAD=1 WHERE id=730927
  Text     : INSERT INTO yyy(asign_id, taskcause, comments, submitter) VALUES(730927, 1, '', 93)
  Text     : UPDATE xxx SET NOTREAD=1 WHERE id=730927
  Text     : UPDATE xyz SET needappr=2178.38 WHERE idtask = 730927

在启动监听的时候,最常见的就是目录路径与读写权限的问题,以下内容可供参考,根据错误返回码做对应调整即可。

PS:
http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=/com.ibm.db2.luw.messages.sql.doc/doc/msql01614n.html
SQL1614N
An I/O error occurred when activating an event monitor. Reason code = reason-code.

Explanation
An I/O error was detected when an event monitor was activated. >reason-code< is one of the following:
1
Encountered an unknown event monitor target type.
2
The Event monitor target path was not found.
3
Access to event monitor target path was denied.
4
Event monitor target path is not the name of a pipe.
5
No process has opened the event monitor target pipe for reading.
6
Encountered an unexpected I/O error.
User response
Where possible, fix the problem described by the reason code, and resubmit the SET EVENT MONITOR statement.

sqlcode: -1614

sqlstate: 58030

参考文档:Tuning DB2 Universal Database Using the Statement Event Monitor

DB2中使用事件监控器抓取锁超时、死锁信息

锁事件监控器可以抓取死锁、锁超时事件,包含这些事件发生时应用正在执行的SQL语句。 具体的介绍可以参考下面的官方文档: http://www.ibm.com/developerworks/cn/da...
  • qingsong3333
  • qingsong3333
  • 2016年04月21日 10:13
  • 1980

DB2中使用事件监控器获取某个时间段里某个用户执行的SQL语句

需求:管理员想要监控在一段时间里,用户DB2TEST跑过哪些SQL语句,这个在DB2中如何做到? 答: 可以采用事情监控器: 测试过程: 1.) 管理员用户连库、创建事情监控器,并运行,下面的...
  • qingsong3333
  • qingsong3333
  • 2016年05月26日 13:24
  • 1407

DB2日志控制文件作用及位置

DB2日志控制文件 作用:  当db2因意外情况而发生Crash时,启动时需要做crash recovery,即重做日志,这时DB2就需要用到日志控制文件确定重做日志中的哪些条目。这是日志控制文件的主...
  • qingsong3333
  • qingsong3333
  • 2017年02月25日 15:26
  • 626

DB2活动日志满的原因、分析、处理与避免

下面的过程显示了如何查看DB2日志使用百分比,如何找到占用最老日志的进程并发现其执行的SQL语句,最后force掉这个进程以释放日志 1.)查看日志使用百分比 $ db2 "select TOTA...
  • qingsong3333
  • qingsong3333
  • 2016年03月22日 18:06
  • 2628

正确地打开DB2的监控开关(monitor switches)

[问题]  db2中,为什么抓取snapshot 的时候,有些条目显示的是 Not Collected? 比如: Most recent operation stop timestamp       ...
  • qingsong3333
  • qingsong3333
  • 2015年12月02日 12:21
  • 3190

DB2中使用事件监控器获取某个时间段里某个用户执行的SQL语句

需求:管理员想要监控在一段时间里,用户DB2TEST跑过哪些SQL语句,这个在DB2中如何做到? 答: 可以采用事情监控器: 测试过程: 1.) 管理员用户连库、创建事情监控器,并运行,下面的...
  • qingsong3333
  • qingsong3333
  • 2016年05月26日 13:24
  • 1407

常见DB2锁等待解决流程

以下内容摘录自《DB2性能调整和优化》一书锁一章,如果转载务必指明出处!   锁等待是实际生产中最常碰到的性能问题,下面我们总结了锁等待问题的解决流程和步骤。现在的情况是一个应用系统中出现很多锁等...
  • starryheavens
  • starryheavens
  • 2017年04月06日 16:27
  • 1396

DB2如何开启不记日志(not logged)模式

DB2如何开启不记日志模式?开启之后,会有哪些后果? 有些DB2操作,比如insert/update/delete/import,若数据量较大,则会占用大量日志,甚至导致日志满。如果需要的话,可...
  • qingsong3333
  • qingsong3333
  • 2017年02月27日 18:55
  • 1385

正确地打开DB2的监控开关(monitor switches)

[问题]  db2中,为什么抓取snapshot 的时候,有些条目显示的是 Not Collected? 比如: Most recent operation stop timestamp       ...
  • qingsong3333
  • qingsong3333
  • 2015年12月02日 12:21
  • 3190

DB2中使用事件监控器抓取锁超时、死锁信息

锁事件监控器可以抓取死锁、锁超时事件,包含这些事件发生时应用正在执行的SQL语句。 具体的介绍可以参考下面的官方文档: http://www.ibm.com/developerworks/cn/da...
  • qingsong3333
  • qingsong3333
  • 2016年04月21日 10:13
  • 1980
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用DB2事件监控语句执行情况
举报原因:
原因补充:

(最多只允许输入30个字)