CREATE EVENT MONITOR (パッケージ・キャッシュ) ステートメント

CREATE EVENT MONITOR (パッケージ・キャッシュ) ステートメントは、セクションのキャッシュ項目がパッケージ・キャッシュからフラッシュされる際のイベントを記録するイベント・モニターを作成します。

呼び出し

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

許可

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

構文

Read syntax diagramSkip visual syntax diagramCREATE EVENT MONITORevent-monitor-name FOR PACKAGE CACHEfilter-and-collection-optionsWRITE TOTABLEformatted-event-table-infoUNFORMATTED EVENT TABLE(target-table-options) AUTOSTARTMANUALSTART
filter-and-collection-options
Read syntax diagramSkip visual syntax diagramWHEREevent-condition COLLECT BASE DATACOLLECT DETAILED DATA
event-condition
Read syntax diagramSkip visual syntax diagramAND1UPDATED_SINCE_BOUNDARY_TIMENUM_EXECUTIONSSTMT_EXEC_TIME><<==>=integer-constant
formatted-event-table-info
Read syntax diagramSkip visual syntax diagram,evm-group(target-table-options)
target-table-options
Read syntax diagramSkip visual syntax diagram23TABLEtable-nameINtablespace-namePCTDEACTIVATE100PCTDEACTIVATEinteger
Notes:
  • 1 Each condition can be specified only once (SQLSTATE 42613).
  • 2 Each table option can be specified a maximum of one time (SQLSTATE 42613).
  • 3 Clauses can be separated with a space or a comma.

説明

event-monitor-name
イベント・モニターの名前。 これは、1 部構成の名前です。 これは、SQL ID です (通常 ID または区切り ID)。 event-monitor-name (イベント・モニター名) は、 既にカタログに存在するイベント・モニターを指定する名前であってはなりません (SQLSTATE 42710)。
FOR
記録するイベント・タイプをこの後に指定します。
PACKAGE CACHE
パッケージ・キャッシュから静的または動的 SQL ステートメントのキャッシュ項目がフラッシュされると、このイベント・モニターがイベントを記録することを指定します。 このイベント・モニターはパッシブではないので、いったんアクティブ化されるとイベントを記録し始めます。
filter-and-collection-options
フィルターと収集のオプションのセットを指定します。
WHERE
event-condition
パッケージ・キャッシュからフラッシュされる項目に対応してイベントを発生させる必要があるかどうかを判別するフィルターを定義します。 パッケージ・キャッシュからフラッシュされる特定の項目に対してイベント条件が真の場合、その項目はイベントとして記録されます。

この節は、WHERE 節の特殊な形式です。標準的な検索条件と混同しないようにしてください。 これは CONNECTIONS、TRANSACTIONS、および STATEMENTS イベント・モニターの場合に指定される WHERE 節とは異なり、NOT、OR、および LIKE 演算子が中で使用される単純な WHERE 節です。

WHERE 節が指定されない場合は、パッケージ・キャッシュからフラッシュされるすべての項目がモニターされます。

UPDATED_SINCE_BOUNDARY_TIME
境界時刻を過ぎてからメトリックが更新された退去項目をこのイベント・モニターで収集する必要があることを指定します。 境界時刻は、入力キー「updated_boundary_time」の値をこのイベント・モニターの名前にして MON_GET_PKG_CACHE_STMT 表関数を呼び出すことによって設定します。

境界時刻は、最初はイベント・モニターのアクティブ化タイム・スタンプに設定されます。

