8 Java配信の構成
8.1 プロパティ・ファイルでのJREの構成
現在のリリースのOracle GoldenGate Java配信には、Java 8が必要です。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 (Xmx)の初期ヒープ・サイズとJVM (Xmx)の最大ヒープ・サイズも制御できます。最大ヒープ・サイズを増やすと、ガベージ・コレクションの頻度が減るため、パフォーマンスが向上することがあります。また、Javaのメモリー不足例外が発生する場合には、最大ヒープ・サイズを増やす必要があります。
システム用にプロパティ・ファイルを正しく構成したら、通常変更しません。構成オプションの詳細は、「共通プロパティ」を参照してください。
8.2 Java配信のためのOracle GoldenGateの構成
Java配信は、Oracle GoldenGate Replicatプロセスと互換性があります。トランザクション・データは、Oracle GoldenGate証跡ファイルから読み込まれ、JNIインタフェースを超えてOracle GoldenGate Java配信モジュールに配信されます。データは、JNIインタフェースを使用してOracle GoldenGate Java配信モジュールに転送されます。Java配信モジュールは、データを各種のターゲットにストリーミングできるように構成が可能です。Oracle GoldenGate Javaアダプタ製品でサポートされているターゲットには、JMS、ファイル書込み、カスタム統合が含まれます。Oracle GoldenGate for Big Data製品には、ビッグ・データ・ターゲットへのそれらの統合およびストリーミング機能がすべて含まれています。
8.2.1 Java配信のための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
に設定すると、ソース証跡ファイル(ソース・データベース)からの元のトランザクション境界が維持されます。
表8-1 ユーザー・イグジットReplicatのパラメータ
パラメータ | 説明 |
---|---|
REPLICAT javarep |
すべてのReplicatパラメータ・ファイルはReplicat名で始まります |
SOURCEDEFS ./dirdef/tcust.def |
(オプション)入力の証跡ファイルにメタデータ・レコードが含まれていない場合、Replicatプロセスには証跡データを記述したメタデータが必要です。これは、データベースまたはソース定義ファイルから取得します。このメタデータは、読み取る対象の証跡( |
TARGETDB LIBFILE libggjava.so SET properties= dirprm/javarep.properties |
|
MAP schema.*, TARGET *.*; |
Javaモジュールに渡す表。含まれていない表はスキップされます。ソース表からターゲット表へのマッピングが必要な場合、『Oracle GoldenGateの管理』の「データのマッピングおよび操作」を参照して、 |
GROUPTRANSOPS 1000 |
ソース・トランザクションを1つの大きいターゲット・トランザクションにグループ化して、パフォーマンスを改善します。 たとえば、トランザクション1に200の操作が含まれ、トランザクション2に400の操作が含まれ、トランザクション3に500の操作が含まれている場合、 |
8.3 Javaハンドラの構成
ハンドラは、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ハンドラ、ファイル・ライター・ハンドラなど)のドキュメントを参照してください。