使用事件监视器
通常,对于所有事件监视器类型,创建和使用事件监视器以在某些事件发生时捕获有关系统的信息的过程都很相似。首先,创建事件监视器,然后启用数据收集,最后访问收集的数据。
关于此任务
过程
要使用事件监视器来捕获事件信息,请执行以下操作:
- 创建事件监视器。 要创建事件监视器,请使用适当版本的 CREATE EVENT MONITOR 语句。创建事件监视器时,必须选择如何记录该事件监视器收集的数据。所有事件监视器都可将其输出写至关系表;但是,根据您的特定用途,有一些不同选项可能更为适合。
- 激活事件监视器。 要激活事件监视器,请使用 SET EVENT MONITOR STATE 语句。例如,对于名为 capturestats 的事件监视器,请使用以下命令:
要关闭事件监视器进行的数据收集,请使用以下语句:SET EVENT MONITOR capturestats STATE 1SET EVENT MONITOR capturestats STATE 0缺省情况下,一些事件监视器在数据库激活时自动激活;其他事件监视器需要您手动激活。但是,使用 AUTOSTART 选项创建的事件监视器直到下次数据库激活时才会自动激活。使用 SET EVENT MONITOR STATE 语句可强制最新创建的事件监视器进入活动状态。要确定事件监视器是否自动启动,请参阅相关 CREATE EVENT MONITOR 语句的参考信息。 - 启用数据收集。(仅适用于 LOCKING、ACTIVITIES、STATISTICS, UNIT OF WORK 和 PACKAGE CACHE
事件监视器) 启用数据收集包括配置数据库管理器以收集事件监视器记录的特定类型的数据。
并非所有事件监视器都需要启用数据收集;对于不需要启用数据收集的事件监视器(例如,TABLE 事件监视器),创建并激活它们足以收集数据。阈值违例事件监视器也会自动启动数据收集;但是,在这种情况下,还必须使用 CREATE THRESHOLD 语句来定义要针对其捕获数据的阈值。
对于需要启用数据收集的那些事件监视器,系统为您提供了不同选项。根据要使用的事件监视器的类型,可设置数据库配置参数以在整个数据库中启用数据收集。或者,可选择对特定工作负载对象类型启用特定数据种类的收集。
例如,要配置工作单元事件监视器在系统中的任何工作单元完成时收集基本信息,可将 mon_uow_data 参数设置为 BASE。或者,要仅对特定工作负载捕获工作单元信息,可在 CREATE WORKLOAD 或 ALTER WORKLOAD 语句中指定 COLLECT UNIT OF WORK DATA BASE 子句。 - 运行应用程序或查询。 事件监视器已创建并激活,并且您已启用数据收集后,运行您要为其收集数据的应用程序或查询。
- 可选: 取消激活事件监视器。
运行您要为其收集数据的应用程序或查询后,可使用 SET EVENT MONITOR STATE 语句来取消激活事件监视器。(请参阅步骤 2)。不必在执行下一步骤前取消激活事件监视器,但让该事件监视器保留活动状态将导致磁盘空间被您可能没兴趣查看的数据占用。
- 检查事件监视器收集的数据。 根据事件监视器创建的输出的类型,有不同选项可用于访问所收集数据。如果该数据直接写至关系表,那么可使用 SQL 来访问表列中包含的数据。另一方面,如果该事件监视器写至无格式事件 (UE) 表,那么必须使用 db2evmonfmt 之类的命令或 EVMON_FORMAT_UE_TO_TABLES 之类的过程对 UE 表执行后处理,才能查看事件数据。
- 可选: 从事件监视器表中剪除不再需要的数据。 对于您日常使用的事件监视器,您可能想要从表中剪除不需要的数据。例如,如果使用工作单元事件监视器来生成有关不同应用程序使用的系统资源的日常财务报告,那么可能要在生成报告后立即从事件监视器表中删除当天的数据。提示: 如果需要定期剪除事件监视器输出,请考虑使用无格式事件 (UE) 表来记录事件监视器输出。可在数据传输至常规表后自动剪除 UE 表。