[db2inst1@onekey db2detaildeadlock]$ db2 "create event monitor dlock for deadlocks with details history write to file '/onekey/soft/dlock'"
[db2inst1@onekey db2detaildeadlock]$ db2 "select evmonname, EVENT_MON_STATE(evmonname) as state from syscat.eventmonitors"
EVMONNAME STATE
-------------------------------------------------------------------------------------------------------------------------------- -----------
DB2DETAILDEADLOCK 0
DB2DETAILDEADLOCK_2 1
DLOCK 0
[db2inst1@onekey db2detaildeadlock]$ db2 set event monitor dlock state 1
DB20000I The SQL command completed successfully.
[db2inst1@onekey dlock]$ ll
total 8
-rw-r--r-- 1 db2inst1 db2iadm1 282 Oct 16 10:00 00000000.evt
-rw-r----- 1 db2inst1 db2iadm1 31 Oct 16 10:00 db2event.ctl
[db2inst1@onekey db2detaildeadlock]$ db2 flush event monitor dlock
[db2inst1@onekey db2detaildeadlock]$ db2 set event monitor dlock state 0
[db2inst1@onekey dlock2]$ db2evmon -path /onekey/soft/dlock/ > /tmp/1.lock
or
db2inst1@onekey dlock2]$ db2evmon -db fhdbmdb -evm 'dlock' > /tmp/2.lock
http://blog.sina.com.cn/s/blog_68bd10c7010157ri.html
可使用事件监视器来捕获与系统上发生的许多不同事件种类相关的信息。
下表列示系统中发生的以下事件的类型,您可使用事件监视器监视这些事件。它还描述了为不同事件收集的数据的类型以及收集监视数据的时间。第二列中显示的事件监视器的名称与用于使用 CREATE EVENT MONITOR 语句创建该类型的事件监视器的关键字相对应。
要监视的事件的类型 | 事件监视器名称 | 事件监视器属性 | 详细信息 |
---|---|---|---|
锁定和死锁 | LOCKING | 此事件监视器的用途 | 用于确定锁定或死锁的发生时间以及涉及的应用程序。使用 LOCKING 事件监视器而不是建议不要使用的 DEADLOCKS 事件监视器的优点包括整合报告锁定和死锁事件及包含有关锁定等待和锁定超时的信息。 |
收集的数据 | 有关涉及的应用程序的综合信息,包括参与语句(和语句文本)的标识和要挂起的锁定的列表。 | ||
生成事件数据的时间 1 | 检测下列任何事件类型时,根据您配置事件监视器的方式:
| ||
执行 SQL 语句或其他衍生数据库活动的操作。 | ACTIVITIES | 此事件监视器的用途 | 用于跟踪个别语句和其他活动的执行以了解哪些活动正在系统中运行。而且还可用于因为诊断而捕获活动和研究 SQL 的资源消耗。 |
收集的数据 | 活动级别数据,通常对应涉及工作负载管理对象的活动。
| ||
生成事件数据的时间 1 |
| ||
SQL 语句的执行 | STATEMENTS | 此事件监视器的用途 | 用于查看因为执行 SQL 语句对数据库发出了什么请求。 |
收集的数据 | 语句启动或停止时间、使用的 CPU、动态 SQL 的文本、SQLCA(SQL 语句的返回码)及其他度量值,如访存计数。对于分区数据库:使用的 CPU、执行时间、表和表队列信息。 注意:
| ||
生成事件数据的时间 | SQL 语句的结束 2 ;对于分区数据库,子节的结束 2 | ||
工作单元(事务)完成 | UNIT OF WORK | 此事件监视器的用途 | 用于收集在系统上运行的工作单元的资源使用信息和性能指标。此信息可用于的范围包括:从为应用程序使用的系统资源的付款或退款用途生成报告到诊断运行速度缓慢的例程导致的性能问题的用途。 对 TRANSACTIONS 事件监视器的建议。 |
收集的数据 | 有关工作单元(事务)的信息,例如,开始时间和停止时间以及运行这些工作单元的工作负载和服务类。用于包括有关在工作单元中运行的语句的包或可执行标识的信息以及请求度量值的选项。 | ||
生成事件数据的时间 1 | 在工作单元完成之后 | ||
从程序包高速缓存中去除片段 | PACKAGE CACHE | 此事件监视器的用途 | 用于捕获不再在程序包高速缓存中的语句(和相关度量值)的历史记录。如果需要检查内存中不再可用的语句的性能指标,那么可使用此信息。 |
收集的数据 | 包括针对该片段的所有执行聚集的语句文本和度量值。 | ||
生成事件数据的时间 1 | 因为从程序包高速缓存中去除了条目。 | ||
应用程序建立的与数据库的连接 | CONNECTIONS | 此事件监视器的用途 | 用于捕获应用程序建立的与数据库的每个连接的度量值和其他监视元素。 |
收集的数据 | 所有应用程序级别计数器。例如,应用程序连接至数据库或与数据库断开连接的时间,或者涉及该应用程序的锁定升级的数目。 | ||
生成事件数据的时间 | 连接结束 2 | ||
取消激活数据库 | DATABASE | 此事件监视器的用途 | 用于捕获以下度量值和其他监视元素,它们反映激活后有关整个数据库的信息。 |
收集的数据 | 所有数据库级别计数器。例如,自激活后与数据库建立的连接数、等待锁定所耗用的时间或插入的数据行数。 | ||
生成事件数据的时间 | 数据库取消激活 2 | ||
BUFFERPOOLS TABLESPACES | 此事件监视器的用途 | 用于捕获与缓冲池和表空间相关的度量值 | |
收集的数据 | 缓冲池、预取程序、页清理程序和每个缓冲池的直接 I/O 的计数器。 | ||
生成事件数据的时间 | 数据库取消激活 2 | ||
TABLES | 此事件监视器的用途 | 用于捕获与数据库激活后更改的表有关的度量值。 | |
收集的数据 | 表级别计数器,例如,读取或写入的行数,或数据、LOB 或索引对象使用的磁盘页数。 | ||
生成事件数据的时间 | 数据库取消激活 2 | ||
有关工作负载管理对象的统计信息和度量值 | STATISTICS | 此事件监视器的用途 | 用于捕获与数据库中的工作负载管理对象(例如,服务超类或工作负载)相关的处理度量值。例如,可使用统计信息事件监视器来检查给定工作负载随时间变化的 CPU 利用率。 |
收集的数据 | 从在系统中每个服务类、工作负载或工作类内执行的活动计算而来的统计信息。 | ||
生成事件数据的时间 | 可按固定时间间隔自动收集统计信息。此时间间隔是使用 wlm_collect_int 数据库配置参数定义的。 还可使用 WLM_COLLECT_STATS 存储过程手动收集数据。 注: 通过任一收集机制,统计信息监视元素的值在发生收集后重置为 0。 | ||
超过工作负载管理器阈值 | THRESHOLD VIOLATIONS | 此事件监视器的用途 | 用于确定数据库操作期间何时超过您设置的特定阈值。可对各种对象(范围从 CPU 时间、数据库连接数到特定语句的执行)设置阈值。所收集数据可用于各种用途,包括监视潜在问题(例如,达到对临时表空间的限制)。 |
收集的数据 | 阈值违例信息。 | ||
生成事件数据的时间 | 检测到阈值违例时。阈值是使用 CREATE THRESHOLD 语句定义的。 | ||
对数据库或数据库管理器配置的更改 | CHANGE HISTORY | 此事件监视器的用途 | 捕获对数据库和数据库管理器配置的更改、对注册表设置的更改、DDL 语句的执行和实用程序的执行 |
收集的数据 | 数据库配置参数和数据库管理器配置参数更改、注册表变量更改、DDL 语句的执行、某些 DB2® 实用程序和命令的执行以及变更历史记录事件监视器启动。 注: 通常,不会捕获在变更历史记录事件监视器处于不活动状态或数据库脱机时发生的事件的相关信息。但是,会记录对注册表变量和配置参数的更改。 | ||
生成事件数据的时间 1 | 监视器启动期间,参数或变量发生更改的时间或命令、DDL 或实用程序的完成时间。 | ||
注意:
|
要监视的事件的类型 | 事件监视器名称 | 事件监视器属性 | 详细信息 |
---|---|---|---|
死锁 | DEADLOCKS 2 | 此事件监视器的用途 | 用于确定死锁的发生时间以及涉及的应用程序。 |
收集的数据 | 涉及的应用程序及处于争用状态的锁定。 | ||
生成事件数据的时间 | 死锁检测 | ||
DEADLOCKS WITH DETAILS 2 | 此事件监视器的用途 | 用于确定死锁的发生时间以及涉及的应用程序。 | |
收集的数据 | 有关涉及的应用程序的综合信息,包括参与语句(和语句文本)的标识和要挂起的锁定的列表。如果使用 DEADLOCKS WITH DETAILS 事件监视器而不是 DEADLOCKS 事件监视器,那么会导致发生死锁时性能下降,原因是收集了其他的信息。 | ||
生成事件数据的时间 | 死锁检测 | ||
DEADLOCKS WITH DETAILS HISTORY 2 | 此事件监视器的用途 | 用于确定死锁的发生时间以及涉及的应用程序。 | |
收集的数据 | DEADLOCKS WITH DETAILS 事件监视器中报告的所有信息以及每个应用程序的当前工作单元的语句历史记录, 这些应用程序拥有的锁定参与了挂起该锁定的数据库分区的死锁方案。如果使用 DEADLOCKS WITH DETAILS HISTORY 事件监视器,那么会导致激活时性能轻微下降,原因是进行了语句历史记录跟踪。 | ||
生成事件数据的时间 | 死锁检测 | ||
DEADLOCKS WITH DETAILS HISTORY VALUES 2 | 此事件监视器的用途 | | |
收集的数据 | 带有详细信息的死锁历史记录中报告的所有信息,以及在执行语句时对所有参数标记提供的值。如果使用 DEADLOCKS WITH DETAILS HISTORY VALUES 事件监视器,那么会导致激活时性能较为严重的下降,原因是额外复制数据值。 | ||
生成事件数据的时间 | 死锁检测 | ||
工作单元(事务)完成 | TRANSACTIONS 3 | 此事件监视器的用途 | |
收集的数据 | UOW 工作启动或停止时间、先前的 UOW 时间、耗用的 CPU 以及锁定和记录度量值。如果使用 XA 运行,那么不会生成事务记录。 | ||
生成事件数据的时间 | 工作单元完成时 1 | ||
注意:
|
注: 将为每个新创建的数据库创建详细的死锁事件监视器。此事件监视器称为 DB2DETAILDEADLOCK,将在激活数据库时启动,并且写至数据库目录中的文件。可通过删除此事件监视器来避免它需要的额外处理器时间。建议不要使用 DB2DETAILDEADLOCK 事件监视器。建议不要再使用此选项,将来的发行版可能会将其移除。请使用 CREATE EVENT MONITOR FOR LOCKING 语句来监视与锁定相关的事件,例如锁定超时、锁定等待和死锁。
文件或管道事件监视器的输出是一个逻辑数据分组二进制流。可使用 db2evmon 命令从命令行格式化此数据流。 此高效工具从事件监视器的文件或管道读取事件记录,然后将它们写至屏幕(标准输出)。
开始之前
除非连接至数据库,否则不需要任何权限,如果连接至数据库,那么需要具有下列其中一个权限:
-
SYSADM
-
SYSCTRL
-
SYSMAINT
-
DBADM
关于此任务
可通过提供事件文件的路径或提供数据库名称和事件监视器名称,以指示想要格式化的事件监视器输出。
过程
要格式化事件监视器输出:
-
指定包含事件监视器文件的目录:
db2evmon -path '/tmp/dlevents'
/tmp/dlevents 表示(UNIX)路径。
-
指定数据库和事件监视器名称:
db2evmon -db 'sample' -evm 'dlmon'
sample 表示事件监视器所属的数据库。
dlmon 表示事件监视器。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26224914/viewspace-2216503/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26224914/viewspace-2216503/