[ 来源:http://www.it55.com | 作者: | 时间:2007-12-03 | 收藏 | 推荐 ] 【大 中 小】
事件监控器
DB2数据库快照监控器提供了一种捕获并记录实例或数据库在特定时间点的状态信息的方法。与之不同,事件监控器在特定事件或事务发生时收集监控数据。事件监控器提供了一种在发生了无法使用快照监控器监控的事件或活动时收集数据的途径。
例如,假设您希望只要出现死锁循环,就捕获监控数据。若您熟知死锁的概念,就会了解,一种称为死锁探测器(守护程序)的特殊进程默默地在后台运行,按预定义的时间间隔 “苏醒” 过来,在锁定系统中扫描死锁循环。如果找到了一个死锁循环,死锁探测器随机选择、回滚并终止此循环涉及到的一个事务。从而使被选中的事务接收到一个 SQL 错误代码,所有为此事务而获得的锁都将被释放,以便使其余事务得到处理。这样一系列的事件无法被快照监控器捕获,这是因为往往在死锁循环发生了很长时间以后,才能捕获快照。而事件监控器将在探测到死锁循环时立即激活,因而能捕获诸如此类事件的重要信息。
两种监控器之间还有另外一个显著的差异:快照监控器作为后台进程而存在,一旦建立起到数据库的连接,就立即开始捕获监控数据。反之,事件监控器在使用之前必须明确创建。可以存在多个不同的事件监控器,各事件监控器仅在特定类型的事件或事务发生时被激活。表 3 展示了可导致事件监控器被激活的事件类型,另外还列出了为各事件类型收集的监控数据类型。
表3. 事件类型和为各类型收集的数据
| 事件类型 | 所收集的数据 | 何时收集数据 | 关联组(目标表)名称 |
|---|---|---|---|
| DATABASE | 所有数据库级计数器的值 | 数据库被取消激活状态时,或在最后一个连接到数据库的应用程序断开时 | DB、CONTROL |
| BUFFERPOOLS | 各缓冲池所用的全部缓冲池计数器、预获取器和页面清除器的值,以及直接 I/O | 在数据库被取消激活状态时,或在最后一个连接到数据库的应用程序断开时 | BUFFERPOOL、CONTROL |
| TABLESPACES | 各表空间所用的全部缓冲池计数器、预获取器和页面清除器的值,以及直接 I/O | 在数据库被取消激活状态时,或在最后一个连接到数据库的应用程序断开时 | TABLESPACE、CONTROL |
| TABLES | 各表读取及写入的行数 | 在数据库被取消激活状态时,或在最后一个连接到数据库的应用程序断开时 | TABLE、CONTROL |
| DEADLOCKS | 关于所涉应用程序的全面信息,包括涉及的全部 SQL 语句的标识(及语句文本)以及各语句具有的锁列表 | 探测到死锁循环时 | CONNHEADER、DEADLOCK、DLCONN、DLLOCK、CONTROL |
| CONNECTIONS | 所有应用程序级计数器的值 | 一个连接到数据库的应用程序断开时 | CONNHEADER、CONN、CONTROL |
| STATEMENTS | 语句的开始/停止时间、CPU 占用量、动态 SQL 语句的文本、SQLCA(SQL语句的返回代码),以及获取数量等指标。对于分区的数据库:CPU 占用量、执行时间、表信息、表队列信息 | SQL 语句执行完毕时;对于分区的数据库,则为 SQL 语句的子段执行完毕时 | CONNHEADER、STMT、SUBSECTION、CONTROL |
| TRANSACTIONS | 事务开始/结束时间、前一事务处理时间、CPU 占用量,以及锁定和日志记录指标(若数据库使用分为两个阶段的提交处理和 X/Open XA Interface,则不生成事务记录) | 事务处理终止时(通过 COMMIT 或 ROLLBACK 语句) | CONNHEADER、XACT、CONTROL |
创建事件监控器
您可在 Control Center 中(从 Event Monitors 菜单中选择 Create Event Monitor)直接创建事件监控器,也可通过执行 CREATE EVENT MONITOR SQL 语句创建。此语句的基本语法是:
CREATE EVENT MONITOR [Name]
FOR [DATABASE | BUFFERPOOLS | TABLESPACES | TABLES | DEADLOCKS
CONNECTIONS
STATEMENTS
TRANSACTIONS
WRITE TO [TABLE [GroupName] (TABLE [TableName]) | PIPE [PipeName] | FILE [DirectoryName]]
[MANUALSTART | AUTOSTART]
其中:
(编辑:IT资讯之家 www.it55.com)