この章では、Coherenceキャッシュを使用するアプリケーションとともにCoherence GoldenGate HotCache (HotCache)を使用する方法について説明します。HotCacheを使用すると、データベースに対する変更をCoherenceキャッシュ内のオブジェクトに伝播できます。
Oracle GoldenGateの詳細は、このドキュメントでは述べません。GoldenGateをOracleデータベースにインストールする方法はOracle GoldenGate for Oracleインストレーションおよび設定ガイドを参照し、詳細はOracle GoldenGate for Java管理者ガイドを参照してください。
注意: HotCacheを使用するには、Oracle GoldenGateおよびCoherence Grid Editionのライセンスが必要です。HotCacheは、Oracle GoldenGate 11gR1および11gR2のリリースで使用できます。 |
この章では、次の内容を説明します。
データベースに対するサード・パーティの更新により、Coherenceアプリケーションで、最新でない失効した可能性のあるデータが使用されることがあります。HotCacheは、データベースをモニタリングし、変更をCoherenceキャッシュにプッシュすることでこの問題を解決します。HotCacheには、失効したデータのみを処理する効率的なプッシュ・モデルが採用されています。データベースに変更が行われる際にデータがプッシュされるため、待機時間の短さが保証されます。
HotCacheは、どのようなCoherenceアプリケーションにも追加できます。データベース・データからJavaオブジェクトへのマッピングの取得には標準JPAが使用されます。構成は、XMLのみで取得することも、注釈を使用したXMLで取得することできます。
次のシナリオは、HotCacheをデータベースと連動して使用する方法、およびCoherenceキャッシュを使用するアプリケーションと連動するように使用する方法を示しています。図7-1にこのシナリオを示します。
GoldenGateの起動方法の詳細は、Oracle GoldenGate for Java管理者ガイドのアプリケーションの起動に関する項を参照してください。GoldenGateによって、目的の変更に対するトランザクション・ログがモニターされます。これらの変更内容は追跡ファイルに格納されます。
必要に応じてCoherenceキャッシュ・サーバーを起動し、キャッシュをウォーミングします。
HotCacheを起動して、追跡ファイル内の変更内容をキャッシュに伝播できるようにします。キャッシュのウォーミング中に変更が発生した場合は、変更内容が消失しないように、HotCacheが起動するとその変更が即時にキャッシュに適用されます。
アプリケーション・クライアントを起動します。その操作の一部として、アプリケーションによってキャッシュに対する問合せが繰り返し実行されることを想定します。
サード・パーティ・アプリケーションによって、データベースの直接更新が実行されます。
GoldenGateによってデータベースの変更が検出され、それがHotCacheによってCoherenceキャッシュに伝播されます。
アプリケーション・クライアントによって、キャッシュ内の変更が検出されます。
HotCacheは、GoldenGateから配信されるデータベース変更イベントを処理し、それらの変更をCoherenceキャッシュ内の影響を受けるオブジェクトにマップします。これは、Java Persistence API (JPA)マッピング・メタデータを使用することで実行できます。JPAは、Javaにおけるオブジェクト・リレーショナル・マッピングのJava標準であり、リレーショナル表にJavaオブジェクトがどのようにマップされるのかを示す一連の注釈(および対応するXML)を定義します。例7-1に示すように、Employee
クラスのインスタンスは、次の注釈を使用することでEMPLOYEE
表の行にマップできます。
例7-1 JavaコードによるEmployeeクラスのインスタンスの行へのマッピング
@Entity @Table(name="EMPLOYEE") Public class Employee { @Id @Column(name="ID") private int id; @Column(name="FIRSTNAME") private String firstName; … }
@Entity
注釈はEmployee
クラスを永続としてマークし、@Id
注釈は主キーを含んでいるとしてid
フィールドを識別します。Coherenceのキャッシュ・オブジェクトの場合、@Id
フィールドには、キャッシュされるオブジェクトが属するキーの値も含まれている必要があります。@Table
および@Column
注釈は、指定した表とクラス、および指定した列とフィールドをそれぞれ関連付けます。
簡単にするため、JPAではtable name=class
name
やcolumn
name=field
name
など、いくつかのデフォルト・マッピングが想定されており、多くの場合、マッピングを指定する必要があるのはそのデフォルトが適切でない場合のみです。例7-1では表とフィールドの両方の名前がJava名と一致しているため、例7-2に示すように、@Table
と@Column
を削除してコードを短くできます。
例7-2 Employeeクラスのインスタンスを行にマッピングする単純化したJavaコード
@Entity Public class Employee { @Id private int id; private String firstName; … }
前述のJavaコードの例はXMLでも表現できます。例7-1のJavaコードに相当するXMLを例7-3に示します。
例7-3 XMLによるEmployeeクラスのインスタンスの行へのマッピング
<entity class="Employee"> <table name="EMPLOYEE"/> <attributes> <id name="id"> <column name="ID"/> </id> <basic name="firstName"/> <column name="FIRSTNAME"/> </basic> ... </attributes> </entity>
同様に、例7-2の単純化したJavaコードに相当するXMLを例7-4に示します。
例7-4 Employeeクラスのインスタンスを行にマッピングする単純化したXML
<entity class="Employee"> <attributes> <id name="id"/> <basic name="firstName"/> ... </attributes> </entity>
JPAマッピング・メタデータは、オブジェクトからリレーショナルへのマッピングを提供しますが、HotCacheで使用できるリレーショナルからオブジェクトへの逆マッピングも提供します。Employee
の例で、EMPLOYEE
表の行のFIRSTNAME
列への更新を考えてみましょう。図7-2は、Johnという名が従業員ID 1と関連付けられている更新前のEMPLOYEE
表と、Bobという名が従業員ID 1と関連付けられている更新後のEMPLOYEE
表を示しています。
GoldenGateによってEMPLOYEE
表に対する変更がモニタリングされており、HotCacheが適切な追跡ファイルで構成されている場合、アダプタによって、主キー1
を持つEMPLOYEE
行のFIRSTNAME
列がBob
に変更されたことを示すイベントが処理されます。アダプタは、JPAマッピング・メタデータを使用して、最初にEMPLOYEE
表に関連付けられているクラスEmployee
を識別し、次にEmployee
のIDフィールドと関連付けられている列ID
を判別します。この情報を使用して、アダプタは変更イベントからそのID列値を抽出し、そのID
列値でキャッシュされているEmployee
のfirstName
フィールド(FIRSTNAME
列と関連付けられた)を更新できます。
GoldenGate Javaアダプタでは、データベースのINSERT
、UPDATE
およびDELETE
操作がサポートされています。マップされた表にINSERT
操作を実行すると、関連付けられたクラスの新しいインスタンスが追加され、新たに挿入された行のデータが移入されます。UPDATE
操作で適用される変更内容は、対応するキャッシュ・オブジェクトに伝播されます。更新された行に対応するオブジェクトがキャッシュに含まれていなければ、キャッシュは変更されません。DELETE
操作を実行すると、対応するオブジェクトがキャッシュに存在する場合はキャッシュから削除されます。
次の項の説明は、データベースがGoldenGateを使用するように設定されていることを前提とします。必要なタスクは次のとおりです。
データベースおよび表の作成
ユーザー権限の付与
ロギングの有効化
表およびデータのプロビジョニング
例7-5に、csdemo
というユーザーを作成し、データベースに対するユーザー権限を付与するサンプル・コマンドのリストを示します。
ALTER
DATABASE
ADD
SUPPLEMENTAL
LOG
DATA
コマンドに注意してください。サプリメンタル・ロギングを有効にすると、すべての列が追加のロギング対象として指定されます。少なくとも、どのようなチェンジ・データ・キャプチャのソース・データベースに対しても、最小データベース・レベルのサプリメンタル・ロギングを有効にする必要があります。
例7-5 ユーザーの作成、権限の付与およびロギングの有効化を実行するサンプル・コマンド
CREATE USER csdemo IDENTIFIED BY csdemo; GRANT DBA TO csdemo; grant alter session to csdemo; grant create session to csdemo; grant flashback any table to csdemo; grant select any dictionary to csdemo; grant select any table to csdemo; grant select any transaction to csdemo; grant unlimited tablespace to csdemo; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
また、次の項の説明は、Oracle GoldenGateがインストールされ、マネージャが起動されていることを前提とします。必要なタスクは次のとおりです。
Oracle GoldenGateのダウンロードおよびインストール
ggsci
の実行によるGoldenGateサブディレクトリの作成
マネージャ・パラメータ(mgr.prm
)ファイルの作成、リスナー・ポートの指定
ライブラリ・パスへのJVMライブラリの追加
マネージャの起動
これらのタスクの詳細は、このドキュメントでは述べません。GoldenGateをOracleデータベースにインストールする方法はOracle GoldenGate for Oracleインストレーションおよび設定ガイドを参照し、詳細はOracle GoldenGate for Java管理者ガイドを参照してください。
GoldenGate追跡ファイルからのキャッシュの更新では、GoldenGateおよびHotCacheを構成する必要があります。その後、GoldenGate Javaアダプタを構成することでHotCacheを有効にします。
ADD
TRANDATA
コマンドを使用して変更をモニターする必要がある表を指定します。ADD
TRANDATA
コマンドは、コマンド行で、またはggsci
スクリプトの一部として使用できます。たとえば、csdemo
スキーマの表への変更をモニターするには、次のコマンドを使用します。
ADD TRANDATA csdemo.*
例7-6に、cs-cap.ggsci
というggsci
スクリプトのサンプルを示します。
スクリプトがマネージャを起動してデータベースにログインします。cs-cap
という実行中の抽出を停止して削除します。
ADD
TRANDATA
コマンドで抽出を指示し、csdemo*
という表に対する変更をモニターします。
SHELL
コマンドでdirdat
ディレクトリのすべての追跡ファイルを削除し、抽出が再作成された場合に古い追跡ファイルが残存しないようにします。rm -f
コマンドはプラットフォーム固有です。dirprm/cs-cap.prm
ファイルからパラメータを使用して、cs-cap
という抽出が作成されます。追跡はcs-cap
抽出ファイルからdirdat/cs
に追加されます。
start
コマンドでcs-cap.ggsci
スクリプトが開始します。
ADD
EXTRACT
コマンドはcs-cap.prm
ファイルをパラメータのソースとして自動的に使用するため、PARAMS
dirprm/cs-cap.prm
文は必要ありません。
Coherence CacheStoresにログインしているユーザーが行った変更が無視されるようにGoldenGateを構成します。これにより、Coherenceによってデータベースに適用された、キャッシュにすでに存在する変更の処理が回避されます。
TranLogOptions
excludeUSER
コマンドは、コマンド行で、またはggsci
スクリプト内で使用できます。たとえば、次のコマンドはcsdemo
でログインしたCoherence CacheStoreユーザーが行ったデータベース表への変更を無視するようにGoldenGate抽出プロセスに指示します。
TranLogOptions excludeUser csdemo
例7-7に、cs-cap.prm
という抽出.prm
ファイルのサンプルを示します。Coherence CacheStoreにログインしているユーザーはcsdemo
です。recoveryOptions
OverwriteMode
行は、新しいデータを追加せずに、既存のトランザクション・データを最後の書込みチェックポイント位置の後に上書きすることを示します。EXTRAIL
パラメータで、追跡がdirdat/cs
であることが識別されます。BR
BROFF
パラメータは、Bounded Recovery (BR)機能を制御します。BROFF
値は、実行とリカバリに対してBounded Recoveryをオフにします。GETUPDATEBEFORES
パラメータは、更新された列の更新前のイメージがOracle GoldenGateで処理されるレコードに格納されることを示します。TABLE
パラメータで、変更をモニターする表がcsdemo.*
であることが識別されます。TranLogOptions
excludeUSER
パラメータは、csdemo
でログインしたCoherence CacheStoreユーザーが行った表への変更がGoldenGateで無視されることを示します。
HotCacheは、システム・プロパティ、EclipseLink JPAマッピング・メタデータ(「HotCacheの機能」を参照)およびJPA persistence.xml
ファイルで構成されます。HotCacheからCoherenceクラスタへの接続はCoherence*Extend (TCP)を使用して実行されます。
次の項では、HotCacheの構成に必要なプロパティと、Coherence*Extendとの接続の詳細について説明します。
ファイル名の拡張子が.properties
のテキスト・ファイルを作成します。ファイルにHotCacheの構成を入力します。構成には少なくともイベント・ハンドラのリスト、イベント・ハンドラの完全修飾Javaクラス、ユーザー出口チェックポイント・ファイルを使用しているかどうか、およびJavaライター名が含まれている必要があります。
注意:
SetEnv(GGS_USEREXIT_CONF="dirprm/cs-cgga.properties") この説明は、「GoldenGate Javaクライアント抽出ファイルの編集」にあります。 |
例7-8に、HotCacheプロジェクトについて最低限の構成が格納された.properties
ファイルを示します。ファイルでは、次のプロパティが使用されています。
gg.handlerlist=cgga
gg.handlerlist
プロパティには、アクティブなハンドラのカンマ区切りリストを指定します。この例では、論理名cgga
をデータベース変更イベント・ハンドラとして定義しています。ハンドラ名はユーザーが定義できますが、gg.handler.{
name}
.typeプロパティで使用する名前と一致する必要があります。
gg.handler.cgga.type=oracle.toplink.goldengate.CoherenceAdapter
gg.handler.{name}.type
プロパティには、HotCacheのハンドラを定義します。{name}
フィールドは、gg.handlerlist
プロパティにリストされているイベント・ハンドラ名で置換する必要があります。HotCacheに対して設定できる唯一のハンドラはoracle.toplink.goldengate.CoherenceAdapter
です。
goldengate.userexit.nochkpt=true
goldengate.userexit.nochkpt
プロパティを使用して、ユーザー出口チェックポイント・ファイルを無効にします。この例では、ユーザー出口チェックポイント・ファイルを無効に定義しています。
goldengate.userexit.writers=jvm
goldengate.userexit.writers
プロパティには、ライターの名前を指定します。GoldenGate Javaアダプタの呼出しを有効にするには、goldengate.userexit.writers
の値をjvm
にする必要があります。
-Dlog4j.configuration=my-log4j.properties
-Dlog4j.configuration
プロパティには、dirprm
ディレクトリ(dirprm
ディレクトリはクラスパスにすでに存在)のユーザー定義Log4Jプロパティ・ファイルmy-log4j.properties
を指定します。プロパティはクラスパスからロードできるため、この文はオプションです(つまり、log4j.configuration=my-log4j.properties
)。HotCacheのロギング・プロパティの構成の詳細は、「ロギング・プロパティ」を参照してください。
その他の様々なプロパティを使用して、GoldenGate Javaアダプタの動作を制御できます。詳細は、Oracle GoldenGate for Java管理者ガイドを参照してください。
例7-8 HotCacheプロジェクトの.propertiesファイル
# ==================================================================== # List of active event handlers. Handlers not in the list are ignored. # ==================================================================== gg.handlerlist=cgga # ==================================================================== # Coherence cache updater # ==================================================================== gg.handler.cgga.type=oracle.toplink.goldengate.CoherenceAdapter # ==================================================================== # Native JNI library properties # ==================================================================== goldengate.userexit.nochkpt=true goldengate.userexit.writers=jvm # ====================================== # Java boot options # ====================================== jvm.bootoptions=-Djava.class.path=dirprm:/home/oracle/app/oracle/product/11.2.0/dbhome_2/jdbc/lib/ojdbc6.jar:ggjava/ggjava.jar:/home/oracle/Oracle/Middleware/coherence/lib/coherence.jar:/home/oracle/Oracle/Middleware/oracle_common/modules/javax.persistence_2.0.0.0_2-0.jar:/home/oracle/Oracle/Middleware/oracle_common/modules/oracle.toplink_12.1.2/eclipselink.jar:/home/oracle/Oracle/Middleware/oracle_common/modules/oracle.toplink_12.1.2/toplink-grid.jar:/home/oracle/cgga/workspace/CacheStoreDemo/bin -Xmx32M -Xms32M -Dtoplink.goldengate.persistence-unit=employee -Dlog4j.configuration=my-log4j.properties -Dtangosol.coherence.distributed.localstorage=false -Dtangosol.coherence.cacheconfig=/home/oracle/cgga/workspace/CacheStoreDemo/client-cache-config.xml -Dtangosol.coherence.ttl=0
Javaブート・オプションについては、次の項で説明します。
この項では.properties
ファイルのJava boot optionsセクションに指定する必要のあるプロパティについて説明します。これらのオプションはjvm.bootoptions
プロパティを使用して定義します。
jvm.bootoptions
のサンプル・リストは、例7-8のJava boot options
セクションに記載されています。
次のリストは、Javaクラスパスに含める必要があるディレクトリおよびJARファイルです。ディレクトリおよびJARファイルはjava.class.path
プロパティで定義します。
dirprm
: 抽出.prm
ファイルが含まれているGoldenGate dirprm
ディレクトリ
ggjava.jar
: GoldenGate Javaアダプタ・ライブラリが含まれています
coherence.jar
: Oracle Coherenceライブラリが含まれています
javax.persistence_2.0.0.0_2-0.jar
: Java永続ライブラリが含まれています
eclipselink.jar
: EclipseLinkライブラリが含まれています
toplink-grid.jar
: HotCacheファイルおよびOracle TopLinkライブラリが含まれています
ドメイン・クラス: Coherenceにキャッシュされているユーザー・クラスを含むJARファイルまたはディレクトリ。HotCacheで使用するためにJPAにマップされています。Coherence構成ファイル、persistence.xml
ファイルおよびorm.xml
ファイルも同様。
toplink.goldengate.persistence-unit
プロパティは必須で、HotCacheがロードするpersistence.xml
ファイルに定義された永続性ユニットを識別します。永続性ユニットには、関与しているドメイン・クラスのリスト、構成オプション、データベース接続情報(必要な場合)などの情報が含まれています。
toplink.goldengate.on-error
プロパティはオプションです。変更イベントの処理時に、アダプタがエラーに応答する方法を制御します。このレスポンスは、予想されるオプティミスティック・ロック例外と予期しない例外の両方に適用されます。このプロパティはオプションで、デフォルトでは「Refresh」の値に設定されます。Refreshを指定すると、アダプタでは、データベースからの指定行の最新データの読取りと、キャッシュ内の対応するオブジェクトの更新が試行されます。Refreshでは、データベース接続がpersistence.xml
ファイルに指定されている必要があります。この接続はHotCacheの初期化中に確立されます。接続できない場合は、例外がスローされ、HotCacheの起動は失敗となります。
その他のエラー時戦略にはデータベース接続は必要ありません。次のものがあります。
Ignore
- 例外のみをログに記録します。キャッシュに古いデータが残存する可能性があります。アプリケーションの要件およびキャッシュ・エビクション・ポリシーに応じて許容します。
Evict
- 警告をログに記録し、変更データベース行に対応するオブジェクトをキャッシュから排出します。
Fail
- 例外をスローしてHotCacheを終了します。
Java boot optionsでは、Coherenceの任意のプロパティをシステム・プロパティとして指定できます。false
の値のtangosol.coherence.distributed.localstorage
システム・プロパティは、Java boot optionsで渡す必要がある唯一のCoherenceプロパティです。Coherenceのすべてのプロパティと同様に、jvm.bootoptions
文ではプロパティ名に-D
接頭辞を付けます。次に例を示します。
-Dtangosol.coherence.distributed.localstorage=false
HotCacheに対して次のロギング・プロパティを定義できます。
-Dlog4j.configuration=default-log4j.properties
プロパティはデフォルトのLog4J構成ファイルを指定します。プロパティの例は、$GOLDEN_GATE_HOME/ggjava/resources/classes/
ディレクトリにあります。これらを既存のLog4J構成にマージできます。
GoldenGate for Javaに付属のLog4Jプロパティ・ファイルはデモ専用です。ファイルをそのまま使用することも、内容を既存のLog4Jプロパティにマージすることもできます。
ファイルをそのまま使用する場合は、dirprm
ディレクトリにコピーして新しい名前を指定し、-Dlog4j.configuration
プロパティで指定します。たとえば、次の行はdirprm
ディレクトリにあるユーザー定義のmy-log4j.properties
ファイル(dirprm
ディレクトリはクラスパスにすでに指定済)を指定します。
-Dlog4j.configuration=my-log4j.properties
現在の位置でデフォルトのプロパティ・ファイルを使用すると、アップグレード時に問題が発生する可能性があります。変更内容は新しい配布のインストール時に消失します。
HotCacheで警告を記録できるようにするには、プロパティ・ファイルに次の行を追加します。
log4j.logger.oracle.toplink.goldengate=WARN, stdout, rolling
HotCacheでエラーを記録できるようにするには、使用するプロパティ・ファイルに次の行を追加します。
-Dlog4j.logger.oracle.toplink.goldengate=DEBUG, stdout, rolling
注意: Coherence Log4J構成は、GoldenGate Log4J構成と共存できます。どちらも |
HotCacheとCoherenceクラスタ間は、Coherence*Extendで接続することをお薦めします。Coherence*Extendの詳細は、『Oracle Fusion Middleware Oracle Coherenceリモート・クライアントの開発』を参照してください。
Coherenceの構成ファイルは.properties
ファイルのjvm.bootoptions=-Djava.class.path=
...エントリで指定されたディレクトリに存在する必要があります。1つの例として、例7-8のjvm.bootoptions
エントリを参照してください。
例7-9に、Coherenceクラスタへの接続にCoherence*Extendを使用するクライアント・キャッシュ構成ファイルのセクションを示します。クライアント・キャッシュ構成ファイルでは、Coherence*Extendは<remote-cache-scheme>
セクションで構成されます。デフォルトでは、Coherence*Extendの接続ポートは9099
です。
例7-9 クライアント・キャッシュ構成ファイルのCoherence*Extendセクション
<cache-config> ... <caching-schemes> <remote-cache-scheme> <scheme-name>CustomRemoteCacheScheme</scheme-name> <service-name>CustomExtendTcpCacheService</service-name> <initiator-config> <tcp-initiator> <remote-addresses> <socket-address> <address>localhost</address> <port>9099</port> </socket-address> </remote-addresses> </tcp-initiator> <outgoing-message-handler> ... </outgoing-message-handler> </initiator-config> </remote-cache-scheme> ... </cache-config>
例7-10に、Coherence*Extend接続をリスニングするサーバー・キャッシュ構成ファイルのセクションを示します。サーバー・キャッシュ構成ファイルでは、Coherence*Extendは<proxy-scheme>
セクションで構成されます。デフォルトでは、Coherence*Extendのリスナー・ポートは9099
です。
例7-10 サーバー・キャッシュ構成ファイルのCoherence*Extendセクション
<cache-config> ... <caching-schemes> ... <proxy-scheme> <scheme-name>CustomProxyScheme</scheme-name> <service-name>CustomProxyService</service-name> <thread-count>2</thread-count> <acceptor-config> <tcp-acceptor> <local-address> <address>localhost</address> <port>9099</port> </local-address> </tcp-acceptor> </acceptor-config> <load-balancer>proxy</load-balancer> <autostart>true</autostart> </proxy-scheme> </caching-schemes> </cache-config>
GoldenGate Javaクライアントには、イベント・ハンドラ・クラスを構成することで、JavaのGoldenGateデータ変更イベントを処理する方法が用意されています。GoldenGate Javaクライアントの構成により、抽出をモニターしたり、データ変更イベントをHotCacheに渡すことができます。
この構成は抽出.prm
ファイルで用意します。このファイルについては次の項で説明します。抽出.prm
ファイルには、イベント・ハンドラ・クラスへの参照も含まれています。これは、「GoldenGate for Javaのプロパティでのプロパティ・ファイルの作成」で説明されているプロパティ・ファイルに指定されたイベント・ハンドラ・クラスと同じです。
この項では、GoldenGate Javaクライアントの抽出.prm
ファイルに定義できるパラメータについて説明します。例7-11にパラメータを示しますが、これはHotCacheプロジェクトの最小限の構成です。
これらのパラメータおよび抽出.prm
ファイルに追加できる他のパラメータの詳細は、Oracle GoldenGate for Windows and UNIXリファレンス・ガイドを参照してください。
SetEnv ( GGS_USEREXIT_CONF = "dirprm/cs-cgga.properties" )
GGS_USEREXIT_CONF
プロパティは、「GoldenGate for Javaのプロパティでのプロパティ・ファイルの作成」で作成した.properties
ファイルへの参照を提供します。cs-cgga.properties
という名前で、dirprm
フォルダに格納されていることが前提となります。
GETUPDATEBEFORES
GETUPDATEBEFORES
プロパティは、変更前の値が提示された場合は列の変更前後の値が追跡に書き込まれるため、値を比較できます。変更前の値が提示されない場合は、変更後の値のみが書き込まれます。
CUserExit libggjava_ue.so CUSEREXIT PassThru IncludeUpdateBefores
CUSEREXIT
パラメータには次のものがあります。
libggjava_ue.so
(UNIXの場合)またはggjava_ue.dll
(Windowsの場合) - ユーザー出口ライブラリの場所
CUSEREXIT
- コールバック関数名(大文字で記載する必要がある)
PASSTHRU
- ダミー・ターゲット追跡を不要にする
INCLUDEUPDATEBEFORES
- トランザクションの整合性のために必要
NoTcpSourceTimer
NOTCPSOURCETIMER
パラメータを使用して、レポート作成のためにレプリケートされた操作のタイムスタンプをOracle GoldenGate環境内で管理します。NOTCPSOURCETIMER
には当初のタイムスタンプ値が保持されます。NOTCPSOURCETIMER
は、双方向構成でタイムスタンプベースの競合解決を使用する場合に使用します。
例7-11に、GoldenGate for Javaクライアントの.prm
ファイルのサンプルを示します。
例7-11 GoldenGate for Javaクライアントの.prmパラメータ・ファイルのサンプル
Extract cs-cgga USERID csdemo, PASSWORD csdemo SetEnv ( GGS_USEREXIT_CONF = "dirprm/cs-cgga.properties" ) -- the user-exit library (unix/linux) CUserExit libggjava_ue.so CUSEREXIT PassThru IncludeUpdateBefores -- the user-exit library (windows) -- CUserExit ggjava_ue.dll CUSEREXIT PassThru IncludeUpdateBefores -- pass all trail data to user-exit (don't ignore/omit/filter data) GetUpdateBefores -- TcpSourceTimer (default=on) adjusts timestamps in replicated records for more -- accurate lag calculation, if time differences between source/target NoTcpSourceTimer -- pass all data in trail to user-exit. Can wildcard tables, but not schema name Table csdemo.*;
シリアライズとは、オブジェクトをバイナリ形式にエンコードするプロセスです。これは、Coherenceを使用してデータをネットワーク上で移動させることが必要になった場合に重要となる機能です。Portable Object Format (POF)は言語に依存しないバイナリ形式です。POFは領域と時間の両面で効率を向上させるように設計されており、Coherenceの使用時に不可欠なものとなっています。
HotCacheでPOFシリアライズを使用できますが、POF構成ファイルpof-config.xml
を更新してTopLink Gridフレームワーク・クラスが登録できるようにする必要があります。
POFシリアライズに関与するクラスは、pof-config.xml
ファイルに登録する必要があります。POF構成ファイルには<user-type-list
要素があり、それにはPortableObject
を実装するクラスまたはそれらに関連付けられているPofSerializer
を持つクラスのリストが記載されています。TopLink Gridの場合は、TopLinkPortableObject
をクラスとして、TopLinkGridSerializer
をシリアライザとして登録する必要があります。各クラスに対する<type-id
は一意である必要があり、すべてのクラスタ・インスタンスで一致している必要があります。POFファイルの構成方法の詳細は、『Oracle Fusion Middleware Oracle Coherenceでのアプリケーションの開発』の「POFオブジェクトの登録」を参照してください。
<allow-interfaces>
要素は、TopLinkPortableObject
インタフェースのすべてのインプリメンタに対して単一のクラスを登録できるようにするために、true
に設定する必要があります。
例7-12は、HotCacheのpof-config.xml
ファイルのサンプルを示しています。integer_value
の値は、1000
より大きい一意の整数値を表します。
例7-12 HotCacheのPOF構成ファイルのサンプル
<?xml version='1.0'?><pof-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.oracle.com/coherence/coherence-pof-config"xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-pof-configcoherence-pof-config.xsd"> <user-type-list> <include>coherence-pof-config.xml</include> <!-- User types must be above 1000 --> ... <user-type> <type-id><integer_value
></type-id><class-name>oracle.eclipselink.coherence.integrated.cache.TopLinkGridPortableObject</class-name>
<serializer>
<class-name>oracle.eclipselink.coherence.integrated.cache.TopLinkGridSerializer</class-name>
</serializer>
</user-type> ... </user-type-list> <allow-interfaces>true</allow-interfaces> ... </pof-config>
Coherenceキャッシュへの変更されたデータのポンプをHotCacheに依存するTopLink Gridアプリケーションでは、true
に設定したtoplink.goldengate.enable-toplinkgrid-client
コンテキスト・プロパティを使用して、Coherenceキャッシュ挿入用のJavaラッパー・クラスを生成できます
TopLink Gridは、JPA関係がTopLink Grid JPAクライアントによってCoherenceから取得される際に、先行および遅延するJPA関係を再構築するための、関係情報のエンコードをラッパーに依存しています。HotCacheでTopLink Gridを使用し、かつプロパティをtrue
に設定していない場合、オブジェクト間の関係は、Coherenceキャッシュから取得された時点でNULLになります。
このコンテキスト・プロパティは、persistence.xml
ファイル、またはHotCacheの.properties
ファイルのJavaブート・オプション・セクションのシステム・プロパティで設定できます。