表に書き込むイベント・モニターの作成

イベント・モニターを作成するには、CREATE EVENT MONITOR STATEMENT を使用します。 このステートメントは、モニターしようとするイベントのタイプに応じて、さまざまな形で使用されます。

始める前に

  • 表イベント・モニターを作成するには、SQLADM 権限または DBADM 権限が必要です。
  • CREATE EVENT MONITOR ステートメントのターゲット表 (つまり、イベント・モニターがその出力を書き込む表) は、非パーティション表でなければなりません。

このタスクについて

表イベント・モニターの各種オプションは、CREATE EVENT MONITOR ステートメントで設定されます。 表書き込みイベント・モニター用の CREATE EVENT MONITOR SQL ステートメントの生成をより簡単に行うために、 db2evtbl コマンドを使用することができます。 イベント・モニターの名前および目的のイベント・タイプ (1 つ以上) を指定するだけで、 CREATE EVENT MONITOR ステートメントが生成され、 すべてのターゲット表のリストが完成します。 次に、生成されたステートメントをコピーして変更を加え、ステートメントをコマンド行プロセッサーから実行することができます。

手順

出力を通常表に書き込むイベント・モニターを作成するには、以下のステップを実行します。

  1. WRITE TO TABLE 節を使用した CREATE EVENT MONITOR ステートメントを作成して、イベント・モニター・データが表 (または表集合) に収集されることを指定します。
    
    CREATE EVENT MONITOR evmon-name FOR eventtype
       WRITE TO TABLE
    evmon-name はイベント・モニターの名前、eventtype は以下の値のいずれかです。
    • ACTIVITIES
    • BUFFERPOOLS
    • CHANGE HISTORY
    • CONNECTIONS
    • DATABASE
    • DEADLOCKS
    • LOCKING
    • PACKAGE CACHE
    • STATEMENTS
    • STATISTICS
    • TABLE
    • TABLESPACE
    • THRESHOLD VIOLATIONS
    • TRANSACTIONS
    • UNIT OF WORK
    例えば、myevmon という作業単位イベント・モニターを作成するには、次のようなステートメントを使用します。
    CREATE EVENT MONITOR myevmon FOR UNIT OF WORK
       WRITE TO TABLE
    前述のステートメントでは、収集したモニター・エレメントの論理グループ、対応する出力表の名前、およびその表のターゲット表スペースに対してデフォルトを使用する作業単位イベント・モニターが作成されます。 これらのデフォルトについて詳しくは、該当する CREATE EVENT MONITOR ステートメントの資料を参照してください。
  2. オプション: データ収集の対象とする論理グループを指定します。
    デフォルトでは、そのイベント・モニター・タイプのすべての論理データ・グループに関するイベント・データが収集されます。選択した論理グループのデータのみを収集しようとする場合は、CREATE EVENT MONITOR ステートメントの中で、その論理グループの名前を指定することができます。 例えば、ロッキング・イベント・モニターで、LOCK 論理グループと PARTICIPANT 論理グループに関連した情報のみを収集するとします。 これらの論理グループのみを含めるためには、次のようなステートメントを使用することができます。
    CREATE EVENT MONITOR mylocks FOR LOCKING 
       WRITE TO TABLE
       LOCK, PARTICIPANTS
                 
  3. オプション: 出力表に使用する表名を指定します。
    他の表名を指定しなければ、モニター・エレメントの各論理グループに対する表に、デフォルトの名前が使用されます。 デフォルトの名前は、論理グループ名をイベント・モニターの名前と連結することによって導出されます。 例えば、前述のステップでステートメントにより作成されたロッキング・イベント・モニターの場合、生成される表の非修飾名は LOCK_MYLOCKS と PARTICIPANTS_MYLOCKS です。 デフォルトの名前をオーバーライドするには、次のようにして、論理グループを指定するときに使用する表名を含めます。
    CREATE EVENT MONITOR mylocks FOR LOCKING 
       WRITE TO TABLE
       LOCK(TABLE LOCKDATA), PARTICIPANTS(TABLE PARTICIP)
    
    前述の例では、LOCK 論理グループと PARTICIPANTS 論理グループの表には、LOCKDATA_MYLOCKS と PARTICIP_MYLOCKS という名前が使用されます。

    また次のように、使用する表スペースの名前を含めることによって、それぞれの表に使用される表スペースをオーバーライドすることもできます。

    CREATE EVENT MONITOR mylocks FOR LOCKING 
      WRITE TO TABLE
      LOCK(TABLE LOCKDATA IN EVMONSPACE), PARTICIPANTS(TABLE PARTICIP IN EVMONSPACE)
    
    前述の例では、両方の出力表に EVMONSPACE 表スペースが使用されます。

