ヘッダーをスキップ
Oracle® GoldenGate Application Adapters Oracle GoldenGateアダプタの管理
12c (12.1.2.1.1)
E67383-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

14 イベント・ハンドラの構成

この章では、各種イベント・ハンドラ、使用するイベント・ハンドラの指定方法およびオプションについて説明します。出力のフォーマット方法およびOracle GoldenGateレポート・ファイルの内容について説明します。

この章の内容は次のとおりです。

14.1 イベント・ハンドラの指定

トランザクション、操作およびメタデータ・イベントのJavaでの処理は次のようになります。

  • Oracle GoldenGate Extractがローカル証跡データを読み取り、トランザクション、操作およびデータベース・メタデータをユーザー・イグジットに渡します。メタデータは、ソース定義ファイルから、またはデータベースの問合せによって取得します。

  • Javaフレームワークがイベントを発行します。イベントは、オプションでカスタム・イベント・フィルタによってフィルタされます。

  • ハンドラ(イベント・リスナー)がこれらのイベントを処理し、トランザクション、操作およびメタデータを処理します。特定のタイプのターゲットにカスタム・フォーマッタが適用される場合があります。

既存のハンドラがいくつかあります。

  • MapMessageを使用するか、TextMessageをカスタマイズ可能なフォーマッタと組み合せて使用し、JMSプロバイダに送信するメッセージ・ハンドラ。

  • JMSメッセージをOracleアドバンスト・キューイング(AQ)に送信する、専用のメッセージ・ハンドラ。

  • 1つのファイルまたはローリング・ファイルに書き込むファイル・ライター・ハンドラ。


    注意:

    ファイル・ライター・ハンドラはJMS TextMessageハンドラと完全に同じフォーマッタを使用できるため、ファイル・ライター・ハンドラは開発ユーティリティとして特に有用です。ファイル・ライターを使用すると、JMSに実際にメッセージを送らずにJMS用のフォーマッタのテストとチューニングを簡単に行えます。

イベント・ハンドラはメインJavaプロパティ・ファイルを使用して構成できます。あるいは、オプションで別のプロパティ・ファイルから直接プロパティを読み込む場合もあります(ハンドラの実装によって異なります)。ハンドラのプロパティは次の構文を使用して設定されます。

gg.handler.{name}.someproperty=somevalue

これによって、プロパティ・ファイルでnameで識別されるハンドラ・インスタンスのプロパティsomepropertyが値somevalueに設定されます。このnameはプロパティ・ファイルで使用され、アクティブ・ハンドラを定義し、そのプロパティを設定します。これはユーザー定義です。

実装上の注意(Java開発者向け): 前述の例の後、ハンドラがインスタンス化されると、メソッドvoid setSomeProperty(String value)がハンドラ・インスタンスでコールされ、文字列値somevalueが渡されます。JavaBean PropertyEditorもハンドラに対して定義できます。この場合、文字列は、セッター・メソッドに対して適切な型に自動的に変換されます。たとえば、Javaアプリケーション・プロパティ・ファイルで次のような設定だとします。

# the list of active handlers: only two are active
gg.handlerlist=one, two
# set properties on 'one'
gg.handler.one.type=file
gg.handler.one.format=com.mycompany.MyFormatter
gg.handler.one.file=output.xml
# properties for handler 'two'
gg.handler.two.type=jms_text
gg.handler.two.format=com.mycompany.MyFormatter
gg.handler.two.properties=jboss.properties
# set properties for handler 'foo'; this handler is ignored
gg.handler.foo.type=com.mycompany.MyHandler
gg.handler.foo.someproperty=somevalue

タイプによってハンドラ・クラスが識別されます。他のプロパティは、作成されるハンドラのタイプによって異なります。別個のプロパティ・ファイルがハンドラ(JMSハンドラなど)の初期化に使用される場合、プロパティ・ファイルはクラスパスにあります。たとえば、プロパティ・ファイルが{gg_install_dir}/dirprm/foo.propertiesにある場合、プロパティ・ファイルでgg.handler.name.properties=foo.propertiesのように指定します。

14.2 JMSハンドラ