NUM_EXECUTIONS > | < | <= | = | >= integer-constant
モニター・エレメント num_executionsinteger-constant と比較して、イベントを生成するかどうかを決定することを指定します。 NUM_EXECUTIONS は、退去項目のセクションが実行された回数です。
注: num_executions モニター・エレメントは、報告されるアクティビティー・メトリックにステートメントの実行が寄与したかどうかに関係なく、ステートメントのすべての実行をカウントします。
STMT_EXEC_TIME > | < | <= | = | >= integer-constant
モニター・エレメント stmt_exec_timeinteger-constant と比較して、イベントを生成するかどうかを決定することを指定します。 STMT_EXEC_TIME は、退去項目のステートメントの実行に費やされた総合計時間です。 integer-constant の時間単位は、ミリ秒にする必要があります。
COLLECT BASE DATA
MON_GET_PKG_CACHE_STMT 表関数が戻すのと同じレベルの情報をキャプチャーする必要があることを指定します。 これはデフォルトの収集オプションです。
COLLECT DETAILED DATA
BASE レベルの情報に加えて、フラッシュされた項目のランタイム実行可能セクションも収集する必要があることを指定します。
WRITE TO
データの出力先をこの後に指定します。
テーブル
イベント・モニターのデータの出力先が一連のデータベース表であることを示します。 イベント・モニターは、データ・ストリームを 1 つ以上の論理データ・グループに分け、 各グループを別個の表に挿入します。 ターゲット表のあるグループのデータは保持されますが、ターゲット表のないグループのデータは破棄されます。 グループに含まれる各モニター・エレメントは、同じ名前の表列にマップされます。 対応する表列を持つエレメントだけが表に挿入されます。 他のエレメントは破棄されます。
formatted-event-table-info
イベント・モニターの出力先となるフォーマット済みイベント表を定義します。 この節では、記録される各グループを指定する必要があります。 しかし evm-group 節が指定されない場合には、イベント・モニター・タイプのすべてのグループが記録されます。

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

evm-group
ターゲット表を定義する対象の論理データ・グループを指定します。 以下の表に示されているように、値はイベント・モニターのタイプに基づいて異なります。
イベント・モニターのタイプ evm-group 値
パッケージ・キャッシュ
  • PKGCACHE
  • PKGCACHE_METRICS
  • PKGCACHE_STMT_ARGS
  • 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 FOR PACKAGE CACHE の処理は以下のように続行されます。
  • 派生した表名が使用されます ( TABLE table-nameの説明を参照してください)。
  • CREATE TABLE を使用して表スペース名を指定しないで表が作成される場合と同じプロセスで、デフォルトの表スペースが選択されます。
  • PCTDEACTIVATE が 100 に設定されます。
TABLE テーブル名
ターゲット表の名前を指定します。 ターゲット表は、非パーティション表でなければなりません。 名前が非修飾の場合、表スキーマは CURRENT SCHEMA 特殊レジスターの値にデフォルト設定されます。 未フォーマット・イベント表の名前が指定されなかった場合、非修飾名は event-monitor-name と同じになります。つまり、未フォーマット・イベント表の名前は、イベント・モニターの名前からとられたものとなります。 フォーマット済みイベント表の名前が指定されなかった場合は、非修飾名は以下のように evm-group および event-monitor-name から導出されます。
   substring(evm-group CONCAT '_'
     CONCAT event-monitor-name,1,128)
IN 表スペース名
表を作成する表スペースを指定します。 CREATE EVENT MONITOR FOR PACKAGE CACHE ステートメントは、表スペースを作成しません。

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

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

PCTDEACTIVATE 整数
イベント・モニターの表が自動ストレージ (非一時) または 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 PACKAGE CACHE ステートメントが実行されるときにターゲット表がまだ存在しない場合は、そのときに作成されます。
  • CREATE EVENT MONITOR FOR PACKAGE CACHE 処理時に、別のイベント・モニターで使用するために既に定義されている表が検出されると、CREATE EVENT MONITOR FOR PACKAGE CACHE ステートメントは失敗し、エラーがアプリケーション・プログラムに返されます。 表名が SYSCAT.EVENTTABLES カタログ・ビューにある値と一致する場合には、その表は別のイベント・モニターによって使用されるよう定義されています。 検出された表が別のイベント・モニターで使用するようには定義されていない場合、イベント・モニターはその表を再利用します。
  • イベント・モニターをドロップしても、表はドロップされません。 関連するどの表も、イベント・モニターをドロップした後に、手動でドロップする必要があります。
  • このイベント・モニターによって作成された未フォーマット・イベント表または正規表からロック・イベント・データが自動的にプルーニングされることはありません。 未フォーマット・イベント (UE) 表からデータをプルーニングするためのオプションは、EVMON_FORMAT_UE_TO_TABLES プロシージャーを使用するときに使用できます。 正規表に書き込むイベント・モニターの場合、イベント・データは手動でプルーニングする必要があります。
  • パーティション・データベース環境では、表スペースが存在するメンバー上のターゲット表にのみデータが書き込まれます。 ターゲット表の表スペースがメンバー上に存在しない場合、そのターゲット表に書き込まれるはずのイベント・データはそのメンバーではキャプチャーされません。 この動作により、ユーザーは特定のメンバー上にのみ存在する表スペースを作成することによって、モニターに使用するメンバーのサブセットを選択することができます。
  • パーティション・データベース環境では、データベース・パッケージ・キャッシュから項目が退去させられるメンバー上のターゲット表にのみ、データが書き込まれます。
  • パーティション・データベース環境では、あるメンバー上にいくつかのターゲット表が存在しないものの、その同じメンバー上に他のターゲット表が存在する場合は、そのメンバー上に存在するターゲット未フォーマット・イベント表のデータだけが記録されます。
  • FLUSH EVENT MONITOR ステートメントはこのイベント・モニターには適用されないため、これに対して発行しても何も影響を及ぼしません。
  • パッケージ・キャッシュ・イベント・モニターが作成されると、フィルターおよび制御オプションは変更できません。 フィルターおよび制御オプションを変更するには、イベント・モニターを非活動化してドロップした後、新しいフィルターおよび制御オプションを指定して再作成する必要があります。
