改变事件监视器

不能更改事件监视器,但下面是一个例外情况:可向该事件监视器收集的逻辑数据组集合添加一个或多个逻辑数据组。应使用 ALTER EVENT MONITOR 语句来添加逻辑组。

关于此任务

缺省情况下,创建写至表的事件监视器时,将捕获与该事件监视器相关联的监视元素的所有逻辑数据组。但是,如果在 CREATE EVENT MONITOR 语句中添加了逻辑数据组的名称,那么仅捕获这些组。例如,可创建仅捕获来自 event_activity 和 event_activity_metrics 逻辑数据组的数据的活动事件监视器,如以下示例所示:
CREATE EVENT MONITOR myacts FOR ACTIVITIES 
   WRITE TO TABLE
   event_activity, event_activity_metrics
以上 DDL 语句会创建事件监视器,该事件监视器写至以下两个表:ACTIVITY_myacts 和 ACTIVITY_METRICS_myacts。

限制

只能使用 ALTER EVENT MONITOR 语句向事件监视器添加逻辑数据组。不能移除逻辑数据组。也不能更改与下表相关联的名称、目标表空间或 PCTDEACTIVATE 值:该表用于捕获属于数据组的监视元素中的数据。

过程

要向事件监视器添加其他逻辑数据组,请执行以下操作:

  1. 决定要添加的逻辑数据组。
    假定您要添加 event_activitystmt 和 event_activityvals 逻辑数据组(使用以上仅捕获两个逻辑数据组的锁定事件监视器示例)。
  2. 创建 ALTER EVENT MONITOR 语句以添加这些新逻辑数据组。
    ALTER EVENT MONITOR mylacts
       ADD LOGICAL GROUP event_activitystmt
       ADD LOGICAL GROUP event_activityvals
  3. 执行该语句。

结果

ALTER EVENT MONITOR 语句执行完后,系统将为事件监视器 myacts 创建两个其他表:
  • ACTIVITYSTMT_myacts
  • ACTIVITYVALS_myacts
下一次激活该事件监视器时,系统会使用来自这些表的对应逻辑数据组中的数据来填充这些表。
切记: 如果向事件监视器添加新逻辑数据组,那么以前该表中的逻辑数据组存在的任何数据将不会在新添加逻辑组的表中有任何对应行。根据需要调整查询,或考虑在添加逻辑组后从该表中剪除旧数据。

示例

数据库管理员使用以下 SQL 语句创建名为 mylocks 的锁定事件监视器:
CREATE EVENT MONITOR mylocks FOR LOCKING WRITE TO TABLE LOCK, LOCK_PARTICIPANTS
此语句收集锁定逻辑数据组和 lock_participants 逻辑数据组中的监视元素的信息。已创建具有缺省表名 LOCK_MYLOCKS 和 LOCK_PARTICIPANTS_MYLOCKS 的表,它们用于写入监视元素数据。
稍后,数据库管理员决定要收集 LOCK_PARTICIPANT_ACTIVITIES 逻辑数据组中的信息。她使用以下语句来修改该事件监视器:
ALTER EVENT MONITOR mylocks ADD LOGICAL GROUP LOCK_PARTICIPANT_ACTIVITIES
此语句导致收集 lock_participant_activities 中的监视元素以及其他已收集的元素。这一组新的监视元素被写至表 LOCK_PARTICIPANT_ACTIVITIES_MYLOCKS。
稍后,数据库管理员决定还需要来自控制逻辑数据组的数据。但是,她希望此数据写至其名称不同于缺省名称并且其表空间不同于缺省表空间的表。她使用以下语句:
ALTER EVENT MONITOR mylocks ADD LOGICAL GROUP CONTROL TABLE ctl_mylocks IN mytbsp3
此语句将该控制逻辑数据组添加至该事件监视器的输出。此语句将该控制逻辑数据组添加至该事件监视器的输出。数据被写至 CTL_MYLOCKS 表,表被写至表空间 mytbsp3 而不是缺省表空间。