Db2 10.5 for Linux, UNIX, and Windows

EVMON_UPGRADE_TABLES プロシージャー - イベント・モニターのターゲット表のアップグレード

EVMON_UPGRADE_TABLES プロシージャーは、 イベント・モニターの作成後に追加された新規モニター・エレメントまたは変更されたモニター・エレメントに対応するように、 イベント・モニターのターゲットの SQL イベント表または未フォーマット・イベント表を変更します。

構文

構文図を読む構文図をスキップする
>>-EVMON_UPGRADE_TABLES--(--evmon_name--,--evmon_type----------->

>--,--options--,--num_evmons_evaluated-------------------------->

>--,--num_evmons_to_upgrade--,--num_evmons_upgraded--)---------><

スキーマは SYSPROC です。

プロシージャー・パラメーター

evmon_name
既存の表定義をアップグレードする対象となるイベント・モニターの名前を指定する、タイプ VARCHAR (128) の入力引数。 イベント・モニターのターゲットのタイプは、表または未フォーマット・イベント表 でなければなりません。evmon_name を指定した場合、evmon_type 引数は無視されます。
この名前には、LIKE 述部に使用するようなパターン式を使用できます。つまり、下線文字 (_) またはパーセント (%) 文字をワイルドカード文字として含めることができます。LIKE 述部について詳しくは、LIKE 述部を参照してください。パターン式に 下線文字またはパーセント文字を使用する必要がある場合は、エスケープ・オプションを使用して パターン中の下線文字またはパーセント文字の先行文字を指定します。
evmon_name を指定しない場合、または NULL に設定した場合は、 これ以外の入力パラメーターに指定した条件に従って、 表または未フォーマット・イベント表の出力ターゲットを持つすべてのイベント・モニターが処理されます。
evmon_type
既存の表定義をアップグレードする対象となるイベント・モニターのタイプを指定する、タイプ VARCHAR (128) の入力引数。 指定するタイプは、 SYSCAT.EVENTS の TYPE 列にある値のいずれかでなければなりません。詳しくは、SYSCAT.EVENTS カタログ・ビューを参照してください。このイベント・タイプのイベント・モニターで、ターゲット・タイプが表または未フォーマット・イベント表であるイベント・モニターは、すべて アップグレード対象として評価されます。evmon_type を指定する場合、evmon_name は NULL でなければなりません。evmon_type を指定しない場合、または NULL に設定した場合は、 これ以外の入力パラメーターに指定した条件に従って、 すべてのタイプのイベント・モニターが評価されます。
options
イベント・モニターのアップグレード設定を 1 つ以上指定できる、 タイプ CLOB(8K) の入力引数。このパラメーターのデフォルトは NULL です。設定は、次の形式の名前と値の対として指定されます。
<setting name tag>value</setting name tag>
設定は、それぞれ最大で 1 回指定できます。設定名には、大/小文字の区別があります。各設定値は、 特に注記がない限り、大/小文字を区別しません。使用可能な設定名タグは次のとおりです。
  • '<tbspaceName>value</tbspaceName>'

    新規グループを作成する表スペースの名前を指定します。この値には、大/小文字の区別があります。これを指定しない場合、 イベント・モニターの現行のターゲット表がすべて同じ表スペースに存在するのであれば、 新規表もその同じ表スペースに作成されます (従って、すべての表が同じ表スペースに存在することになります)。 そうでない場合は、「CREATE EVENT MONITOR」の「IN」節のところに記載している表スペース選出アルゴリズムが使用されます (CREATE EVENT MONITOR ステートメントを参照)。

  • '<createNewGroups>value</createNewGroups>'

    新規グループを作成するかどうかを指定します。 指定できる値は、「yes」または「no」のどちらかです。指定しない場合、デフォルトの「yes」となり、アップグレードするイベント・モニターに新規グループが作成されます。

  • '<verbose>value</verbose>'

    ストアード・プロシージャーから結果セットとして診断情報を返すかどうかを指定します。 指定できる値は、「yes」または「no」のどちらかです。指定しない場合、デフォルトの「yes」となり、診断情報が結果セット内に返されます。「no」を指定すると、結果セットは返されません。ストアード・プロシージャーから結果セットを返すためには、 ユーザー TEMPORARY 表スペースが存在しなければならないことに注意してください。結果セットについては、表 1 を参照してください。

  • '<force>value</force>'

    アップグレードが必要かどうか判断する際に イベント・モニターの検査を強制するかどうかを指定します。 指定しない場合、デフォルトの「no」となります。「no」を指定した場合は、SYSCAT.EVENTMONITORS の VERSIONNUMBER 列が検査され、その値が現行バージョンと等しければ、イベント・モニターは最新であると見なされます。「yes」を指定した場合は、SYSCAT.EVENTMONITORS の VERSIONNUMBER 列は無視され、アップグレードが必要かどうか、または新規表を追加すべきかどうかを調べるために、イベント・モニターの各表が再検査されます。force を yes に設定すると有用なのは、新規イベント・グループが追加されたイベント・モニターのアップグレードを、createNewGroups オプションに値 NO を指定して既に一度済ませており、新規イベント・グループ用の新規表を作成するためにそのイベント・モニターをもう一度強制的にアップグレードしたい場合です。

  • '<escape>char</escape>'

    evmon_name のパターン式の下線 (_) 文字とパーセント (%) 文字の 特殊な意味を変更するために使用する文字を指定します。これにより、evmon_ name を使用して、実際にパーセント文字および下線文字を含ん でいる値を突き合わせることが可能になります。このオプションを指定しない場合、 エスケープ文字は使用できません。