高スループットのための LARGE 表スペースの使用
イベント・データは未フォーマット・イベント表のインライン化 BLOB データ列に挿入されます。 通常、BLOB データは別の LOB 表スペースに格納され、結果としてパフォーマンス上の余分なオーバーヘッドが生じてしまう恐れがあります。 基本表のデータ・ページにインライン化されると、BLOB データではこのオーバーヘッドは生じません。 データベース・マネージャーは、BLOB データのサイズが表スペースのページ・サイズからレコード接頭部を引いたサイズよりも小さい場合、自動的に未フォーマット・イベント表レコードの BLOB データ部分にインライン化されます。 このため、効率性およびアプリケーションのスループットを高めるために、イベント・モニターを可能な限り大きな表スペース (最大で 32 KB までの表スペース) と関連バッファー・プールに作成することをお勧めします。
パッケージ・キャッシュ・レコードのインライン化
パッケージ・キャッシュ・イベント・モニターの場合、 stmt_textcomp_env_desc、および section_env モニター・エレメントのサイズによって、パッケージ・キャッシュ・レコードがインライン化されるかどうかが決まります。 これらのフィールドの合計が表スペース・サイズを超えた場合、レコードはインライン化されません。
EVENT_DATA がインライン化されるかどうかの判別
レコードがインライン化されるかどうかを判別し、必要なインライン長の見積もりを取得するには、ADMIN_IS_INLINED および ADMIN_EST_INLINE_LENGTH 関数を使用します。

制約事項

  • データベースの非活動化中は、退去項目はパッケージ・キャッシュ・イベント・モニターによって収集されません。

  • 例 1: この例では、パッケージ・キャッシュ・セクション排出イベントに関するデータを収集して表にデータを書き込む、CACHEEVMON というパッケージ・キャッシュ・イベント・モニターを作成します。
       CREATE EVENT MONITOR CACHEEVMON
         FOR PACKAGE CACHE
         WRITE TO TABLE 
    このイベント・モニターは、その出力を以下の表に書き込みます。
    • PKGCACHE_CACHEEVMON
    • PKGCACHE_METRICS_CACHEEVMON
    • PKGCACHE_STMT_ARGS
    • CONTROL_CACHEEVMON
  • 例 2: この例では、パッケージ・キャッシュ・セクション排出イベントに関するデータを収集して未フォーマット・イベント表 ALAN.STMTEVENTS にデータを格納する、CACHESTMTEVMON というパッケージ・キャッシュ・イベント・モニターを作成します。
       CREATE EVENT MONITOR CACHESTMTEVMON
         FOR PACKAGE CACHE
         WRITE TO UNFORMATTED EVENT TABLE (TABLE ALAN.STMTEVENTS)
  • 例 3: この例では、パッケージ・キャッシュ・セクション排出イベントに関するデータを収集して表スペース APPSPACE 内の未フォーマット・イベント表 ALAN.STMTEVENTS にデータを格納する、CACHESTMTEVMON というパッケージ・キャッシュ・イベント・モニターを作成します。 この表スペースの使用率が 85% に達すると、このイベント・モニターは非アクティブ化されます。
       CREATE EVENT MONITOR CACHESTMTEVMON
         FOR PACKAGE CACHE
         WRITE TO UNFORMATTED EVENT TABLE 
            (TABLE ALAN.STMTEVENTS IN APPSPACE PCTDEACTIVATE 85)