未フォーマット・イベント (UE) 表に書き込むイベント・モニターの作成

イベント・モニター・データ収集のパフォーマンスが特に重要である場合は、イベント・モニターがその出力を未フォーマット・イベント (UE) 表に書き込むようにすることができます。 UE 表へのデータ書き込みの多くは、インライン・バイナリー・データとして書き込まれます。 このようにすると、データ収集時の入出力をより高速にできます。

UE 表がイベント・モニターの通常表よりも優っているもう 1 つの点は、通常、イベント・モニターの作成時点でさまざまなオプション (使用するバッファーのサイズ、イベント・モニターをブロック化するか非ブロック化するか、どのタイプのデータ (論理グループ) を収集する必要があるか) を考慮する必要がないということです。 ただし、収集されるデータの大部分がバイナリー・フォーマットであるため、イベント・データを調査できるようにするには、UE 表を後処理する必要があります。
注: UE 表に関連する以下の機能が使用可能です。
  • プロシージャー EVMON_UPGRADE_TABLES を使用して、以前のリリースのイベント・モニターにより生成された UE 表をアップグレードできます。 この機能を使用すると、過去に記録されたイベント・モニター・データを簡単に保持することができます。
  • 出力を UE 表に書き込めるすべてのイベント・モニターは、通常表にも書き込むことができます。
  • プロシージャー EVMON_FORMAT_UE_TO_TABLES のオプション PRUNE_UE_TABLE を使用して、不要なデータを UE 表から除去することができます。

始める前に

未フォーマット・イベント表に書き込むイベント・モニターを作成するときは、以下の考慮事項に留意してください。
  • UE 表に書き込むイベント・モニターを作成するには、SQLADM 権限または DBADM 権限が必要です。
  • 未フォーマット・イベント表には、パフォーマンスが最適になるような表スペースを使用します。 表スペースを作成するときは、以下のガイドラインに留意してください。
    • ページ・サイズ (PAGESIZE) を可能な限り大きく指定します (最大で 32KB)。 ページ・サイズが大きいと、表の行を使用して、イベント・データを含む BLOB をインラインで書き込むことができます。 ページ・サイズが小さすぎて BLOB をインライン化できない場合、イベント・モニターのパフォーマンスが低下することがあります。 データベース・マネージャーは、未フォーマット・イベント表内の event_data BLOB 列をインライン化しようとしますが、これは必ずしも可能ではありません。 未フォーマット・イベント表内の行がインライン化されているかどうかを確認するには、ADMIN_IS_INLINED 関数を使用します。 行がインライン化されていない場合は、行が必要とするスペースを判別するために、ADMIN_EST_INLINE_LENGTH 関数を使用します。
    • NO FILE CACHING SYSTEM オプションを指定します。
  • パーティション・データベース環境では、表スペースが存在するパーティションを考慮します。 ターゲットの未フォーマット・イベント表の表スペースが、あるデータベース・パーティション上に存在していない場合、そのターゲットの未フォーマット・イベント表のデータは無視されます。 この動作を利用すると、ユーザーは、特定のデータベース・パーティションにのみ存在する表スペースを作成することにより、選択するモニター用にデータベース・パーティションのサブセットを選択できることになります。

このタスクについて

以下のイベント・モニターのタイプは、UE 表の使用をサポートしています。
  • 作業単位
  • パッケージ・キャッシュ
  • ロック
注: 名前にかかわらず、未フォーマット・イベント表は引き続きリレーショナル表です。 例えばロッキング・イベント・モニターにより生成される UE 表と、ロッキング・イベント・モニターにより生成される通常表との主な違いは、UE 表の大部分のデータが EVENT_DATA 列にバイナリー・フォーマットで書き込まれるということです。 UE 表の構造について詳しくは、 未フォーマット・イベント表の列定義 を参照してください。

プロシージャー

UE 表に書き込むイベント・モニターを作成するには、以下のようにします。

  • WRITE TO UNFORMATTED EVENT TABLE 節を使用して、CREATE EVENT MONITOR ステートメントを作成します。
    例えば、uowmon という作業単位イベント・モニターを作成するには、以下のようなステートメントを使用します。
    CREATE EVENT MONITOR uowmon FOR UNIT OF WORK
                         WRITE TO UNFORMATTED EVENT TABLE
    デフォルトでは、イベント・モニターが作成する UE 表の名前は、イベント・モニターの名前と同じです。
  • デフォルトの表名とは別の名前を指定するには、TABLE 節を使用します。
    例えば、myunitsofwork という UE 表を使用する場合は、以下のようにステートメントを構成します。
    CREATE EVENT MONITOR uowmon FOR UNIT OF WORK
                         WRITE TO UNFORMATTED EVENT TABLE
                         TABLE myunitsofwork
    IN tablespace-name 節を使用して、UE 表を格納するための表スペースを指定することもできます。
    CREATE EVENT MONITOR uowmon FOR UNIT OF WORK
                         WRITE TO UNFORMATTED EVENT TABLE
                         TABLE myunitsofwork
                         IN mytablespace
    または
    CREATE EVENT MONITOR uowmon FOR UNIT OF WORK
                         WRITE TO UNFORMATTED EVENT TABLE
                         IN mytablespace
    最初の例では、UE 表 myunitsofwork を表スペース mytablespace に配置します。2 番目の例では、uowmon という UE 表 (表名が指定されていないため、デフォルトとなっています) を表スペース mytablespace に配置します。
  • デフォルトでは、UE 表に書き込むイベント・モニターが作成されて、データベースを活動化するとこれも自動的に活動化されます。 MANUALSTART 節を使用して、この動作をオーバーライドすることができます。
    CREATE EVENT MONITOR uowmon FOR UNIT OF WORK
                         WRITE TO UNFORMATTED EVENT TABLE
                         MANUALSTART
    
    上記の例では、SET EVENT MONITOR STATE ステートメントを使用して、イベント・モニター uowmon を常に手動でアクティブ化する必要があります。

次の作業

デフォルトでは、 バージョン 9.7 以降で導入されたイベント・モニターは、AUTOSTART イベント・モニターとして作成されます。 データベースが次に活動化されるとき、およびその後データベースが活動化されるときに、これらのイベント・モニターが自動的に活動化されます。 データベースが次に活動化される前にイベント・モニターをただちに活動化しようとするときは、SET EVENT MONITOR STATE ステートメントを使用してイベント・モニターを手動で開始します。 ロッキング、作業単位、およびパッケージ・キャッシュの各イベント・モニターだけでなく、データ収集も有効化する必要があります。