SET EVENT MONITOR STATE ステートメント
SET EVENT MONITOR STATE ステートメントは、 イベント・モニターのアクティブ化、または非アクティブ化を行います。 イベント・モニターの現在の状態 (アクティブまたは非アクティブ) は、 EVENT_MON_STATE 組み込み関数によって判別することができます。
SET EVENT MONITOR STATE ステートメントは、トランザクションの制御下にありません。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込んだり、動的 SQL ステートメントを使用して発行したりすることができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。
許可
このステートメントの許可 ID が持つ特権には、DBADM または SQLADM 権限が含まれている必要があります。
構文
説明
- イベント・モニター名
- アクティブ化または非アクティブ化するイベント・モニターを指定します。 この名前は、カタログに存在しているイベント・モニターを指定していなければなりません (SQLSTATE 42704)。 新規状態
- new-state (新しい状態) は、整数定数として、
または実行時に適切な値が入れられるホスト変数の名前として指定することができます。 次の値が指定可能です。
- 0
- 指定したイベント・モニターを非活動化することを指定します。 1
- 指定したイベント・モニターをアクティブ化することを指定します。 そのイベント・モニターは既にアクティブであってはなりません。 そうでない場合、警告 (SQLSTATE 01598) が出されます。 ホスト変数 (host-variable)
- データ・タイプは INTEGER です。 指定する値は、0 または 1 でなければなりません (SQLSTATE 42815)。 host-variable が標識変数を伴っている場合、 その標識変数の値は NULL 値以外でなければなりません (SQLSTATE 42815)。
ルール
- 定義できるイベント・モニターの数には制限はありませんが、各データベース・パーティション上で、最大で 128 のイベント・モニターを同時にアクティブ化できます。 複数パーティション・データベース環境では、各データベースごとに最大で 32 個のグローバル・イベント・モニターを同時にアクティブにすることができます。
- イベント・モニターをアクティブ化するには、 そのイベント・モニターが作成されたトランザクションはコミットされていなければなりません (SQLSTATE 55033)。 この規則は、(1 つの作業単位内で) イベント・モニターを作成し、 そのモニターをアクティブ化し、その後で、トランザクションをロールバックするのを防止します。
- イベント・モニター・ファイルの数またはサイズが、 CREATE EVENT MONITOR ステートメントの MAXFILES または MAXFILESIZE に指定された値を超える場合には、 エラー (SQLSTATE 54031) になります。
- イベント・モニターのターゲット・パス (CREATE EVENT MONITOR ステートメントにより指定) が、 他のイベント・モニターで既に使用されている場合、エラー (SQLSTATE 51026) になります。
注
- 非 WLM イベント・モニターをアクティブ化すると、それに対応するカウンターはいずれもリセットされます。 WLM、ロック、および作業単位イベント・モニターをアクティブ化すると、カウンターはリセットされません。
- WRITE TO TABLE イベント・モニターは、SET EVENT MONITOR STATE を使用して開始されると、 SYSCAT.EVENTMONITORS カタログ・ビューの EVMON_ACTIVATES 列を更新します。 セット演算が実行された作業単位が何らかの理由でロールバックされると、そのカタログ更新は失われます。 イベント・モニターが再開したときに、ロールバックされた EVMON_ACTIVATES 値が再使用されます。
- イベント・モニターを実行するデータベース・パーティションがアクティブでない場合は、次回そのデータベース・パーティションをアクティブ化した時点で、イベント・モニターもアクティブ化されます。
- イベント・モニターは、アクティブ化の後に、明示的に非アクティブ化されるか、インスタンスがリサイクルされるまで、自動始動のイベント・モニターのように動作します。 つまり、データベース・パーティションが非アクティブ化された時点でイベント・モニターがアクティブであれば、そのデータベース・パーティションがそれ以降に再びアクティブ化された時点で、イベント・モニターも明示的に再アクティブ化されます。
- データベースが非アクティブ化するときに、アクティビティー・イベント・モニターがアクティブである場合、キューにあるバックログされたアクティビティー・レコードはすべて廃棄されます。 確実にすべてのアクティビティー・イベント・モニター・レコードを入手し、何も廃棄されないようにするには、データベースを非アクティブ化する前に、まずアクティビティー・イベント・モニターを明示的に非アクティブ化します。 アクティビティー・イベント・モニターを明示的に非アクティブ化した場合、キューにあるバックログされたアクティビティー・レコードはすべて、イベント・モニターが非アクティブ化される前に処理されます。
例
- 例 1: SMITHPAY という名前のイベント・モニターを活動化します。
SET EVENT MONITOR SMITHPAY STATE = 1
- 例 2: MYSAMPLE という複数パーティション・データベースがあり、それぞれのデータベース・パーティションを 0 および 2 と想定します。 パーティション 2 はまだアクティブではありません。
MYSAMPLE がデータベース・パーティション 2 でアクティブ化すると、MYEVMON も自動的にアクティブ化します。 この動作は、On database partition 0: CONNECT TO MYSAMPLE; CREATE EVENT MONITOR MYEVMON ON DBPARTITIONNUM 2; SET EVENT MONITOR MYEVMON STATE 1;
SET EVENT MONITOR MYEVMON STATE 0
を実行するか、パーティション 2 が停止するまで続きます。