追加のオプション

さまざまなイベント・モニターにより、さまざまな構成オプションが提供されています。 特定のタイプのイベント・モニターで使用可能なオプションについて詳しくは、使用するイベント・モニターのタイプに関する CREATE EVENT MONITOR ステートメントの資料を参照してください。 次に示す例では、各種のイベント・モニターで選択できる構成オプションの一部を紹介しています。
1 つのイベント・モニターによる複数のイベント・タイプのキャプチャー
一部のタイプ 1 のイベント・モニターでは、1 つのイベント・モニターでさまざまなタイプのイベントをキャプチャーできます。 このイベント・モニターで複数のタイプのイベントをキャプチャーしようとする場合は、eventtype に追加の値をコンマで区切って指定します。 例えば、1 つのイベント・モニターの中で、バッファー・プールと表スペース・モニタリングを組み合わせることができます。
CREATE EVENT MONITOR myevmon FOR BUFFERPOOLS, TABLESPACES
                     WRITE TO TABLE
このイベント・モニターは、BUFFERPOOL イベント・タイプと TABLESPACE イベント・タイプについてモニターします。 上記のステートメントがユーザー dbadmin によって発行されたとすると、ターゲット表の派生名および表スペースは以下のようになります。
  • DBADMIN.BUFFERPOOL_MYEVMON
  • DBADMIN.TABLESPACE_MYEVMON
  • DBADMIN.CONTROL_,MYEVMON
イベント・モニター出力バッファーのサイズ調整
一部のタイプ1 のイベント・モニターでは、表イベント・モニター・バッファーのサイズは、BUFFERSIZE 値を調整することにより、(4K ページ単位で) 変更できます。 例えば、次のステートメントの場合、
CREATE EVENT MONITOR myevmon FOR BUFFERPOOLS, TABLESPACES
                     WRITE TO TABLE BUFFERSIZE 8 
8 は、2 つのイベント表バッファーを合わせた容量です (4K ページ単位)。 それぞれのバッファーが 16K で、最大 32K までバッファー・スペースが追加されます。

各バッファーのデフォルト・サイズは 4 ページです (16K バッファーが 2 個割り振られます)。最小サイズは 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
どのデータに関するどのモニター・エレメントを収集するかの制御
どのモニター・エレメントに関するデータを収集しますか。 少数のモニター・エレメントにしか興味がない場合、一部のイベント・モニター1 では、CREATE EVENT MONITOR ステートメントにエレメント名を指定することによって、どのモニター・エレメントを収集するかを指定することができます。

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_namedirect_reads および direct_writes だけがキャプチャーされます。

イベント・モニターを非アクティブ化する際の、使用する表スペースに基づくしきい値の設定
すべてのイベント・モニターで、表スペースがどの程度満杯になれば、イベント・モニターが自動的に非アクティブ化するのかを指定するオプションが提供されています。
CREATE EVENT MONITOR myevmon FOR BUFFERPOOLS, TABLESPACES
                     PCTDEACTIVATE 90
                     

表スペースが 90% の容量に達すれば、myevmon イベント・モニターが自動的にシャットオフします。 DMS 表スペースには PCTDEACTIVATE 節のみを使用できます。 ターゲット表スペースで自動サイズ変更が有効な場合は、PCTDEACTIVATE 文節を 100 に設定してください。

次のタスク

デフォルトでは、バージョン 9.7 以降に導入されたイベント・モニターは、AUTOSTART イベント・モニターとして作成されます。 データベースが次に活動化されるとき、およびその後データベースが活動化されるときに、これらのイベント・モニターが自動的に活動化されます。 データベースが次に活動化される前にイベント・モニターをただちに活動化しようとするときは、SET EVENT MONITOR STATE ステートメントを使用してイベント・モニターを手動で開始します。 ロッキング、作業単位、およびパッケージ・キャッシュの各イベント・モニターだけでなく、データ収集も有効化する必要があります。
1 BUFFERPOOLS、CONNECTIONS、DATABASE、DEADLOCKS、STATEMENTS、TABLES、および TABLESPACES のイベント・モニターは、このオプションをサポートしています。