CREATE EVENT MONITOR (作業単位) ステートメント

CREATE EVENT MONITOR (作業単位) ステートメントは、作業単位の完了時にイベントを記録するイベント・モニターを作成します。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込むか、あるいは対話式に発行することができます。これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。

許可

このステートメントの許可 ID が保持する特権には、以下のいずれかの権限が含まれている必要があります。
  • DBADM 権限
  • SQLADM 権限

構文

構文図を読む構文図をスキップするCREATE EVENT MONITORevent-monitor-name FOR UNIT OF WORK WRITE TO TABLEformatted-event-table-infoUNFORMATTED EVENT TABLE(target-table-options) AUTOSTARTMANUALSTART
formatted-event-table-info
構文図を読む構文図をスキップする,evm-group(target-table-options)
target-table-options
構文図を読む構文図をスキップする12TABLEtable-nameINtablespace-namePCTDEACTIVATE100PCTDEACTIVATEinteger
注:
  • 1 表のオプションは、それぞれ最大で 1 回指定できます (SQLSTATE 42613)。
  • 2 節は、スペースまたはコンマで区切ることができます。

説明

event-monitor-name
イベント・モニターの名前。 これは、1 部構成の名前です。 これは、SQL ID です (通常 ID または区切り ID)。 event-monitor-name (イベント・モニター名) は、 既にカタログに存在するイベント・モニターを指定する名前であってはなりません (SQLSTATE 42710)。
FOR
記録するイベント・タイプをこの後に指定します。
UNIT OF WORK
作業単位が完了した時点で (すなわち、コミットまたはロールバックが行われた時点で)、この受動的なイベント・モニターがイベントを記録することを指定します。

作業単位イベント・モニターを作成しても、作業単位に関するデータが即座に収集されるわけではありません。実際の収集対象となる作業単位イベントは、ワークロード・レベルで制御されます。

WRITE TO
データの出力先をこの後に指定します。
TABLE
イベント・モニターのデータの出力先が一連のデータベース表であることを示します。 イベント・モニターは、データ・ストリームを 1 つ以上の論理データ・グループに分け、 各グループを別個の表に挿入します。 ターゲット表のあるグループのデータは保持されますが、ターゲット表のないグループのデータは破棄されます。 グループに含まれる各モニター・エレメントは、同じ名前の表列にマップされます。 対応する表列を持つエレメントだけが表に挿入されます。 他のエレメントは破棄されます。
formatted-event-table-info
イベント・モニターの出力先となるフォーマット済みイベント表を定義します。 この節では、記録される各グループを指定する必要があります。 しかし evm-group 節が指定されない場合には、イベント・モニター・タイプのすべてのグループが記録されます。

論理データ・グループについて詳しくは、論理データ・グループおよびイベント・モニター出力表を参照してください。

evm-group
ターゲット表を定義する対象の論理データ・グループを指定します。 以下の表に示されているように、値はイベント・モニターのタイプに基づいて異なります。
イベント・モニターのタイプ evm-group 値
作業単位
  • UOW
  • UOW_METRICS
  • UOW_PACKGE_LIST
  • UOW_EXECUTABLE_LIST
  • CONTROL
UNFORMATTED EVENT TABLE
イベント・モニターのデータの出力先がフォーマットされていないイベント表であることを指定します。フォーマットされていないイベント表は、収集された作業単位イベント・モニターのデータを格納するために使用されます。 データは、インライン化 BLOB 列内に元のバイナリー・フォーマットで格納されます。 この BLOB 列には、さまざまなタイプのバイナリー・レコードを複数格納できます。BLOB 列のデータは読み取り可能なフォーマットではないので、db2evmonfmt Java™ ベースのツール、EVMON_FORMAT_UE_TO_XML 表関数、または EVMON_FORMAT_UE_TO_TABLES プロシージャーを使用して、XML 文書またはリレーショナル表などの使用可能なフォーマットに変換する必要があります。
target-table-options
ターゲット表のオプションを指定します。 target-table-options の値が指定されていない場合、CREATE EVENT MONITOR の処理は以下のように続行されます。
  • 派生した表名が使用されます (TABLE table-name の説明と同様)。
  • CREATE TABLE を使用して表スペース名を指定しないで表が作成される場合と同じプロセスで、デフォルトの表スペースが選択されます。
  • PCTDEACTIVATE が 100 に設定されます。
