例: 変更履歴イベント・モニターを使用したユーティリティー実行履歴の報告

変更履歴イベント・モニターを使用して、 データベースで実行されたユーティリティー操作を追跡することができます。

シナリオ

この例では、データベース管理者 (DBA) は、 データベース上のユーティリティー・イベント実行をキャプチャーしてリストすることが必要です。 ユーティリティー・イベントを報告するには、以下のようにします。
  1. ユーティリティー・イベントを追跡する変更履歴イベント・モニターを作成します。 例えば、
    CREATE EVENT MONITOR MON_UTIL
        FOR CHANGE HISTORY WHERE EVENT IN (UTILALL)
        WRITE TO TABLE
           CHANGESUMMARY (TABLE UTIL_COMMON),
           UTILSTART (TABLE UTIL_START),
           UTILSTOP (TABLE UTIL_STOP)
           UTILLOCATION (TABLE UTIL_LOCATION)
           UTILPHASE (TABLE UTIL_PHASES) AUTOSTART;
  2. イベント・モニターを使用可能にします。
     SET EVENT MONITOR MON_UTIL STATE=1
  3. データベースで実行されたユーティリティー操作に関する情報を、論理データ・グループで照会します。 例えば、以下の照会を行うと、メンバー単位の各ユーティリティーの呼び出しの履歴がリストされます。
    WITH UTIL_HIST(TIMESTAMP, UTIL_TYPE, ACTION, PHASE_TYPE, UTILITY_INVOCATION_ID,
          MEMBER, SQLCODE) AS
     (SELECT A.EVENT_TIMESTAMP,
            A.UTILITY_TYPE,
            CAST('START' AS VARCHAR(32)),
            CAST(NULL AS VARCHAR(16)),
            A.UTILITY_INVOCATION_ID,
            A.MEMBER,
            CAST(NULL as INTEGER)
     FROM UTIL_START AS A
     UNION ALL
      SELECT B.EVENT_TIMESTAMP,
              B.UTILITY_TYPE,
              CASE WHEN EVENT_TYPE IN ('UTILPHASESTART') THEN
                 CAST('PHASE START' AS VARCHAR(32))
              ELSE
                 CAST('PHASE STOP' AS VARCHAR(32))
              END CASE,
              CAST(UTILITY_PHASE_TYPE AS VARCHAR(16)),
              B.UTILITY_INVOCATION_ID,
              B.MEMBER,
              CAST(NULL as INTEGER)
      FROM UTIL_PHASES AS B
     UNION ALL
      SELECT C.EVENT_TIMESTAMP,
              C.UTILITY_TYPE,
              CAST('STOP' AS VARCHAR(32)),
              CAST(NULL AS VARCHAR(16)),
              C.UTILITY_INVOCATION_ID,
              C.MEMBER,
              C.SQLCODE
      FROM UTIL_STOP AS C)
    SELECT * FROM UTIL_HIST
    ORDER BY UTILITY_INVOCATION_ID, MEMBER, TIMESTAMP ASC
結果のユーティリティー・イベント・レポートは、以下の目的に使用できます。
  • オーバーラップしているユーティリティーを特定する。例えば、あるパーティションでユーティリティーが停止する前に、同じパーティションで別のユーティリティーが開始された場合などです。
  • ユーティリティーのどこで時間がかかっているのか調べる。 例えば、各フェーズの消費時間などです。 注: V11.1 では、 オンライン・バックアップの表スペース・バックアップ・フェーズに関してのみ調べることができます。
TIMESTAMP                  UTIL_TYPE ACTION      PHASE_TYPE    UTILITY_INVOCATION_ID MEMBER SQLCODE
-------------------------- --------- ----------  ------------- --------------------- ------ -------
2010-10-31-17.29.04.545210 LOAD      START       -             x'18A901F...621'      0      -
2010-10-31-17.50.04.344230 LOAD      STOP        -             x'18A901F...621'      0      0
2010-10-31-17.29.04.545211 LOAD      START       -             x'18A901F...633'      1      -
2010-10-31-17.50.04.344229 LOAD      STOP        -             x'18A901F...633'      1      0
2010-10-31-17.29.04.344210 BACKUP    START       -             x'18A901F...645'      0      -
2010-10-31-17.50.04.344211 BACKUP    PHASE START BACKUPTS      x'18A901F...645'      0      0
2010-10-31-17.51.04.545214 BACKUP    PHASE STOP  BACKUPTS      x'18A901F...645'      0      -
2010-10-31-17.52.04.344218 BACKUP    STOP        -             x'18A901F...645'      0      0
8 record(s) selected.