メインJavaプロパティ・ファイルは、アクティブ・ハンドラを識別します。JMSハンドラは、必要に応じてJMS固有の構成用の個別のプロパティ・ファイルを使用できます。これによって、複数のJMSハンドラが同時に稼働するよう構成できます。

いくつかのJMSプロバイダ(JBoss、TIBCO、Solace、ActiveMQ、WebLogic)用にサンプルが含まれています。使用している環境用の出発点として特定のJMSプロバイダに適したプロパティ・ファイルを選択できます。JMSプロバイダごとに設定は多少異なります。環境に特有の設定もあります。

Java jar (ggjava)のインストール・ディレクトリには、コア・アプリケーションjar (ggjava.jar)とそのその依存性がresources/lib/*.jarに含まれています。リソース・ディレクトリはすべての依存性と構成を含み、クラスパス内にあります。

JMSクライアントjarがシステムにすでにある場合、コピーせずに直接参照し、クラスパスに追加できます。

次のタイプのJMSハンドラを指定できます。

  • jms - テキスト・メッセージをトピックまたはキューに送信します。メッセージはVelocityテンプレートを使用するか、Javaでフォーマッタを記述してフォーマットします。ファイルへの書込みの際、同じフォーマッタをjms_text messageに使用できます。(jms_textjmsと同義です。)

  • aq - テキスト・メッセージをOracleアドバンスト・キューイング(AQ)に送信します。aqハンドラは、AQへの配信用に構成されたjmsハンドラです。メッセージはVelocityテンプレートまたはカスタム・フォーマッタを使用してフォーマットできます。

  • jms_map - JMS MapMessageをトピックまたはキューに送信します。メッセージのJMSTypeを表の名前に設定します。メッセージの本体は次のメタデータとそれに続く列名と列値のペアで構成されます。

    • GG_ID - この操作を一意に識別するレコードの位置

    • GG_OPTYPE - SQLのタイプ(挿入/更新/削除)

    • GG_TABLE - 操作が行われた表の名前

    • GG_TIMESTAMP - 操作のタイムスタンプ

14.3 ファイル・ハンドラ

ファイル・ハンドラは、実際のターゲットがJMSで、メッセージ形式がカスタムJavaまたはVelocityテンプレートを使用して開発されている場合にメッセージ形式の確認に使用されることが多くあります。ファイル・ハンドラを使用するプロパティ・ファイルを次に示します。

# one file handler active, using Velocity template formatting
gg.handlerlist=myfile
gg.handler.myfile.type=file
gg.handler.myfile.rollover.size=5M
gg.handler.myfile.format=sample2xml.vm
gg.handler.myfile.file=output.xml

この例では、1つのハンドラを使用して、(JMSハンドラとファイル・ハンドラが同時に使用されることはある)output.xmlという名前のファイルに書き込みます。sample2xml.vmという名前のVelocityテンプレートを使用します。テンプレートはクラスパスを介して特定されます。

14.4 カスタム・ハンドラ

カスタム・ハンドラのコーディングの詳細は、「Javaでのカスタム・ハンドラのコーディング」を参照してください。

14.5 出力のフォーマット

前述のとおり、既存のJMSおよびファイル出力ハンドラはプロパティ・ファイルを使用して構成できます。各ハンドラには、設定可能な固有のプロパティがあります。たとえば、出力ファイルをファイル・ハンドラに設定したり、JMS宛先をJMSハンドラに設定できます。これらの両ハンドラでカスタム・フォーマッタも指定できます。同じフォーマッタを両方のハンドラに使用できます。カスタム・フォーマット用のJavaコードを記述するかわりに、Velocityテンプレートを指定できます。詳細は、「イベントのフィルタリング」を参照してください。

14.6 レポート

Extractプロセスが停止すると、スループットおよび処理されたデータの量に関するサマリー統計が生成されます。また、統計は、定期的に(指定した時間の経過後または指定した数のレコードの処理後)書き込まれます。時間とレコード数の両方が指定された場合、いずれかのイベントが発生すると、レポートが生成されます。これらの統計サマリーは、Oracle GoldenGateレポート・ファイルおよびユーザー・イグジット・ログ・ファイルに書き込まれます。