创建写至表的事件监视器
要创建事件监视器,请使用 CREATE EVENT MONITOR STATEMENT。根据您计划监视的事件类型,此语句有不同形式可供您使用。
开始之前
- 您需要 SQLADM 或 DBADM 权限才能创建表事件监视器。
- CREATE EVENT MONITOR 语句的目标表 - 即,事件监视器要将其输出写至的表 - 必须是非分区表。
关于此任务
过程
要创建将其输出写至常规表的事件监视器,请执行以下步骤:
其他选项
不同事件监视器提供不同配置选项。有关特定类型的事件监视器可用的选项的详细信息,请参阅对应要使用的事件监视器类型的 CREATE EVENT MONITOR 语句的文档。下面的示例显示您可针对不同事件监视器选择的一些配置选项:- 使用单个事件监视器来捕获多个事件类型
- 对于某些类型1的事件监视器,可使用单个事件监视器来捕获不同类型的事件。如果要使用此事件监视器捕获多个类型的事件,请对
eventtype指定用逗号分隔的附加值。例如,您可能想要在单个事件监视器中组合缓冲池监视和表空间监视:CREATE EVENT MONITOR myevmon FOR BUFFERPOOLS, TABLESPACES WRITE TO TABLE此事件监视器将监视 BUFFERPOOL 和 TABLESPACE 事件类型。假定用户 dbadmin 发出了以上列出的语句,那么目标表的派生名称和表空间如下所示:- DBADMIN.BUFFERPOOL_MYEVMON
- DBADMIN.TABLESPACE_MYEVMON
- DBADMIN.CONTROL_,MYEVMON
- 调整事件监视器输出缓冲区的大小
- 可通过调整 BUFFERSIZE 值来改变某些类型1的事件监视器的表事件监视器缓冲区的大小(以 4K 页计)。例如,在以下语句中:
CREATE EVENT MONITOR myevmon FOR BUFFERPOOLS, TABLESPACES WRITE TO TABLE BUFFERSIZE 88是两个事件表缓冲区的组合容量(以 4K 页计)。这加起来高达 32K 缓冲区空间,每个缓冲区 16K。每个缓冲区的缺省大小为 4 页(分配两个 16K 缓冲区)。最小大小为 1 页。由于缓冲区是根据监视器堆进行分配,所以缓冲区的最大大小受该监视器堆大小限制。由于性能原因,活动频繁事件监视器的缓冲区应该比不活动事件监视器的缓冲区大。
- 控制事件监视器输出是已分块还是未分块
- 某些事件监视器1允许您控制事件监视器输出缓冲区变满时如何处理。对于分块事件监视器,如果事件缓冲区已满,那么生成事件的每个代理程序将等待事件缓冲区写至表。这可能会导致数据库性能降低,原因是暂挂的代理程序和所有从属代理程序在缓冲区清空之前不能运行。使用
BLOCKED 子句来确保事件数据不会丢失:
CREATE EVENT MONITOR myevmon FOR BUFFERPOOLS, TABLESPACES WRITE TO TABLE BUFFERSIZE 8 BLOCKED如果数据库性能比收集每个事件记录更重要,那么使用非分块事件监视器。在这种情况下,如果事件缓冲区已满,那么生成事件的每个代理程序将不会等待事件缓冲区写至表。因此,非分块事件监视器可能会导致活动频繁的系统上的数据丢失。使用 NONBLOCKED 子句来使事件监视导致的额外处理时间降至最少:CREATE EVENT MONITOR myevmon FOR BUFFERPOOLS, TABLESPACES WRITE TO TABLE BUFFERSIZE 8 NONBLOCKED - 控制对其收集数据的监视元素
- 要对其收集数据的监视元素。如果您仅关心几个监视元素,那么可通过在
CREATE EVENT MONITOR 语句中指定元素名称来对某些事件监视器1指定要收集的监视元素:
CREATE EVENT MONITOR myevmon FOR DATABASE, BUFFERPOOLS, TABLESPACES WRITE TO TABLE DB, DBMEMUSE, BUFFERPOOL (EXCLUDES(db_path, files_closed)), TABLESPACE (INCLUDES (tablespace_name, direct_reads, direct_writes)) BUFFERSIZE 8 NONBLOCKED将捕获 DB 和 DBMEMUSE 逻辑数据组的所有监视元素(这是缺省行为)。对于 BUFFERPOOL,会捕获除 db_path 和 files_closed 以外的所有监视元素。 最后,对于 TABLESPACE,仅捕获 tablespace_name、direct_reads 和 direct_writes 监视元素。
- 设置根据所使用表空间取消激活事件监视器的阈值
- 所有事件监视器都提供了一个选项,用于指定事件监视器自动取消激活前表空间可达到的充满程度:
CREATE EVENT MONITOR myevmon FOR BUFFERPOOLS, TABLESPACES PCTDEACTIVATE 90如果表空间已使用 90% 的容量,那么 myevmon 事件监视器会自动关闭。PCTDEACTIVATE 子句只能用于 DMS 表空间。如果目标表空间已启用自动调整大小,那么将 PCTDEACTIVATE 子句设置为 100。
下一步做什么
1 BUFFERPOOLS、CONNECTIONS、DATABASE、DEADLOCKS、STATEMENTS、TABLES 和
TABLESPACES 支持此选项。