num_evmons_evaluated
タイプ INTEGER のこの出力パラメーターには、 表をアップグレードする必要があるかどうかストアード・プロシージャーが 検査したイベント・モニターの数が返されます。
num_evmons_to_upgrade
タイプ INTEGER のこの出力パラメーターには、 実際にアップグレードを必要とするターゲット表を少なくとも 1 つ持つ イベント・モニターの総数が返されます。これには、新規または変更されたエレメント、あるいは新規イベント・グループを持つ イベント・モニターが含まれます。
num_evmons_upgraded
タイプ INTEGER のこの出力パラメーターには、 ターゲット表が正常にアップグレードまたは作成された イベント・モニターの総数が返されます。

許可

この関数を実行するには、DBADM 権限が必要です。

デフォルトの PUBLIC 特権

なし

使用上の注意

  • evmon_name および evmon_type の両方が NULL の場合、ストアード・プロシージャーは SYSCAT.EVENTTABLES カタログ表をスキャンし、TABLE イベント・モニターおよび UE 表イベント・モニターごとにターゲット表をアップグレードする必要があるかどうか検査します。
  • SYSCAT.EVENTMONITORS の VERSIONNUMBER 列には、 イベント・モニターが作成されたとき、または最後にアップグレードされたときの バージョン、リリース、および修正レベルが入っています。VERSIONNUMBER と 現行リリースとの間に列の追加や変更があった場合に、 イベント・モニターのターゲット表はアップグレードが必要であると見なされます。つまり、 これらのリリース間の変更のみが考慮されます。
    • データベースのアップグレード時に、VERSIONNUMBER 列に値が入っていなければ、 イベント・モニターのアップグレード元のリリース番号が設定されます。
    • evmon_upgrade_tables がイベント・モニターを処理し、そのイベント・モニターが変更を必要としない場合、VERSIONNUMBER は現行レベルに更新されます。これによって、どのイベント・モニターが処理済みかが分かりやすくなります。
  • evmon_type を指定すると、ストアード・プロシージャーは SYSCAT.EVENTTABLES カタログ表をスキャンし、 そのイベント・タイプが記録されているイベント・モニターごとに、ターゲット表をアップグレードする必要があるかどうか 検査します。1 つのイベント・モニターで複数のイベント・タイプを記録できる場合に、 そのうちの 1 つのタイプがアップグレード対象として選択されると、 そのタイプに関する表のみが検査され、必要に応じてアップグレードされます。例えば、 イベント・モニターが CREATE EVENT MONITOR SAMPLE_EVMON FOR CONNECTIONS, STATEMENTS WRITE TO TABLE で作成されている場合に、evmon_type に CONNECTIONS を指定すると、 CONTROL、CONNHEADER、および CONN のグループのみが検査され、 STMT および SUBSECTION はスキップされます。しかし、それにもかかわらず、 このイベント・モニターのバージョン番号は更新されます。後でステートメント・イベント表をアップグレードする必要が生じた場合は、 force オプションを使用する必要があります。
  • 表はアップグレードに関して検査される前に、まず、イベント・モニターのアクティブ化の際に使用されるのと同じ規則で妥当性検査されます。 この妥当性検査により、各列の名前がモニター・エレメント名と一致すること、各列のデータ・タイプがそのエレメントと互換性があること、およびパーティション・データベース環境では、表の最初の列が PARTITION_KEY であることが確認されます。
  • 変更の始まり新しい論理データ・グループがイベント・モニターに追加されると、ALTER EVENT MONITOR が呼び出され、論理データ・グループが追加されます。その後、新しい表のスキーマは CURRENT SCHEMA 特殊レジスターの値にデフォルト設定されます。変更の終わり
  • アップグレードが必要な表を含むイベント・モニターの場合:
    • イベント・モニターがアクティブである場合は、非アクティブ化され (まず、プロシージャーはキューに入れられたイベントが排出されるまで待機します)、 ターゲット表に対する排他ロックが取得されます。3 秒待機しても表をロックできない場合は、 次のイベント・モニターに処理が移ります。
    • イベント・モニターの表をアップグレードしている間、 そのイベント・モニターに関する新規イベントは失われます。
    • 列をドロップする、あるいは列を追加または変更して最新の状態にするときには、表が変更されます。 '<createNewGroups>yes</createNewGroups>' オプションを指定すると、 新規表が作成されます。
      • 表は、ALTER TABLE ステートメントを使用して変更されます。 ただし、インライン LOB 長が指定された BLOB 列または CLOB 列が表に含まれていて、そのインライン長を短くする必要がある場合、または VARCHAR 列を CLOB に変更する場合は、ALTOBJ ストアード・プロシージャーが使用されます。Db2_UTIL_MSGPATH レジストリー変数を使用すると、ALTOBJ メッセージを instanceName/tmp 以外のディレクトリーにリダイレクトできます。
      • 表の列が変更またはドロップされると、すべての従属オブジェクトが 無効になります。それらの従属オブジェクトの再有効化がいつ行われるかは、auto_reval データベース構成パラメーターの設定によって決まります。 auto_reval について詳しくは、資料を参照してください。
    • 表が変更された後、ADMIN_REVALIDATE_DB_OBJECTS ストアード・プロシージャーが呼び出されて、(必要に応じて) 表の再編成を実行し、表を使用できるようにします。
    • 排他表ロックが解放されます。
    • イベント・モニターの表がすべて正常にアップグレードされると、 SYSCAT.EVENTMONITORS の VERSIONNUMBER 列は現行のバージョン番号に更新され、 COMMIT が発行されます。そうでない場合、この作業単位はロールバックされます。
    • ストアード・プロシージャーによってイベント・モニターが非アクティブ化された場合、 ストアード・プロシージャーが処理を完了した後に再アクティブ化されます。
  • イベント・モニター表の作成時に CREATE EVENT MONITOR ステートメントに INCLUDES 節 が指定されていた場合、その表はスキップされます。INCLUDES 節が指定されていたかどうかを 調べるには、SYSCAT.EVENTTABLES の TABOPTIONS 列を確認してください。 バージョン 10.1 より前に INCLUDES を使用して作成されたイベント・モニターの場合、 この情報は失われ、TABOPTIONS 列にはブランクが入っていることに注意してください。
  • イベント・モニター表の作成時に CREATE EVENT MONITOR ステートメントに EXCLUDES 節 が指定されていた場合、その表はアップグレードの対象となります。イベント・モニターが作成された後の変更に 対応するように表が変更されます。EXCLUDES 節が指定されていたかどうかを 調べるには、SYSCAT.EVENTTABLES の TABOPTIONS 列を確認してください。 バージョン 10.1 より前に EXCLUDES を使用して作成されたイベント・モニターの場合、 この情報は失われ、TABOPTIONS 列にはブランクが入っていることに注意してください。
  • プロシージャーは、イベント・モニターの個々のターゲット表を処理している時に検出した エラーを返しません。
  • 結果セットが戻される場合 (プロシージャー・パラメーターを参照)、以下の情報に注意してください。
    • EVMON_UPGRADE_TABLES プロシージャーを実行する前に、ユーザー一時表スペースが存在している必要があります。
    • 結果セットに使用される表の名前は SESSION.EVMON_UPGRADE_TABLES_RESULTSET です。
    • 同じセッションで以前に EVMON_UPGRADE_TABLES を実行した結果 SESSION.EVMON_UPGRADE_TABLES_RESULTSET が既に存在する場合、新しい結果が既存の表に追加されます。 既存の表が作成された後に、何らかの方法で表定義が変更された場合には、ドロップされ、表の新規バージョンが作成されます。
    • EVMON_UPGRADE_TABLES が実行されている接続がドロップされると、SESSION.EVMON_UPGRADE_TABLES_RESULTSET も自動的にドロップされます。 この表に使用されるユーザー TEMPORARY 表スペースは、SESSION.EVMON_UPGRADE_TABLES_RESULTSET 表がドロップされるまでドロップできません。
  • オンライン・フィックスパック更新の際、このプロシージャーを呼び出す前に DB2® pureScale® インスタンスが均質の状態になっていなければなりません。インスタンスが混成状態になっている場合、このプロシージャーでモニター・イベント表を更新することはできません。詳しくは、進行中のオンライン・フィックスパック更新の影響を受けるデータベースおよびインスタンスの操作を参照してください。

