监控 DB2 活动之捕获事件监控数据(2)

http://www.itjxue.com  2015-08-21 22:26  来源:未知  点击次数: 

  启动和停止事件监控器

 

  若您在创建事件监控器时,指定了 AUTOSTART 选项,监控器将于包含事件监控器的数据库启动时自动启动。(在使用 ACTIVATE DATABASE 命令激活或第一个与数据库的连接建立起来时,数据库就会启动。)若您使用了 MANUALSTART 选项或未指定任何选项(在这种情况下,默认使用 MANUALSTART),则得到的事件监控器在启动之前不会收集任何监控数据。事件监控器可通过执行 SET EVENT MONITOR SQL 语句启动(和停止)。该语句的基本语法是:

  SET EVENT MONITOR [MonitorName] STATE <=> [MonitorState]

  其中,MonitorName 表示状态将被更改的事件监控器的名称,MonitorState 表示将被设置的特定事件监控器的状态。要启动事件监控器(也就是说,将其置于 “活动” 状态),您必须为 MonitorState 参数指定 1 值。要停止事件监控器(也就是说,将其置于 “非活动” 状态),则需指定 0 值。

  假设您希望启动一个名为 CONN_EVENTS 的事件监控器,该事件监控器在创建时使用了 MANUALSTART 选项。可通过以下语句完成这一任务:

  SET EVENT MONITOR CONN_EVENTS STATE 1

  另一方面,如果您希望停止 CONN_EVENTS 事件监控器,可执行以下语句:

  SET EVENT MONITOR CONN_EVENTS STATE 0

  另外一种启动和停止事件监控器的方法是:在 Control Center 中高亮显示恰当的事件监控器名称,并在 Event Monitors 菜单选择一个活动(Start Event Monitoring 或 Stop Event Monitoring)。

  SQL 函数 EVENT_MON_STATE 可用于确定任何为一个数据库定义的事件监控器的当前状态。此函数必须在一个查询中使用,如下所示:

  SELECT EVENT_MON_STATE('CONN_EVENTS') FROM SYSIBM.SYSDUMMY1

  (在本示例中,表 SYSIBM.SYSDUMMY1 是一个空表,通常是作为占位符使用的。)

  启动之后,事件监控器即安静地在后台运行,等待该监控器设计用于监控的事件或事务之一发生。当此类事件或事务出现时,事件监控器将收集所有恰当的监控数据,并将其写入监控器的输出目标位置(表、目录或命名管道)。事件或事务本身控制收集监控数据的时机,DBA 不需执行任何额外的操作(这与使用快照监控器的情况不同)。

  强制事件监控器生成输出

  有时,记录生成频率较低的事件监控器(例如为监控 DATABASE 事件而设计的监控器)可包含某些位于内存中的事件监控数据,这些数据尚未写入事件监控器的目标位置(由于仅存在一条部分事件记录)。为检查事件监控器的活动内部缓冲区的内容,可执行 FLUSH EVENT MONITOR SQL 语句。该语句的基本语法是:

  FLUSH EVENT MONITOR [MonitorName]

  其中,MonitorName 表示您希望强制其将活动内部缓冲区的内容写入目标位置的事件监控器(以名称表示)。

  要强制一个名为 CONN_EVENTS 的事件监控器将其活动内部缓冲区的内容写入目标位置,可执行 FLUSH EVENT MONITOR 语句,如下所示:

  FLUSH EVENT MONITOR CONN_EVENTS

  默认情况下,已写入事件监控器目标位置的记录会过早地记录到事件监控器的日志中,并被指派给一个部分记录标识符。但若您在执行 FLUSH EVENT MONITOR 语句时指定了 BUFFER 选项,则仅将事件监控器活动内部缓冲区中显示的监控数据写入事件监控器的目标位置。不会将任何部分记录记入事件监控器日志。

  务必注意,刷新事件监控器,计数器并不会重置。因而在事件监控器被正常触发时,即便 FLUSH EVENT MONITOR 语句尚未执行,应该生成的事件监控记录依然会生成。

  查看事件监控数据

  在上文中,您已经了解到事件监控数据可写入以下三个位置之一:

  •   文件。事件监控器输出可写入一个或多个文件。有两个参数控制可用空间容量(MAXFILESIZE and MAXFILES),一旦达到空间容量极限,事件监控器将自动刷新所有事件,并自行停止。两个参数的默认设置均为 NONE,这表示没有任何空间容量限制。
  •   管道。事件监控器输出可写入命名管道。必须供管道的名称,但在创建事件监控器时,命名管道本身不必存在。但在事件监控器被激活时,命名管道必须已存在。
  •   表。事件监控器输出可写出到数据库中已有的一个或多个表。事件监控器中的各监控元素映射到同名表中。各单独事件的数据将被插入适当的表中,作为单独的一行。

  有时,您可能希望查看一个事件监控器已收集到的数据。若收集到的数据写入命名管道,则通常由管道接收端的应用程序负责显示接收到的监控数据。若收集到的数据写入表或一组文件中,您可使用 Event Analyzer 及事件监控器生产力工具这两种特殊实用工具之一来查看数据。

  Event Analyzer 是一种 GUI 工具,要激活此工具,在 Control Center 中高亮显示所需事件监控器,并从 Event Monitors 菜单中选择恰当的活动即可;也可执行 db2eva 命令。激活之后,Event Analyzer 将使您深入研究及查看特定事件监控器捕获的信息。图 1 展示了 Event Analyzer 在首次被激活时的典型外观。

  图 1. Event Analyzer

  Event Analyzer

  Event Analyzer 仅可用于查看收集并存储在数据库表中的事件监控数据。要查看写入文件(和命名管道)中的事件监控数据,您必须使用基于文本的事件监控器生产力工具,此工具将从事件监控器数据文件或命名管道中检索信息,并生成一份格式化的报告。(事件监控器文件和命名管道包含逻辑数据分组的二进制流,必须首先予以格式化,然后才能显示。)

  为激活事件监控器生产力工具,可执行 db2evmon 命令。该命令的基本语法如下所示:

  db2evmon -db [DatabaseAlias] -evm [MonitorName]

  其中,DatabaseAlias 表示定义了要显示其数据的事件监控器的数据库(按别名形式表示);MonitorName 表示要显示其数据的事件监控器的名称。

  或:

  db2evmon -path [MonitorTarget]

  其中,MonitorTarget 表示指定事件监控器已收集的数据所存储的位置(目录或命名管道)。

  例如,要格式化并显示名为 CONN_EVENT 的事件监控器收集到的所有数据,且此事件监控器是在名为 SAMPLE 的数据库中定义的,可执行以下命令(假设监控数据写入一个文件):

  db2evmon -db SAMPLE -evm CONN_EVENTS

  假设使用以下 SQL 语句创建了名为 CONN_EVENTS 的事件监控器:

  CREATE EVENT MONITOR CONN_EVENTS FOR CONNECTIONS WRITE TO FILE 'C:\MONDATA' AUTOSTART

  再假设已经有一个应用程序建立了与 SAMPLE 数据库的连接(这致使事件监控器开始捕获并生成监控数据),那么在使用事件监控器生产力工具来检查数据时,生成的输出结果形式如下。

(责任编辑:IT教学网)

更多

推荐数据库文章