TABLE table-name
ターゲット表の名前を指定します。 ターゲット表は、非パーティション表でなければなりません。名前が非修飾の場合、表スキーマは CURRENT SCHEMA 特殊レジスターの値にデフォルト設定されます。未フォーマット・イベント表では、名前が指定されなかった場合、非修飾名は event-monitor-name と同じになります。つまり、未フォーマット・イベント表の名前は、イベント・モニターの名前からとられたものとなります。 フォーマット済みイベント表では、名前が指定されなかった場合、非修飾名は以下のように evm-group および event-monitor-name から導出されます。
   substring(evm-group CONCAT '_'
     CONCAT event-monitor-name,1,128)
IN tablespace-name
表を作成する表スペースを指定します。CREATE EVENT MONITOR FOR UNIT OR WORK ステートメントは、表スペースを作成しません。

表スペース名が指定されなかった場合、CREATE TABLE を使用して表スペース名を指定しないで表が作成される場合と同じプロセスで表スペースが選択されます。

ページ・サイズは使用する INLINE LOB 長さに影響を及ぼすため、イベント・モニターの INSERT パフォーマンスを向上させるためには、表スペースに可能な限り大きなページ・サイズを指定することを検討してください。

PCTDEACTIVATE integer
イベント・モニターの表が自動ストレージ (非一時) または DMS 表スペースに作成される場合には、 PCTDEACTIVATE パラメーターは、どの程度表スペースが満たされた時点でイベント・モニターが自動的に非活動化されるかを指定します。 パーセンテージを表す値は、0 から 100 の範囲で指定可能です。この 100 は、表スペースが完全にいっぱいになるときにイベント・モニターが非アクティブになることを意味します PCTDEACTIVATE が指定されていない場合には、デフォルト値は 100 になります。 SMS 表スペースの場合、このオプションは無視されます。
重要: ターゲット表スペースの自動サイズ変更が有効になっている場合、PCTDEACTIVATE パラメーターを 100 に設定します。 または、この節全体を省略して、デフォルトの 100 が適用されるようにします。 それ以外の場合、表スペースが自動的にサイズ変更される前に、PCTDEACTIVTATE で指定したしきい値に表スペースが到達すると、イベント・モニターは予期せずに非アクティブになる場合があります。
AUTOSTART
イベント・モニターを実行するデータベース・パーティションをアクティブ化した時点で、イベント・モニターも自動的にアクティブ化することを指定します。これは、作業単位イベント・モニターのデフォルトの動作です。
MANUALSTART
SET EVENT MONITOR STATE ステートメントを使用してイベント・モニターを手動でアクティブ化しなければならないことを指定します。アクティブ化された MANUALSTART イベント・モニターは、SET EVENT MONITOR STATE ステートメントを使用するか、インスタンスを停止することによってのみ非活動状態にできます。

  • CREATE EVENT MONITOR FOR UNIT OF WORK ステートメントが実行されるときに表がまだ存在しない場合は、そのときに作成されます。
  • CREATE EVENT MONITOR FOR UNIT OF WORK 処理時に、別のイベント・モニターで使用するために既に定義されている表が検出されると、CREATE EVENT MONITOR FOR UNIT OF WORK ステートメントは失敗し、エラーがアプリケーション・プログラムに返されます。 表名が SYSCAT.EVENTTABLES カタログ・ビューにある値と一致する場合には、その表は別のイベント・モニターによって使用されるよう定義されています。表が存在しており、別のイベント・モニターで使用するようには定義されていない場合、表は作成されずに、表の他の target-table-options パラメーターは無視され、処理が続行されます。 警告が、アプリケーション・プログラムに出されます。
  • イベント・モニターをドロップしても、表はドロップされません。 関連するどの表も、イベント・モニターをドロップした後に、手動でドロップする必要があります。
  • このイベント・モニターによって作成された未フォーマット・イベント表または正規表からロック・イベント・データが自動的にプルーニングされることはありません。 未フォーマット・イベント (UE) 表からデータをプルーニングするためのオプションは、EVMON_FORMAT_UE_TO_TABLES プロシージャーを使用するときに使用できます。 正規表に書き込むイベント・モニターの場合、イベント・データは手動でプルーニングする必要があります。
  • 未フォーマット・イベント表の場合、イベント・データは表のインライン化 BLOB データ列に挿入されます。 通常、BLOB データは別の LOB 表スペースに格納され、結果としてパフォーマンス上の余分なオーバーヘッドが生じてしまう恐れがあります。基本表のデータ・ページにインライン化されると、BLOB データではこのオーバーヘッドは生じません。データベース・マネージャーは、BLOB データのサイズが表スペースのページ・サイズからレコード接頭部を引いたサイズよりも小さい場合、自動的に未フォーマット・イベント表レコードの BLOB データ部分にインライン化されます。このため、効率性およびアプリケーションのスループットを高めるために、イベント・モニターを可能な限り大きな表スペース (最大で 32 KB までの表スペース) と関連バッファー・プールに作成することをお勧めします。
  • データベースごとに 1 つの作業単位イベント・モニターのみを作成し、同じデータベースに複数の作業単位イベント・モニターを作成しないでください。
  • パーティション・データベース環境では、データが書き込まれるターゲット表は、その表スペースが存在するデータベース・パーティション上にあるものだけです。 未フォーマット・イベント・ターゲット表のための表スペースがいずれかのデータベース・パーティションに存在しない場合は、そのターゲット表のデータは無視されます。 この動作によってユーザーは、特定のデータベース・パーティション上にのみ存在する表スペースを作成して、モニターとして選択するデータベース・パーティションのサブセットを選択できます。
  • 複数メンバー環境では、データが書き込まれるのは、作業単位内で作業が生じたメンバー上にあるターゲット表に対してだけです。
  • パーティション・データベース環境で、 いくつかのターゲット表がデータベース・パーティションに存在しないものの、 その同じデータベース・パーティションに他のターゲット表がある場合には、 そのデータベース・パーティションにあるターゲット表についてのデータだけが記録されます。
  • 作業単位イベント・モニターは、作業単位イベント・モニター・スイッチによって影響を受けることはありません。作業単位イベント・モニター・スイッチは作業単位イベント・モニターの作成時に変更されることはなく、また作業単位イベント・モニターの内容は作業単位イベント・モニター・スイッチに対する変更によって影響を受けません。
  • FLUSH EVENT MONITOR ステートメントは、このイベント・モニターには適用されず、 これに対して発行されても、効果はありません。
  • 作業単位イベント・モニターを作成しても、イベントがイベント・モニターに書き込まれることはありません。作業単位イベント・モニターは SET EVENT MONITOR STATE を使用してアクティブにする必要があり、作業単位データは適切なワークロードを変更して COLLECT UNIT OF WORK DATA を指定するか、mon_uow_data データベース構成パラメーターを NONE 以外の値に設定して収集しなければなりません。
  • 未フォーマット・イベント表を使用している場合、作業単位イベント・モニターは、ページ・サイズが少なくとも 8 KB の表スペースに作成してください。未フォーマット・イベント表のインライン化 BLOB 列内にイベント・データが収まるようにするためです。 BLOB 列がインライン化されていない場合は、未フォーマット・イベント表に対するイベントの書き込みと読み出しのパフォーマンスが効率的でない可能性があります。

  • 例 1: この例では、作成したデータベース上で発生する作業単位イベントのデータを収集してデフォルトの表名を使用して表にデータを書き込む、作業単位イベント・モニター UOWEVMON を作成します。
       CREATE EVENT MONITOR UOWEVMON
         FOR UNIT OF WORK
         WRITE TO TABLE 
    このイベント・モニターは、その出力を以下の表に書き込みます。
    • UOW_UOWEVMON
    • UOW_METRICS_UOWEVMON
    • UOW_PACKAGE_LIST_UOWEVMON
    • UOW_EXECUTABLE_LIST_UOWEVMON
    • UOW_CONTROL_UOWEVMON
    注: パッケージ・リストと実行可能ファイル・リストの情報用の表にデータが設定されるかどうかは、そのデータを収集対象として指定するかどうかで決まります。 このデータの収集を制御するには、mon_uow_pkglist または mon_uow_execlist 構成パラメーターを使用するか、CREATE または ALTER WORKLOAD ステートメントで適切な COLLECT UNIT OF WORK DATA 節を使用します。
  • 例 2: この例では、データベース上で発生する作業単位イベントを収集し、そのデータをフォーマットされていないイベント表 GREG.UOWEVENTS に格納する作業単位イベント・モニター UOWEVMON を作成します。
       CREATE EVENT MONITOR UOWEVMON
         FOR UNIT OF WORK
         WRITE TO UNFORMATTED EVENT TABLE (TABLE GREG.UOWEVENTS)
  • 例 3: この例では、データベース上で発生する作業単位イベントを収集し、そのデータを表スペース APPSPACE にあるフォーマットされていないイベント表 GREG.UOWEVENTS に格納する作業単位イベント・モニター UOWEVMON を作成します。この表スペースの使用率が 85% に達すると、このイベント・モニターは非アクティブ化されます。
       CREATE EVENT MONITOR UOWEVMON
         FOR UNIT OF WORK
         WRITE TO UNFORMATTED EVENT TABLE 
            (TABLE GREG.UOWEVENTS IN APPSPACE PCTDEACTIVATE 85)