この章の内容は次のとおりです。
現在のリリースのOracle GoldenGate Java配信には、Java 7が必要です。Javaと必須のJava共有ライブラリに正しくアクセスする方法は、Javaの構成に関する項を参照してください。Java用Oracle GoldenGateメインJAR(ggjava.jar
)の場所を指すようアダプタ・プロパティ・ファイルを変更します。必要に応じて追加のJVMランタイム起動オプション(起動時にJVMに直接渡される)を設定します。
jvm.bootoptions=-Djava.class.path=.:ggjava/ggjava.jar-Xmx512m -Xmx64m
特に次のオプションに注意してください。
java.class.path
には、コア・アプリケーション(ggjava/ggjava.ja
r)へのパス指定が含まれている必要があります。現在のディレクトリ(.)は、クラスパスにも含まれている必要があります。ロギングはJVMのロード時に初期化されるので、java.class.path
変数はロギング・プロパティ・ファイル(log4j
プロパティ・ファイルなど)への任意のパス指定を含んでいる必要があります。ロギング機能に必要な依存関係JARはggjava.jar
に含まれており、明示的に含める必要はありません。パス指定では、Oracle GoldenGateインストール・ディレクトリを基準にファイルおよびディレクトリを参照し、Javaプロパティ・ファイル、Velocityテンプレートおよびdirprm
サブディレクトリ内の他のクラスパス・リソースを格納できます。Javaアプリケーション・プロパティ・ファイルでクラスパスに追加することもできます。ハンドラ依存関係JARのパス指定は、ここでも追加できます。ただし、ハンドラの依存関係はgg.classpath
変数を使用して追加するほうが、ベスト・プラクティスと考えられています。
jvm.bootoptions
プロパティでは、JVMの初期ヒープ・サイズ(Xms)とJVMの最大ヒープ・サイズ(Xmx)も制御できます。最大ヒープ・サイズを増やすと、ガベージ・コレクションの頻度が減るため、パフォーマンスが向上することがあります。また、Javaのメモリー不足例外が発生する場合には、最大ヒープ・サイズを増やす必要があります。
システム用にプロパティ・ファイルを正しく構成したら、通常変更しません。構成オプションの詳細は、「共通プロパティ」を参照してください。
Java配信は、Oracle GoldenGate ReplicatプロセスとOracle GoldenGate Extract (データ・ポンプ)プロセスのどちらとも互換性があります。ベスト・プラクティスとして、Oracle GoldenGate Replicatプロセスを使用してください。どちらを使用しても、機能は似ています。トランザクション・データは、Oracle GoldenGate証跡ファイルから読み込まれ、Java配信のユーザー・イグジット・ライブラリに配信されます。ユーザー・イグジット・ライブラリは、JNIインタフェースからOracle GoldenGate Java配信モジュールへデータを転送します。Java配信モジュールは、データを各種のターゲットにストリーミングできるように構成が可能です。Oracle GoldenGate Javaアダプタ製品でサポートされているターゲットには、JMS、ファイル書込み、カスタム統合が含まれます。Oracle GoldenGate for Big Data製品には、これらの統合すべてのほか、HDFS、HBase、Flume、Kafkaなどのビッグ・データ・ターゲットに対するストリーミング機能もあります。
Replicat
プロセスを使用しても、Extract
プロセスを使用しても、差はわずかです。新しい統合をデプロイするとき、または以前の統合をExtractプロセスまたはReplicatプロセスに変換するときには、ドキュメントを十分に確認してください。
Oracle GoldenGate Replicatプロセスは、トランザクション・データをJavaモジュール用のOracle GoldenGateに送信するように構成できます。Replicatは、ローカルの証跡(dirdat/aa
など)を消費して、データをJava配信モジュールに送信します。Javaモジュールは、すべてのデータを処理して、それを必要なターゲットに適用します。
次に、Replicat
プロセスを追加する例を示します。
ADD REPLICAT javarep, EXTTRAIL ./dirdat/aa
前述のプロセス名と証跡名は、任意の有効な名前で置き換えます。プロセス名は8文字以下、証跡名は2文字である必要があります。Replicatパラメータ・ファイル(javarep.prm
)で、ユーザー・イグジット・ライブラリの場所を指定します。
Replicatプロセスは、アプリケーションにトランザクションのグループ化が組み込まれています。トランザクションのグループ化は、データをターゲット・データベースにストリーミングするとき、パフォーマンスを大きく改善する場合があります。トランザクションのグループ化は、データをビッグ・データ・アプリケーションにストリーミングするときにも、パフォーマンスを大きく改善する場合があります。トランザクションのグループ化を制御するReplicatパラメータは、Replicat構成ファイルにあるGROUPTRANSOPS
変数です。この変数のデフォルト値は1000
で、Replicatプロセスは1000個の操作を1つのターゲット・トランザクションにグループ化しようとします。パフォーマンス・テストによると、GROUPTRANSOPS
を大きくするほど、ビッグ・データ・アプリケーションにデータをストリーミングするときのパフォーマンスは向上することがわかっています。GROUPTRANSOPS
変数を1
に設定すると、ソース証跡ファイル(ソース・データベース)からの元のトランザクション境界が維持されます。
Oracle GoldenGate Java配信レイヤーにも、トランザクションのグループ化の機能があります。ReplicatプロセスでJava配信をホストしている場合、Java配信レイヤーのグループ化機能を使用するのは望ましくないとされています。Java配信のグループ化機能は、Oracle GoldenGate Java配信がExtract
プロセスでホストされている場合にのみ使用してください。
表7-1 ユーザー・イグジットReplicatのパラメータ
Java配信は、Extract
プロセス(データ・ポンプ)として構成することもできます。データ・ポンプはローカル証跡(dirdat/aa
など)から読み込み、データをJava配信ユーザー・イグジットに送信します。ユーザー・イグジットは、すべてのデータの処理に使用されます。
データ・ポンプExtractの追加例は、次のとおりです。
ADD EXTRACT javaue, EXTTRAILSOURCE ./dirdat/aa
前述のプロセス名と証跡名は、任意の有効な名前で置き換えます。プロセス名は8文字以下、証跡名は2文字である必要があります。ユーザー・イグジットExtract
パラメータ・ファイル(javaue.prm
)で、ユーザー・イグジット・ライブラリの場所を指定します。
Oracle GoldenGate Extractプロセスには、トランザクションをグループ化する機能はありません。Extract
プロセスにホストされているJava配信にトランザクションのグループ化機能が必要な場合は、Java配信レイヤーでのトランザクションのグループ化を使用する必要があります。
表7-2 ユーザー・イグジットExtractのパラメータ
注意:
PASSTHRU
を使用すると、レポート数を処理レポートに含めることができる統計レポートが無効になります。レポート数統計を収集し、ユーザー・イグジットからExtractに送信するには、プロパティgg.report.timeを使用します。
SETENV (GGS_USEREXIT_CONF = "dirprm/javaue.properties")
これは、ユーザー・イグジット共有ライブラリに使用されるデフォルトの構成ファイルを変更します。指定される値は、絶対パスまたはExtractを基準としたパスです。前述の例では、相対パスを使用してこのプロパティ・ファイルをdirprm
ディレクトリに配置します。
使用されるデフォルト・ファイルは、dirprm
ディレクトリにあるextract_name.properties
です。Extract名がpumpA
の場合、.prm
ファイルはdirprm/pumpA.prm
で、プロパティ・ファイルはdirprm/pumpA.properties
です。
SETENV (GGS_JAVAUSEREXIT_CONF = "dirprm/javaue.properties")
これは、Java用Oracle GoldenGateフレームワークに使用されるデフォルトのプロパティ・ファイルを変更します。値は、クラスパスまたは通常のファイル・システム・パスにあるファイルへのパスです。
GGS_USEREXIT_CONF
とGGS_JAVAUSEREXIT_CONF
のどちらも、デフォルトは同じファイルdirprm/extract_name.propertiesになります。
ハンドラは、Oracle GoldenGate Java配信モジュールにプラグインされるターゲット・アプリケーションとの統合機能です。JMSやビッグ・データ・アプリケーションのような統合ターゲットにデータを送信する機能を処理しているのが、Javaハンドラです。Java配信とJavaハンドラを構成するには、Javaアダプタ・プロパティ・ファイルが使用されます。構成をテストするには、組込みファイル・ハンドラを使用できます。次に、プロパティ例とプロパティの説明(#で始まるコメント行)を示します。
# the list of active handlers gg.handlerlist=myhandler # set properties on 'myhandler' gg.handler.myhandler.type=file gg.handler.myhandler.format=tx2xml.vm gg.handler.myhandler.file=output.xml
このプロパティ・ファイルでは、次のように宣言しています。
アクティブ・イベント・ハンドラ。この例では、myhandler
という名前の1つのイベント・ハンドラがアクティブです。複数のハンドラをカンマで区切って指定できます。たとえば、gg.handlerlist=myhandler, yourhandler
です。
ハンドラの構成。この例では、myhandler
はfile
タイプのハンドラと宣言されています(gg.handler.myhandler.type=file
)。
注意:
設定可能な有効なプロパティのリストは、各タイプのハンドラ(JMSハンドラ、ファイル・ライター・ハンドラなど)のドキュメントを参照してください。
出力の形式は、Velocityテンプレートtx2xml.vm
によって定義されます。メッセージ形式を定義する独自のカスタム・テンプレートを指定できます。Javaクラスパスを基準としてテンプレートのパスを指定します。
このプロパティ・ファイルは、実際、取得されたトランザクションを出力ファイルoutput.xmlに書き込む完全な例です。他のハンドラ・タイプは、キーワードjms_text
(またはjms
)、jms_map
、singlefile
(ロールしないファイル)などを使用して指定できます。カスタム・ハンドラを実装できます。この場合、タイプはハンドラのJavaクラスの完全修飾名です。Oracle GoldenGateビッグ・データ・パッケージには、ビッグ・データ・ターゲットの各タイプが組み込まれています。詳細は、『Oracle GoldenGate for Big Dataの統合』を参照してください。
注意:
設定可能な有効なプロパティのリストは、各タイプのハンドラ(JMSハンドラ、ファイル・ライター・ハンドラなど)のドキュメントを参照してください。