CREATE EVENT MONITOR (作業単位) ステートメント
CREATE EVENT MONITOR (作業単位) ステートメントは、作業単位の完了時にイベントを記録するイベント・モニターを作成します。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むか、あるいは対話式に発行することができます。これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。
許可
このステートメントの許可 ID が保持する特権には、以下のいずれかの権限が含まれている必要があります。
- DBADM 権限
- SQLADM 権限
構文
説明
- 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)