Db2 バージョン 9.7 でユーザーが以下のイベント・モニターを作成していたとします。

create event monitor lock for locking write to unformatted event table
create event monitor act for activities write to table control (in
actspace), activity (in actspace), activitystmt (in actspace), activityvals
(in actspace)
create event monitor stat for statistics write to table
create event monitor conn for connections write to table
データベースを現行リリースにアップグレードした後に、 すべてのイベント・モニター表をアップグレードするには、以下のコマンドを使用します。
call evmon_upgrade_tables(null, null, null, ?, ?, ?)
そうではなく、act のアップグレードのみを必要とする場合は、 以下のコマンドを使用します。
call evmon_upgrade_tables('ACT', null, null, ?, ?)
また、アクティビティー・イベント・モニターのみをアップグレードすることを選択した場合は、以下のコマンドを使用します。
call evmon_upgrade_tables(null,'ACTIVITIES', null, ?, ?, ?)

戻される情報

表 1 では、結果セットを作成することを選択した場合にそこに戻される情報が説明されています。
表 1. EVMON_UPGRADE_TABLES によって表 SESSION.EVMON_UPGRADE_TABLES_RESULTSET に戻される情報
列名 データ・タイプ 説明または対応するモニター・エレメント
EVMON_NAME VARCHAR(128) この診断メッセージが該当するイベント・モニターの名前。
EVMON_TYPE VARCHAR(128) この診断メッセージが該当するイベント・モニターのイベント・タイプ。
MESSAGE_TIME TIMESTAMP message_time - タイム・スタンプ・コントロール表メッセージ・モニター・エレメント
MESSAGE_TEXT VARCHAR(1024) 診断メッセージ。