2 Oracle Coherence GoldenGate HotCacheとの統合
Oracle GoldenGateの詳細は、このドキュメントでは述べません。GoldenGateを初めて使用する場合は、データベース環境に適したOracle GoldenGateをインストールします。Oracle GoldenGate for Big Data 21cのGoldenGateドキュメント・ライブラリを参照してください。
-
『Oracle DatabaseでのOracle GoldenGateの使用』の「Oracle GoldenGateのためのデータベースの準備」。
-
『Oracle GoldenGate for Big Dataのインストールとアップグレード』の「Oracle GoldenGate Classic for Big Dataのインストール」。
-
『Oracle GoldenGate for Big Dataの管理』のOracle GoldenGate Java Deliveryに関する項。
-
Oracle GoldenGate for Big Data 21cドキュメント・ライブラリのJava Deliveryの構成に関するドキュメント。
ノート:
HotCacheを使用するには、Oracle GoldenGateおよびCoherence Grid Editionのライセンスが必要です。HotCache Extend Clientは、Oracle GoldenGate for Big Data 12c/19cで使用でき、Java 8で実行できます。クラスタ・メンバーとして実行されているHotCacheクライアントの場合、クラスタ・メンバーはJava 11で実行する必要があります。Java 11での実行が動作保証されているOracle GoldenGate for Big Dataの最小リリースは、21.4.0.0.0です。『Oracle GoldenGate for Big Dataリリース・ノート』を参照してください。最新の適用可能なパッチを使用することをお薦めします。この章のOracle GoldenGateスクリプトおよびプロパティの構成例では、Oracle GoldenGate for Oracle DatabaseおよびOracle GoldenGate for Big Data 21cを参照しています。この章の内容は次のとおりです。
- Oracle Coherence GoldenGate HotCacheについて
サード・パーティによるデータベースの更新により、失効し期限切れのデータでCoherenceアプリケーションが動作する可能性があります。HotCacheは、データベースをモニタリングし、変更をCoherenceキャッシュにプッシュすることでこの問題を解決します。 - HotCacheの仕組み
HotCacheソリューションを実装する前に、ある程度時間をかけてHotCacheの基本およびサポートされている機能を理解してください。 - 前提条件
Oracle Coherence GoldenGate HotCacheを使用する前に、前提条件を満たしていることを確認してください。 - GoldenGateの構成
GoldenGateの証跡ファイルからキャッシュを更新するには、GoldenGateおよびHotCacheを構成する必要があります。その後、GoldenGate Java Deliveryを構成することでHotCacheを有効にします。 - HotCacheの構成
HotCacheは、システム・プロパティ、EclipseLink JPAマッピング・メタデータおよびJPApersistence.xml
ファイルで構成されます。 - GoldenGate Big Data Java Deliveryアダプタの構成
GoldenGate Java Deliveryアダプタには、イベント・ハンドラ・クラスを構成することで、JavaのGoldenGateデータ変更イベントを処理する方法が用意されています。 - Coherenceキャッシュ・サーバーの構成
HotCacheでリフレッシュされるキャッシュを含む、すべてのCoherenceキャッシュ・サーバーJVMのクラスパスを変更する必要があります。 - HotCacheでのPortable Object Formatの使用
HotCacheでPOFシリアライズを使用できますが、POF構成ファイル(pof-config.xml)
を更新してHotCacheおよびTopLink Gridフレームワーク・クラスが登録できるようにする必要があります。 - HotCache JPAプロパティの構成
JPAのエンティティ・タイプごとに構成できるいくつかのカスタムJPAプロパティを使用してHotCacheをカスタマイズできます。 - HotCacheを使用したキャッシュのウォーミング
HotCacheは、初期データ・セットをロードすることでキャッシュをウォーミングするために使用できます。このアプローチでは、初期キャッシュ・ウォーミングにGoldenGateおよびHotCacheを利用するため、カスタム・キャッシュ・ウォーミング・プログラムを作成する必要がありません。 - HotCacheの高可用性の実装
キャッシュ・クライアントとして、HotCacheはCoherenceクラスタ・メンバーとして、またはクラスタ内のCoherenceプロキシ・サービスに接続するCoherence*Extendクライアントとして構成できます。 - Oracleデータ型のサポート
HotCacheはそのJPAプロバイダとしてEclipseLinkを使用します。EclipseLinkでサポートされているOracle固有のデータ型がHotCacheでサポートされると考えることは合理的です。 - HotCacheでのマルチスレッドの構成
HotCacheでは、複数のスレッドを使用してCoherenceキャッシュに証跡ファイルの操作を適用できます。複数のスレッドを使用すると、単一のスレッドを使用して証跡ファイルの操作を適用するのと比較して、HotCacheプロセスのスループットが向上します。 - HotCacheの管理
HotCacheを管理して、キャッシュの更新操作が許容される時間内に実行されることを保証できます。 - 問題の修正
CoherenceでHotCacheの使用中に問題が発生した場合は、次のいずれかのオプションを使用して問題を解決できる場合があります。
Oracle Coherence GoldenGate HotCacheについて
HotCacheは、どのようなCoherenceアプリケーションにも追加できます。データベース・データからJavaオブジェクトへのマッピングの取得には標準JPAが使用されます。構成は、XMLのみで取得することも、注釈を使用したXMLで取得することできます。
次のシナリオは、HotCacheをデータベースと連動して使用する方法、およびCoherenceキャッシュを使用するアプリケーションと連動するように使用する方法を示しています。図2-1にこのシナリオを示します。
-
Captureとも呼ばれるGoldenGate Extractを起動します。GoldenGateによって、目的の変更に対するトランザクション・ログがモニターされます。これらの変更内容は追跡ファイルに格納されます。『Oracle GoldenGate Microservicesドキュメント』のGoldenGate Extractに関する項を参照してください。
-
必要に応じてCoherenceキャッシュ・サーバーを起動し、キャッシュをウォーミングします。
-
HotCacheを起動して、追跡ファイル内の変更内容をキャッシュに伝播できるようにします。キャッシュのウォーミング中に変更が発生した場合は、変更内容が消失しないように、HotCacheが起動するとその変更が即時にキャッシュに適用されます。
-
アプリケーション・クライアントを起動します。その操作の一部として、アプリケーションによってキャッシュに対する問合せが繰り返し実行されることを想定します。
-
サード・パーティ・アプリケーションによって、データベースの直接更新が実行されます。
-
GoldenGateによってデータベースの変更が検出され、それがHotCacheによってCoherenceキャッシュに伝播されます。
-
アプリケーション・クライアントによって、キャッシュ内の変更が検出されます。
HotCacheの仕組み
この項には次のトピックが含まれます:
HotCacheの仕組みの概要
HotCacheは、GoldenGateから配信されるデータベース変更イベントを処理し、それらの変更をCoherenceキャッシュ内の影響を受けるオブジェクトにマップします。これは、Java Persistence API (JPA)マッピング・メタデータを使用することで実行できます。JPAは、Javaにおけるオブジェクト・リレーショナル・マッピングのJava標準であり、リレーショナル表にJavaオブジェクトがどのようにマップされるのかを示す一連の注釈(および対応するXML)を定義します。例2-1に示すように、Employee
クラスのインスタンスは、次の注釈を使用することでEMPLOYEE
表の行にマップできます。
例2-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
など、いくつかのデフォルト・マッピングが想定されており、多くの場合、マッピングを指定する必要があるのはそのデフォルトが適切でない場合のみです。例2-1では表とフィールドの両方の名前がJavaでの名前と一致しているため、例2-2に示すように、@Table
と@Column
を削除してコードを短くできます。
例2-2 Employeeクラスのインスタンスを行にマッピングする単純化したJavaコード
@Entity Public class Employee { @Id private int id; private String firstName; … }
例2-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>
例2-4 Employeeクラスのインスタンスを行にマッピングする単純化したXML
<entity class="Employee"> <attributes> <id name="id"/> <basic name="firstName"/> ... </attributes> </entity>
親トピック: HotCacheの仕組み
GoldenGate Java DeliveryアダプタによるJPAマッピング・メタデータの使用方法
JPAマッピング・メタデータは、オブジェクトからリレーショナルへのマッピングを提供しますが、HotCacheで使用できるリレーショナルからオブジェクトへの逆マッピングも提供します。Employee
の例で、EMPLOYEE
表の行のFIRSTNAME
列への更新を考えてみましょう。図2-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
列と関連付けられた)を更新できます。
親トピック: HotCacheの仕組み
サポートされているデータベース操作
GoldenGate Java Deliveryアダプタでは、データベースのINSERT
、UPDATE
およびDELETE
操作がサポートされています。マップされた表にINSERT
操作を実行すると、関連付けられたクラスの新しいインスタンスが追加され、新たに挿入された行のデータが移入されます。UPDATE
操作で適用される変更内容は、対応するキャッシュ・オブジェクトに伝播されます。更新された行に対応するオブジェクトがキャッシュに含まれていなければ、デフォルトではキャッシュは変更されません。デフォルトの動作を変更するには、HonorRedundantInsertプロパティを参照してください。DELETE
操作を実行すると、対応するオブジェクトがキャッシュに存在する場合はキャッシュから削除されます。
親トピック: HotCacheの仕組み
JPA関係サポート
HotCacheでは、1対1、1対多、多対1および多対多のJPA関係マッピングはサポートされません。ただし、HotCacheではJPA埋込み可能クラスおよびJPA要素コレクションはサポートされます。埋込み可能クラスおよび要素コレクションをHotCacheで使用して、ドメイン・オブジェクト間の関係をモデル化できます。HotCacheで使用されるドメイン・オブジェクトは、識別子(リレーショナル・データベースの外部キーと類似)によって相互に参照できる場合もあります。
パフォーマンス最適化として、HotCacheでJPA要素コレクションを使用するときは、親表に対する外部キーである要素コレクション表の列を指定してADD TRANDATA
コマンドでGoldenGateを構成することをお薦めします。要素コレクション表の行が変更されたときに更新するキャッシュ・エントリを、最適化によりHotCacheが効率的に検出できます。
親トピック: HotCacheの仕組み
前提条件
データベースの設定には次のものが含まれます。
-
データベースおよび表の作成
-
ユーザー権限の付与
-
ロギングの有効化
-
表およびデータのプロビジョニング
例2-5に、csdemo
というユーザーを作成し、データベースに対するユーザー権限を付与するOracle Databaseのサンプル・コマンドのリストを示します。
ALTER
DATABASE
ADD
SUPPLEMENTAL
LOG
DATA
コマンドに注意してください。サプリメンタル・ロギングを有効にすると、すべての列が追加のロギング対象として指定されます。少なくとも、どのようなチェンジ・データ・キャプチャのソース・データベースに対しても、最小データベース・レベルのサプリメンタル・ロギングを有効にする必要があります。データベース表の主キー列の値が変更する可能性がある場合、Oracle Databaseに次のコマンドを含むことが重要です: ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
およびALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
。
例2-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 SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
また、ここでの説明は、Oracle GoldenGateがインストールされ、マネージャが起動されていることを前提としています。これには、次の作業が含まれます。
-
Oracle GoldenGateのダウンロードおよびインストール
-
ggsci
の実行によるGoldenGateサブディレクトリの作成 -
マネージャ・パラメータ(
mgr.prm
)ファイルの作成、リスナー・ポートの指定 -
ライブラリ・パスへのJVMライブラリの追加
-
マネージャの起動
- 『Oracle GoldenGate Microservicesドキュメント』のOracle GoldenGateのインストールに関する項。
-
『Oracle GoldenGate for Big Dataのインストールとアップグレード』のOracle GoldenGate for Big Dataのインストールに関する項。
-
『Oracle GoldenGate Microservicesドキュメント』のOracle GoldenGate for Oracle Databaseの構成に関する項。
-
『Oracle GoldenGate for Big Dataの管理』のOracle GoldenGate Java Deliveryに関する項。
GoldenGateの構成
ノート:
この項で提供されているサンプル・スクリプトは、導入のみを目的としています。構成タスクの包括的なリストは、『Oracle GoldenGate Microservicesドキュメント』のOracle GoldenGate for Oracleの構成に関する項および『Oracle GoldenGate for Big Dataの使用』のOracle GoldenGate (Classic) for Big Dataの開始に関する項を参照してください。この項には次のトピックが含まれます:
表の変更のモニター
ADD
TRANDATA
コマンドを使用して変更をモニターする必要がある表を指定します。ADD
TRANDATA
コマンドは、コマンド行で、またはggsci
スクリプトの一部として使用できます。たとえば、csdemo
スキーマの表への変更をモニターするには、次のコマンドを使用します。
ADD TRANDATA csdemo.*
例2-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
文は必要ありません。
例2-6 表の変更をモニターするGoldenGate Captureのggsci
スクリプトのサンプル
start mgr DBLOGIN USERID csdemo, PASSWORD csdemo STOP EXTRACT cs-cap DELETE EXTRACT cs-cap ADD TRANDATA csdemo.* ADD EXTRACT cs-cap, integrated tranlog, begin now SHELL rm -f dirdat/cs* ADD EXTTRAIL dirdat/cs, EXTRACT cs-cap start cs-cap
親トピック: GoldenGateの構成
現在のユーザーが実行した変更のフィルタ処理
Coherence CacheStoresにログインしているユーザーが行った変更が無視されるようにGoldenGateを構成します。これにより、Coherenceによってデータベースに適用された、キャッシュにすでに存在する変更の処理が回避されます。
TranLogOptions
excludeUSER
コマンドは、コマンド行で、またはggsci
スクリプト内で使用できます。たとえば、次のコマンドはcsdemo
でログインしたCoherence CacheStoreユーザーが行ったデータベース表への変更を無視するようにGoldenGate抽出プロセスに指示します。
TranLogOptions excludeUser csdemo
例2-7に、cs-cap.prm
という抽出の.prm
ファイルのサンプルを示します。Coherence CacheStoreにログインしているユーザーはcsdemo
です。EXTRAIL
パラメータで、追跡がdirdat/cs
であることが識別されます。BR
BROFF
パラメータは、Bounded Recovery (BR)機能を制御します。BROFF
値は、実行とリカバリに対してBounded Recoveryをオフにします。GETUPDATEBEFORES
パラメータは、更新された列の更新前のイメージがOracle GoldenGateで処理されるレコードに格納されることを示します。TABLE
パラメータで、変更をモニターする表がcsdemo.*
であることが識別されます。TranLogOptions
excludeUSER
パラメータは、csdemo
でログインしたCoherence CacheStoreユーザーが行った表への変更がGoldenGateで無視されることを示します。
ノート:
OverwriteMode
オプションは、Oracle GoldenGate for Big Dataには適用されません。
例2-7 GoldenGate Capture用のExtractの.prm
ファイルのサンプル
EXTRACT cs-cap
USERID csdemo, PASSWORD csdemo
LOGALLSUPCOLS
UPDATERECORDFORMAT COMPACT
EXTTRAIL dirdat/cs
BR BROFF
getUpdateBefores
TABLE csdemo.*;
TranLogOptions excludeUser csdemo --ignore changes made by csuser
取得に使用可能な構成オプションの詳細は、『Oracle GoldenGate Microservicesドキュメント』の「Extract」を参照してください。
親トピック: GoldenGateの構成
HotCacheの構成
persistence.xml
ファイルで構成されます。「HotCacheの仕組み」を参照してください。HotCacheからCoherenceクラスタへの接続はCoherence*Extend (TCP)を使用して実行でき、またはHotCache JVMはCoherenceクラスタをメンバーとして結合できます。
次の項では、HotCacheの構成に必要なプロパティと、Coherence*Extendとの接続について説明します。
GoldenGate for Javaのプロパティでのプロパティ・ファイルの作成
ファイル名の拡張子が.properties
のテキスト・ファイルを作成します。ファイルにHotCacheの構成を入力します。最低限の構成には、イベント・ハンドラのリストおよびイベント・ハンドラの完全修飾Javaクラスが含まれている必要があります。
ノート:
.properties
ファイルへのパスは、.prm
ファイル内のHotCache ReplicatのTARGETDB
パラメータに、たとえば、次のように設定する必要があります。
TARGETDB LIBFILE libggjava.so SET property=/home/oracle/gg/hotcache.properties
「HotCache Replicatのパラメータ・ファイルの編集」を参照してください。
例2-8に、HotCacheプロジェクトについて最低限の構成が格納された.properties
ファイルを示します。ファイルでは、次のプロパティが使用されています。
-
gg.handlerlist=hotcache
gg.handlerlist
プロパティには、アクティブなハンドラのカンマ区切りリストを指定します。この例では、論理名hotcache
をデータベース変更イベント・ハンドラとして定義しています。ハンドラ名はユーザーが定義できますが、gg.handler.{
name}
.typeプロパティで使用する名前と一致する必要があります。 -
gg.handler.hotcache.type=[oracle.toplink.goldengate.CoherenceAdapter|oracle.toplink.goldengate.CoherenceAdapter1220]
gg.handler.{name}.type
プロパティには、HotCacheのハンドラを定義します。{name}
フィールドは、gg.handlerlist
プロパティにリストされているイベント・ハンドラ名で置換する必要があります。HotCacheに対して設定できる唯一のハンドラはoracle.toplink.goldengate.CoherenceAdapter
またはoracle.toplink.goldengate.CoherenceAdapter1220
です。GoldenGate Applicationアダプタ・リリース12.2.0以上ではoracle.toplink.goldengate.CoherenceAdapter1220
を使用します。GoldenGate Applicationアダプタ・リリース12.2.0より前ではoracle.toplink.goldengate.CoherenceAdapter
を使用します。 -
gg.classpath
ファイル次に、gg.handlerのディレクトリとJARファイルおよびその依存関係のリストを示します。
-
coherence-hotcache.jar
– Oracle Coherence GoldenGate HotCacheライブラリが含まれています -
javax.persistence.jar
– Java永続ライブラリが含まれています -
eclipselink.jar
– EclipseLinkライブラリが含まれています -
toplink-grid.jar
– HotCacheで必要なOracle TopLinkライブラリが含まれています -
ドメイン・クラス – Coherenceにキャッシュされているユーザー・クラスを含むJARファイルまたはディレクトリ。HotCacheで使用するためにJPAにマップされています。Coherence構成ファイル、
persistence.xml
ファイルおよびorm.xml
ファイルも同様。
-
その他の様々なプロパティを使用して、GoldenGate Java Deliveryの動作を制御できます。『Oracle GoldenGate for Big Dataの管理』のJava Deliveryのプロパティに関する項を参照してください。
例2-8 HotCacheプロジェクトの.propertiesファイル
# ====================================================================
# List of active event handlers
# ====================================================================
gg.handlerlist=hotcache
# ====================================================================
# HotCache event handler
# ====================================================================
gg.handler.hotcache.type=oracle.toplink.goldengate.CoherenceAdapter1220
# ======================================
# HotCache handler dependency jars
# ======================================
# Set gg.classpath with following:
# persistence unit name, application jar(s), directory containing coherence configuration files,
# $GGBD_HOME/dirprm, coherence.jar, coherence-hotcache, jar, eclipselink.jar,
# jakarta.persistence.jakarta.persistence-api.jar
, and toplink-grid.jar from a Coherence
# installation, as well as a JDBC driver jar for your database.
gg.classpath=<list of jars and directories separated by OS specific classpath separator>
# ======================================
# Options for HotCache JVM
# ======================================
jvm.bootoptions=-Djava.class.path=dirprm:ggjava/ggjava.jar -Xmx512M -Xms32M -Dtoplink.goldengate.persistence-unit=employee -Dcoherence.distributed.localstorage=false -Dcoherence.cacheconfig=/home/oracle/cgga/workspace/CacheStoreDemo/client-cache-config.xml
# Note that if you are using a windows machine, you need to replace the : with a ; for both gg.classpath and java.class.path.
親トピック: HotCacheの構成
プロパティ・ファイルへのJVMブート・オプションの追加
この項では.properties
ファイルのJVMブート・オプションのセクションに指定する必要のあるプロパティについて説明します。これらのオプションはjvm.bootoptions
プロパティを使用して定義します。jvm.bootoptions
のサンプル・リストは、例2-8のJVM boot options
セクションに記載されています。
この項には次のトピックが含まれます:
Javaクラスパス・ファイル
次に、java.class.path
プロパティに含めるディレクトリおよびJARファイルのリストを示します。
-
ggjava.jar
– GoldenGate Java Deliveryアダプタ・ライブラリが含まれています -
dirprm
– GoldenGateのdirprm
ディレクトリノート:
dirprm
ディレクトリがここに含まれているのは、gg.classpath
をクラス・ローダーに追加する前に行われるロギングの初期化に必要なカスタム・ロギング・プロパティ・ファイルが含まれるためです。このディレクトリにロギング・プロパティまたはjarファイルが含まれない場合は、gg.classpath
に移動できます。「Javaの配信の構成」を参照してください。
親トピック: プロパティ・ファイルへのJVMブート・オプションの追加
HotCache関連プロパティ
toplink.goldengate.persistence-unit
プロパティは必須で、HotCacheがロードするpersistence.xml
ファイルに定義された永続性ユニットを識別します。永続性ユニットには、関与しているドメイン・クラスのリスト、構成オプション、データベース接続情報(必要な場合)などの情報が含まれています。
toplink.goldengate.on-error
プロパティはオプションです。変更イベントの処理時に、アダプタがエラーに応答する方法を制御します。このレスポンスは、予想されるオプティミスティック・ロック例外と予期しない例外の両方に適用されます。このプロパティはオプションで、デフォルトでは「Refresh」の値に設定されます。Refreshを指定すると、アダプタでは、データベースからの指定行の最新データの読取りと、キャッシュ内の対応するオブジェクトの更新が試行されます。Refreshでは、データベース接続がpersistence.xml
ファイルに指定されている必要があります。この接続はHotCacheの初期化中に確立されます。接続できない場合は、例外がスローされ、HotCacheの起動は失敗となります。
その他のエラー時戦略にはデータベース接続は必要ありません。次のものがあります。
-
Ignore
- 例外のみをログに記録します。キャッシュに古いデータが残存する可能性があります。アプリケーションの要件およびキャッシュ・エビクション・ポリシーに応じて許容します。 -
Evict
- 警告をログに記録し、変更データベース行に対応するオブジェクトをキャッシュから排出します。 -
Fail
- 例外をスローしてHotCacheを終了します。
親トピック: プロパティ・ファイルへのJVMブート・オプションの追加
Coherence関連のプロパティ
Java boot optionsでは、Coherenceの任意のプロパティをシステム・プロパティとして指定できます。false
の値のcoherence.distributed.localstorage
システム・プロパティは、Java boot optionsで渡す必要がある唯一のCoherenceプロパティです。Coherenceのすべてのプロパティと同様に、jvm.bootoptions
文ではプロパティ名に-D
接頭辞を付けます。たとえば:
-Dcoherence.distributed.localstorage=false
親トピック: プロパティ・ファイルへのJVMブート・オプションの追加
ロギング・プロパティ
Oracle GoldenGate for Big DataのJava Deliveryロギングを構成するには、『Oracle GoldenGate for Big Dataの管理』のロギング・プロパティに関する項を参照してください。Oracle GoldenGate for Big Dataのインストール・ディレクトリでは、ロギング・プロパティ・ファイルの例は、AdapterExamples/java-delivery/sample-dirprm
ディレクトリ以下のjdk
、logback
およびlog4j2
にあります。
親トピック: プロパティ・ファイルへのJVMブート・オプションの追加
Coherence*Extend接続情報の指定
HotCacheとCoherenceクラスタ間は、Coherence*Extendで接続されます。Coherence*Extendの詳細は、Oracle Coherenceリモート・クライアントの開発を参照してください。
Coherenceの構成ファイルは、.properties
ファイルのgg.classpath
エントリで指定されたディレクトリに存在する必要があります。例については、gg.classpath
ファイルを参照してください。
例2-9に、Coherenceクラスタへの接続にCoherence*Extendを使用するクライアント・キャッシュ構成ファイルのセクションを示します。クライアント・キャッシュ構成ファイルでは、Coherence*Extendは<remote-cache-scheme>
セクションで構成されます。remote-cache-schemeの構成の追加のオプションは、『Oracle Coherenceリモート・クライアントの開発』のExtendクライアントの構成の概要に関する項を参照してください。
例2-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>
例2-10に、Coherence*Extend接続をリスニングするサーバー・キャッシュ構成ファイルのセクションを示します。サーバー・キャッシュ構成ファイルでは、Coherence*Extendは<proxy-scheme>
セクションで構成されます。デフォルトでは、Coherence*Extendのリスナー・ポートは9099
です。
例2-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>
親トピック: HotCacheの構成
GoldenGate Big Data Java Deliveryアダプタの構成
この項には次のトピックが含まれます:
HotCache Replicatのパラメータ・ファイルの編集
この項では、GoldenGate Big Data Java Deliveryアダプタ用のReplicatの.prm
ファイルに定義できるパラメータについて説明します。例2-11に示すパラメータは、HotCacheプロジェクトの最低限の構成です。
Replicatパラメータ・ファイルの作成の詳細は、『Oracle GoldenGate Microservicesドキュメント』の様々なReplicatモードの基本パラメータに関する項を参照してください。
-
TARGETDB LIBFILE libggjava.so SET property=/home/oracle/gg/hotcache.properties
-
GROUPTRANSOPS 1
GROUPTRANSOPS
パラメータは、GoldenGateのReplicatプロセスによるトランザクションのグループ化を制御します。1
の値は、証跡ファイル内のソース・データベースのトランザクション境界を保持するよう、GoldenGateのReplicatプロセスに指示します。1
より大きい値は、複数のソース・データベース・トランザクションからの操作を1つのターゲット・トランザクションにグループ化するよう、GoldenGateのReplicatプロセスに指示します。『Oracle GoldenGateリファレンスfor Windows and UNIX』のGROUPTRANSOPSに関する項を参照してください。 -
MAP scott.*, TARGET scott.*;
MAPパラメータは、ソース・データベース表をレプリケーション・ターゲットにマップする方法をGoldenGateのReplicatプロセスに指示します。パラメータの構文は、レプリケーション・ターゲットがリレーショナル・データベースであることを前提としています。HotCacheでは、同一のマッピングの指定が適切です。『Oracle GoldenGateリファレンス』のTABLEおよびMAPのオプションに関する項を参照してください。
例2-11は、GoldenGate Big Data Java Deliveryアダプタの.prm
ファイルのサンプルを示しています。
例2-11 GoldenGate Big Data Java Deliveryアダプタの.prmパラメータ・ファイルのサンプル
REPLICAT hotcache TARGETDB LIBFILE libggjava.so SET property=/home/user/project/hotcache.properties GROUPTRANSOPS 1 GetUpdateBefores MAP scott.*, TARGET scott.*;
Coherenceキャッシュ・サーバーの構成
-
coherence-hotcache.jar
– Oracle Coherence GoldenGate HotCacheライブラリが含まれています -
javax.persistence.jar
– Java永続ライブラリが含まれています -
eclipselink.jar
– EclipseLinkライブラリが含まれています -
toplink-grid.jar
– HotCacheで必要なOracle TopLinkライブラリが含まれています -
ドメイン・クラス – Coherenceにキャッシュされているユーザー・クラスを含むJARファイルまたはディレクトリ。HotCacheで使用するためにJPAにマップされています。
HotCacheでのPortable Object Formatの使用
(pof-config.xml)
を更新してHotCacheおよびTopLink Gridフレームワーク・クラスが登録できるようにする必要があります。pof-config.xml
ファイルには、coherence-hotcache-pof-config.xml
ファイルを含める必要があり、TopLinkGridPortableObject
ユーザー・タイプおよびTopLinkGridSerializer
をシリアライザとして登録する必要があります。各クラスに対する<type-id>
は一意である必要があり、すべてのクラスタ・インスタンスで一致している必要があります。『Oracle Coherenceでのアプリケーションの開発』のPOFオブジェクトの登録に関する項を参照してください。
<allow-interfaces>
要素は、TopLinkGridPortableObject
インタフェースのすべてのインプリメンタに対して単一のクラスを登録できるようにするために、true
に設定する必要があります。
例2-12は、HotCacheのpof-config.xml
ファイルのサンプルを示しています。integer_value
の値は、1000
より大きい一意の整数値を表します。
例2-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-config
coherence-pof-config.xsd">
<user-type-list>
<include>coherence-hotcache-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>
HotCache JPAプロパティの構成
@Property
注釈、またはpersistence.xml
ファイルの<property>
要素のいずれかによって構成できます。構成が矛盾する場合は、後者が優先されます。
この項には次のトピックが含まれます:
EnableUpsertプロパティ
EnableUpsert
EnableUpsert
プロパティは、GoldenGate追跡ファイルで更新操作を受け取ったが、対応するキャッシュ・エントリがエンティティ・キーのキャッシュに存在しない場合に、HotCacheがキャッシュ・エントリを挿入するかどうかを制御します。デフォルトでは、HotCacheは存在しないエンティティへの更新を無視します。追跡ファイルで更新操作を受け取ったときに、欠落しているエンティティをHotCacheでキャッシュに挿入する場合は、このプロパティをtrue
に設定します。このプロパティのデフォルト値はfalse
です。
このプロパティをtrue
に設定すると、基礎となっているデータベースで対応するレコードが更新された後、エンティティがキャッシュからアクセスされる可能性が高い場合は、イベントドリブン方式でのウォーミング・キャッシュが容易になります。
ノート:
このプロパティの使用時に考慮する必要があるリスクがあります。
-
追跡ファイルには、挿入するエンティティのすべてのフィールドの値が含まれていない場合があるため、挿入するエンティティは、データベースから読み取られます。これにより、データベース読取りの待機によってHotCacheプロセスのスループットが削減される場合があります。
-
容量がプロビジョニングされたキャッシュ内のエンティティ数より多くのDB内の行が更新される場合、キャッシュ容量を使い果たす可能性があります。
エンティティ・クラス注釈
@Property(name = "EnableUpsert", value = "false",valueType = boolean.class)
永続性XMLプロパティ
<property name="[fully qualified entity class name].EnableUpsert" value="[true|false]"/>
親トピック: HotCache JPAプロパティの構成
HonorRedundantInsertプロパティ
HonorRedundantInsert
HonorRedundantInsert
プロパティは、HotCacheがGoldenGate追跡ファイル内の挿入操作を、そのキーのキャッシュ・エントリがすでに存在する場合に適用するかどうかを制御します。デフォルトでは、HotCacheは重複した挿入操作を無視します。ただし、JPAエンティティがOracle Databaseの複合マテリアライズド・ビューにマップされており、行がそのマテリアライズド・ビューの基礎となる表で更新される(つまり、マテリアライズド・ビューの1つ以上の行を更新する)場合、Oracle Databaseは、既存の行と同じPKおよび新しい行IDで新しい行をマテリアライズド・ビューに挿入し、既存の行を削除します。このため、HotCacheは重複した挿入操作を、キャッシュされたJPAエンティティへの更新を表していると見なします。この状況でユーザーは、GoldenGate構成を使用して、そのマテリアライズド・ビューでの削除操作のレプリケーションを抑制することも考える必要があります。そうしない場合、キャッシュされたエンティティがHotCacheによって削除されます。このプロパティのデフォルト値はfalse
です。
エンティティ・クラス注釈
@Property(name = "HonorRedundantInsert", value = "false",valueType = boolean.class)
永続性XMLプロパティ
<property name="[fully qualified entity class name].HonorRedundantInsert" value="[true|false]"/>
親トピック: HotCache JPAプロパティの構成
SyntheticEventプロパティ
SyntheticEvent
SyntheticEvent
プロパティは、HotCacheによるキャッシュの書込みが統合的かどうかを制御します。Coherenceキャッシュへの統合的な書込みはCoherenceでイベントをトリガーせず、フェデレーテッド・キャッシュに参加せず、Coherence CacheStore
実装を呼び出しません。イベントがトリガーされ、フェデレーテッド・キャッシュに参加し、CacheStore
実装が呼び出されるように(エンティティ・クラス・キャッシュに対してこれらが構成されている場合)、このクラスに対するHotCacheによるキャッシュ書込みを非統合にする場合は、JPAエンティティ・クラスについてこのプロパティをfalse
に設定します。すべてのエンティティ・クラスに対してこのプロパティのデフォルト値はtrue
です。
ノート:
エンティティ・クラスに対してSyntheticEvent
をtrue
に設定し、そのエンティティ・クラス・キャッシュでCacheStore
実装が構成され、同じデータベースHotCacheへの書込みがCoherenceにレプリケートされている場合、無限レプリケーション・ループが発生するリスクがあります。このリスクは、データベース・ユーザーによるトランザクションをフィルタリングすることで軽減できます。「現在のユーザーが実行した変更のフィルタ処理」を参照してください。
エンティティ・クラス注釈
@Property(name = "SyntheticEvent", value = "[true|false]", valueType = boolean.class)
永続性XMLプロパティ
<property name="[fully qualified entity class name].SyntheticEvent" value="[true|false]"/>
親トピック: HotCache JPAプロパティの構成
eclipselink.cache.shared.defaultプロパティ
eclipselink.cache.shared.default
eclipselink.cache.shared.default
プロパティは、EclipseLink内部共有キャッシュを有効化するために使用されます。HotCache JVM内の内部共有キャッシュは、persistence.xml
ファイル内のプロパティをfalse
に設定して無効化することが重要です。
永続性XMLプロパティ
<property name=" eclipselink.cache.shared.default" value="false"/>
親トピック: HotCache JPAプロパティの構成
HotCacheを使用したキャッシュのウォーミング
この項には次のトピックが含まれます:
初期ロード抽出の作成および実行
IL0001
、IL0002
などの名前の1つ以上の追跡ファイルがGG_HOME/dirdat
ディレクトリにできます。 ファイルが生成されない場合は、GG_HOME/dirrpt/initload.rpt
ファイルを確認してください。
親トピック: HotCacheを使用したキャッシュのウォーミング
キャッシュのウォーミング中に変更されたデータの取得
- データベースのREDOログからチェンジ・データを取得する通常のソース抽出プロセスを起動しますが、そのチェンジ・データでCoherenceキャッシュをリフレッシュする通常のHotCache Replicatプロセスは起動しません。
- 初期ロード抽出プロセスを起動して、データベースから初期データ・セットを選択します。
- キャッシュ・ウォーミングReplicatプロセスを実行して、初期データ・セットでCoherenceキャッシュをウォーミングします。
- GoldenGateによってデータベースから抽出された行数と(
initload.rpt
を参照)、Coherence MBeansまたはコマンド行インタフェース・コマンドに従ったターゲットCoherenceキャッシュ内のエントリ数を比較することによって、初期ロードが正しく完了したことを検証します。 - 標準のHotCache Replicatプロセスを起動して、チェンジ・データでCoherenceキャッシュをリフレッシュします。
親トピック: HotCacheを使用したキャッシュのウォーミング
HotCacheの高可用性の実装
ベストプラクティスのデプロイメントでは、Coherenceキャッシュ・サービスおよびプロキシ・サービスには、サービス・メンバーの冗長性(たとえば、複数のキャッシュ・サーバー・プロセスおよび複数のプロキシ・サーバー・プロセス)と、Coherence内の組込み自動フェイルオーバー機能により、すでに高い可用性があります。たとえば、プロキシ・サーバーに障害が発生した場合、そのプロキシ・サーバーを使用するCoherence*Extendクライアントは自動的に別のプロキシ・サーバーにフェイルオーバーします。同様に、キャッシュ・サーバーに障害が発生した場合は、別のキャッシュ・サーバーがそのデータの責任を引き受け、そのデータとのクライアント相互作用は、そのデータを所有する新しいキャッシュ・サーバーに自動的にリダイレクトされます。
HotCacheクライアント自体の可用性を高くすることは、HotCache JVMがGoldenGateプロセスに埋め込まれて実行されるため、標準のGoldenGate HA手法に依存します。
GoldenGateは、GoldenGateインストール内のマネージャ・プロセスによって強制されるAUTOSTARTおよびAUTORESTARTパラメータを介して単一サーバーHAを実装します。マネージャ・プロセスは、AUTOSTARTで構成された登録済のGoldenGateプロセスを自動的に起動します。また、AUTORESTARTで構成された登録済のGoldenGateプロセスの停止も検出(および自動再起動)します。
マネージャ・プロセス自体、またはマネージャ・プロセスが実行されるホストやそのホストに接続するネットワークの障害から保護するために、GoldenGateはOracle Clusterwareに依存して、アクティブなGoldenGateインストールの停止を検出し、パッシブなGoldenGateインストールにフェイルオーバーします。
GoldenGateの高可用性については、Oracle Real Application Clustersを使用したOracle GoldenGate Classic Architectureの構成のベスト・プラクティス(ホワイト・ペーパー)を参照してください。
Oracleデータ型のサポート
XMLType
のOracle Spatial and GraphオプションのSDO_GEOMETRY
など、Oracle Databaseに固有のデータ型がサポートされます。
HotCacheで使用されるとき、EclipseLinkに示されるデータは一般的なJPAシナリオで使用されるときとは異なることを理解することが重要です。一般的なJPAシナリオでは、EclipseLinkはJDBC接続を介してデータベースと相互作用し、EclipseLinkはJDBC APIおよびドライバ固有の拡張子(たとえば、SDO_GEOMETRY
列はjava.sql.Struct
のインスタンスとして表されます)によって示されるデータを使用します。一方HotCacheでは、データはGoldenGate追跡ファイルから読み取られ、JDBC接続は関係ありません。そのため、EclipseLinkはデータのJDBC表現ではなくデータのGoldenGate表現を使用します。たとえば、GoldenGateではSDO_GEOMETRY
列をXMLドキュメントとして表現し、java.sql.Struct
のインスタンスとしては表現しません。
データ表現におけるこれらの違いにより、HotCache内でEclipseLinkを使用するとき、一般的なJPAシナリオで使用される標準のEclipseLinkコンバータのかわりをするHotCache固有のEclipseLinkコンバータの使用が必要になる場合があります。『Java Persistence API (JPA) Extensions Reference for EclipseLink』の@Converterに関する項を参照してください。次の項では、EclipseLinkでサポートされる特定のOracle Databaseデータ型に対するHotCacheサポートと、それらのデータ型を使用するためにHotCache内にEclipseLinkを構成する方法について説明します。
SDO_GEOMETRYのサポート
EclipseLinkでは、SDO_GEOMETRY
列をoracle.spatial.geometry.JGeometry
(Oracle Spatial and Graphオプションに用意されているJavaクラス)のインスタンスにマッピングすることで、Oracle DatabaseのOracle Spatial and Graphオプションがサポートされます。『Solutions Guide for EclipseLink』のOracle Spatial and Graphの使用に関する項を参照してください。
そのためHotCacheは、SDO_GEOMETRY
のタイプの列の、JPAエンティティのフィールドにバインドされたoracle.spatial.geometry.JGeometry
のインスタンスへのマッピングをサポートします。このサポートには、次の例に示すように、クラスoracle.toplink.goldengate.spatial.GoldenGateJGeometryConverter
のHotCache固有のEclipseLinkコンバータの構成が必要です。
import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Convert;
import javax.persistence.Converter;
import javax.persistence.Entity;
import oracle.spatial.geometry.JGeometry;
import oracle.toplink.goldengate.spatial.GoldenGateJGeometryConverter;
@Entity
@Converter(name=”JGeometry”, converterClass= GoldenGateJGeometryConverter.class)
public class SpatialEntity {
private JGeometry geometry;
@Access(AccessType.PROPERTY)
@Convert(“JGeometry”)
public JGeometry getGeometry() {
return geometry;
}
このコンバータは、SDO_GEOMETRY
列のGoldenGate XML表現を、JPAエンティティのフィールドにバインドされたoracle.spatial.geometry.JGeometry
のインスタンスに変換します。GoldenGateJGeometryConverter
クラスは、HotCache JVMおよびHotCacheデプロイメントで使用されるCoherenceキャッシュ・サーバーJVMのクラスパスに(依存先のeclipselink.jar
ファイルとともに)すでに存在するcoherence-hotcache.jar
に含まれます。ただし、JGeometry
クラスはOracle Spatial and Graphオプションのインストールからのsdoapi.jar
に含まれます。sdoapi.jar
ファイルはHotCache JVMのクラスパスにある必要があり、JPAエンティティがJGeometry
フィールドを含む他のJVMはデシリアライズされます。
oracle.spatial.geometry.JGeometry
クラスはjava.io.Serializable
を実装しているため、CoherenceでキャッシュされたJGeometry
フィールドを持つJPAエンティティは、追加の構成をしなくてもjava.io.Serializable
でシリアライズできます。CoherenceのPortable Object Format (POF)を使用してJGeometry
フィールドを持つJPAエンティティをシリアライズするには、次の例のようにJGeometrySerializer
をCoherenceデプロイメントで使用されるPOF構成ファイルに追加する必要があります。
<user-type>
<type-id>1001</type-id><!—use a type-id value above 1000 that doesn’t conflict with other POF type-ids-->
<class-name>oracle.spatial.geometry.JGeometry</class-name>
<serializer>
<class-name>oracle.spatial.geometry.JGeometryPofSerializer</class-name>
</serializer>
</user-type>
oracle.spatial.geometry.JGeometryPofSerializer
クラスはcoherence-hotcache.jar
に含まれ、POFを使用してJGeometry
フィールドを持つJPAエンティティをシリアライズまたはデシリアライズする任意のJVMのクラスパスに存在する必要があります。
親トピック: Oracleデータ型のサポート
XMLTypeのサポート
EclipseLinkは、XMLType
列をjava.lang.String
またはorg.w3c.dom.Document
(JPAエンティティ内のマップされるフィールドのタイプによります)のインスタンスにマッピングすることで、Oracle DatabaseのXMLType
データ型をサポートします。『EclipseLink API Reference』のDirectToXMLTypeMappingに関する項、および『On Persistence』ブログのXMLTYPEのマッピングに関する項を参照してください。
そのためHotCacheは、XMLType
のタイプの列の、JPAエンティティのフィールドにバインドされたjava.lang.String
またはorg.w3c.dom.Document
のインスタンスへのマッピングをサポートします。このサポートでは、標準のEclipseLinkのDirectToXMLTypeMapping
の構成が必要です。
XMLType
列のサポートに対して統合取得モードを使用するには、GoldenGateを構成する必要があります。『Oracle DatabaseでのOracle GoldenGateの使用』のサポートされるOracleデータ型およびオブジェクトの詳細に関する項を参照してください。
親トピック: Oracleデータ型のサポート
HotCacheでのマルチスレッドの構成
トランザクションおよびその操作は、ソース・データベースでコミットされた順に証跡ファイルに現れます。デフォルトでは、HotCacheは、一度に1つのスレッドに操作を適用することで、ソース・データベースに適用された操作とまったく同じ順序で操作がキャッシュに適用されることを保証します。マルチスレッドを使用する場合、操作はソース・データベース表に適用された順序とは異なる順序で適用され、正確性のリスクが発生する可能性があります。
潜在的なリスクを判断するには、次の例を検討してください。
-
あるデータベース・トランザクションが表に行を挿入し、次のデータベース・トランザクションがその行を削除する場合、順不同で操作を適用すると、対応するデータベースの行が削除されたオブジェクトがキャッシュに残ります。
-
あるデータベース・トランザクションによって列が古い値に更新され、次のデータベース・トランザクションによってその列が新しい値に更新される場合、順不同で操作を適用すると、キャッシュされたオブジェクトに新しい値ではなく古い値が残る可能性があります。(HotCacheでサポートされているJPAオプティミスティック・ロック機能を使用して、この特定の更新リスクを緩和できます)。
HotCacheを使用するシステムでデータの正確性のリスクがなく、複数のスレッドを使用してCoherenceキャッシュに証跡ファイルの操作を適用することを決定した場合、次のようにマルチスレッドを使用するようにHotCacheを構成できます。
-
GoldenGate Java Deliveryアダプタのプロパティ・ファイルを編集し、トランザクション・モードを使用するようにHotCacheイベント・ハンドラを構成します:
gg.handlerlist=hotcache goldengate.handler.hotcache.type=oracle.toplink.goldengate.CoherenceAdapter1220 goldengate.handler.hotcache.mode=tx
デフォルトでは、GoldenGate Java Deliveryアダプタのイベント・ハンドラは、操作モードを使用します。操作モード(
op
)では、イベント・ハンドラは一度に1つの操作を処理します。トランザクション・モード(tx
)では、イベント・ハンドラは一度に1つのトランザクション内のすべての操作を処理します。 -
GoldenGate Java Deliveryアダプタのプロパティ・ファイルを編集し、HotCache JVM上の
coherence.hotcache.concurrency
システム・プロパティを、JVMホストのコア数(java.lang.Runtime.getAvailableProcessors()
で返されます)の1倍以上、8倍以下の値に設定します。たとえば:jvm.bootoptions=-Dcoherence.hotcache.concurrency=16 …
このプロパティの値によって、HotCacheがCoherenceキャッシュに証跡ファイルの操作を同時に適用するために使用するスレッドの数が決まります。
-
HotCache Replicatの
.prm
ファイルを編集し、GROUPTRANOPS
プロパティを設定します。1
の値は、ソース・データベースのトランザクション境界を保持します。1
を超える値を指定すると、GoldenGate Replicat内でトランザクションのグループ化が行われます。デフォルト値は1000
です。
HotCacheスレッドの動作の概要
HotCacheが推奨のGoldenGate Replicatプロセスで実行されていると仮定すると、ソース・データベース・トランザクションの競合に起因するリスクは、GROUPTRANOPS
プロパティが1
以外の値に構成されている場合にのみ発生します。1
の値を指定すると、ソース・データベースのトランザクション境界およびシーケンスがHotCache Replicatによって保持されます。したがって、1つのトランザクション内の操作が並列に適用され、その次のトランザクションの操作が適用され、その後も同様に続きます。GROUPTRANOPS
プロパティのデフォルトは1000
で、複数の連続したソース・データベース・トランザクションからの証跡ファイル操作を、少なくとも1,000操作の1つのターゲット・トランザクションにグループ化します。GROUPTRANOPS
プロパティ値の規模、ソース・データベースの書込み速度やボリュームを考えると、GROUPTRANOPS
パラメータが1より大きい値に設定された場合にデータの正確性のリスクが発生する可能性は、グループ化されたソース・データベース・トランザクション内で操作が競合する可能性と同等です。『Oracle GoldenGateリファレンスfor Windows and UNIX』のGROUPTRANSOPSに関する項を参照してください。
次の表は、GoldenGate Java Deliveryアダプタのmode
プロパティとcoherence.hotcache.concurrency
プロパティの値に応じたHotCacheスレッドの動作をまとめたものです。
表2-1 HotCacheスレッドの動作
モード | 並行性 | 動作 |
---|---|---|
|
N/A |
op モードの場合、HotCacheでは、各操作が証跡ファイルから読み込まれるたびに、単一のスレッド(GoldenGate Java Deliveryアダプタ・スレッド)上で一度に1つずつ証跡ファイルの操作が適用されます。これはHotCacheのデフォルトの動作です。並行性のプロパティの値は、操作モードでは考慮されません。
|
|
1 |
tx モードで並行性のプロパティ値が1 の場合、HotCacheでは、単一のスレッド(GoldenGate Java Deliveryアダプタ・スレッド)上で、一連の証跡ファイルの操作が繰り返し適用されます。トランザクションを構成する操作のグループは、GoldenGate ReplicatのGROUPTRANOPS プロパティの値によって決定されます。並行性のプロパティのデフォルト値は1 です。この構成は、シングル・スレッドのままであり、データの正確性のリスクがないにもかかわらず、操作モードの構成よりも高いスループットを示す可能性があります。
|
|
>1 |
tx モードで並行性のプロパティ値が1 より大きい場合、HotCacheでは、複数のHotCacheスレッドによる並列処理で一連のトランザクションが処理されます。トランザクションを構成する操作のグループは、GoldenGate ReplicatのGROUPTRANOPS プロパティの値によって決定されます。この構成では、シングル・スレッド構成よりもスループットが向上し、通常、HotCacheホスト上のコア数の最大8倍まで、構成されたスレッド数に応じてスループットが向上します。
|
HotCacheの管理
この項には次のトピックが含まれます:
CoherenceAdapterMXBean
CoherenceAdapterMXBean
MBeanはGolden Gate HotCacheアダプタを表し、操作およびパフォーマンスの統計を提供します。このマネージドBeanのゼロ個以上のインスタンスが作成され、アダプタ・インスタンスごとに1つのマネージドBeanインスタンスとなります。
MBeanのオブジェクト名は次のようになります。
Type=CoherenceAdapter,name=replicat name,member=member name
MBeanブラウザからCoherenceAdapterMXBean
MBeanを表示するには、Coherence管理を有効にする必要があります。Coherence JMX管理を初めて使用する場合は、「JMXを使用したOracle Coherenceの管理」を参照してください。
属性
表2-2は、CacheMBean
の属性を示しています。
表2-2 CoherenceAdapterMXBean
属性 | タイプ | アクセス | 説明 |
---|---|---|---|
|
|
読取り専用 |
CoherenceAdapterによってリフレッシュされたキャッシュの名前 |
|
|
読取り専用 |
統計が最後にリセットされてからの、各操作の実行時間に関するナノ秒単位のサマリー統計 |
|
|
読取り専用 |
統計が最後にリセットされてからの、各トランザクションの実行時間に関するナノ秒単位のサマリー統計 |
|
|
読取り専用 |
統計が最後にリセットされてからの、各操作の呼出し数に関するサマリー統計 |
|
|
読取り専用 |
このメソッドが最後にコールされてからの、各操作の実行時間に関するナノ秒単位のサマリー統計 |
|
|
読取り専用 |
このメソッドが最後にコールされてからの、操作のレプリケーション・ラグに関するミリ秒単位のサマリー統計 |
|
|
読取り専用 |
統計が最後にリセットされてからの、処理された操作数の集計 |
|
|
読取り専用 |
統計が最後にリセットされてからの、操作のレプリケーション・ラグに関するミリ秒単位のサマリー統計 |
|
|
読取り専用 |
統計が最後にリセットされてからの、各トランザクションの操作数に関するサマリー統計 |
|
|
読取り専用 |
各操作タイプ、各キャッシュの、ナノ秒単位の実行時間のサマリー統計 |
|
|
読取り専用 |
CoherenceAdapterが起動された時間 |
|
|
読取り専用 |
現在読み込まれている証跡ファイルの名前 |
|
|
読取り専用 |
最後に正常に処理された操作の証跡ファイル内の位置 |
操作
CoherenceAdapterMXBean
MBeanには、すべてのキャッシュ統計をリセットするresetStatistics
操作が含まれます。
親トピック: HotCacheの管理
HotCacheレポートの理解
HotCacheレポートには、操作設定およびパフォーマンスの統計が含まれています。統計データはCoherenceAdapterMXBean
MBeanから収集され、時間とともに提示されるため、パフォーマンス傾向の発見や潜在的なパフォーマンス問題のトラブルシューティングに最適です。HotCacheレポートの名前はtimestamp-hotcache.txt
で、タイムスタンプはYYYYMMDDHH形式になります。たとえば、2009013101-hotcache.txt
という名前のファイルは、2009年1月31日午前1時のHotCacheレポートを表します。
HotCacheレポートを表示するには、Coherenceレポートを有効にし、report-allレポート・グループを構成する必要があります。Coherenceレポートを初めて使用する場合は、「Oracle Coherenceのレポート機能の使用」を参照してください。
表2-3は、HotCacheレポートの内容を示しています。
表2-3 HotCacheレポートの内容
列 | データ型 | 説明 |
---|---|---|
|
|
関連ファイルの情報の統合に役立つ順次カウンタ。この値は、レポータが再起動され、メンバー全体での一貫性がない場合にリセットされます。しかし、ファイルの統合を試みる際には役立ちます。 |
|
|
レポートの各リフレッシュのタイムスタンプ |
|
|
GoldenGate HotCacheプロパティ・ファイルからの、HotCacheイベント・ハンドラのユーザー指定の名前 |
|
|
HotCacheアダプタが実行されるCoherenceメンバー名 |
|
|
Coherence HotCacheアダプタが起動された時間 |
|
|
処理されたトランザクション操作の数 |
|
|
トランザクション操作が含まれるGolden Gate証跡ファイルの名前 |
|
|
最後に正常に処理された操作の証跡ファイル内の位置 |
|
|
各トランザクションで処理される操作の平均数 |
|
|
各トランザクションで処理される操作の最大数 |
|
|
各トランザクションで処理される操作の最小数 |
|
|
各操作で実行されるエントリ・プロセッサの平均呼出し数 |
|
|
各操作で実行されるエントリ・プロセッサの最大呼出し数 |
|
|
各操作で実行されるエントリ・プロセッサの最小呼出し数 |
|
|
最後のサンプリングからの、各操作のナノ秒単位の平均実行時間 |
|
|
ナノ秒単位の各操作の平均実行時間 |
|
|
ナノ秒単位の各操作の最大実行時間 |
|
|
ナノ秒単位の各操作の最小実行時間 |
|
|
ナノ秒単位の各トランザクションの平均実行時間 |
|
|
ナノ秒単位の各トランザクションの最大実行時間 |
|
|
ナノ秒単位の各トランザクションの最大実行時間 |
|
|
データベース・トランザクションのコミットからHotCacheアダプタによる最後の操作の処理までのミリ秒単位の平均時間 |
|
|
データベース・トランザクションのコミットからHotCacheアダプタによる操作の処理までのミリ秒単位の平均時間 |
|
|
最後のサンプリングからの、データベース・トランザクションのコミットからHotCacheアダプタによる操作の処理までのミリ秒単位の平均時間 |
|
|
データベース・トランザクションのコミットからHotCacheアダプタによる操作の処理までのミリ秒単位の最小時間 |
親トピック: HotCacheの管理
Coherence VisualVMプラグインを使用したHotCacheのモニタリング
Coherence VisualVMプラグインの「HotCache」タブには、HotCacheのパフォーマンス統計がグラフィカル表示されます。Coherence VisualVMプラグインを初めて使用する場合は、「Coherence VisualVMプラグインの使用」を参照してください。
HotCacheの統計データは、CoherenceAdapter
MBeanから収集され、時間とともに表およびグラフ形式で提示されます。このタブには、各GoldenGate HotCacheメンバーの統計が表示され、そのHotCacheメンバーによってリフレッシュされた特定のキャッシュに関する詳細が表示されます。特定のメンバーのデータを表示するには、メンバー表でメンバーを選択します。特定のキャッシュのデータを表示するには、キャッシュ表でキャッシュを選択します。
「HotCache」タブを使用してパフォーマンス統計の詳細を表示し、キャッシュ更新操作の潜在的なパフォーマンスの問題を特定します。「HotCache」タブには、次のものが含まれます。
- 各操作でキャッシュを更新するために必要な最小、最大および平均の時間。
- トランザクション内のすべての操作でキャッシュを更新するために必要な最小、最大および平均の時間。
- 各操作で実行されるエントリ・プロセッサの合計呼出し数。
- 最後の操作の最小、最大および平均の時間。
- このMBean属性値が最後にサンプリングされてからの、最後の操作の最小、最大および平均の操作レプリケーション・ラグ時間。レプリケーション・ラグは、データベース・トランザクションのコミットからHotCacheアダプタによる操作の処理までの時間です。
- 統計が最後にリセットされてからの、最小、最大および平均の操作レプリケーション・ラグ時間。
- 各トランザクションの最小、最大および平均の操作数。
- 各キャッシュ、各操作タイプの最小、最大および平均の時間。操作には、
EVICT
、INSERT
、PK_CHANGE
、READ_FROM_DB
、REDUNDANT_INSERT
、REFRESH
、UPDATE
、およびUPSERT
が含まれます。
親トピック: HotCacheの管理
問題の修正
CoherenceでHotCacheの使用中に問題が発生した場合は、次のいずれかのオプションを使用して問題を解決できる場合があります。
問題: 次のエラーが表示されます:
WARNING: Illegal reflective access by org.eclipse.persistence.internal.security.PrivilegedAccessHelper (org/eclipse/persistence/eclipselink/<version>/eclipselink-<version>.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int)
修正: Javaコマンドラインに次のJPMSオプションを追加します: --add-opens java.base/java.lang=org.eclipse.persistence.core
このJPMSオプションが必要な理由の詳細は、『Oracle Coherenceでのアプリケーションの開発』のJavaモジュールを使用したCoherenceアプリケーションの構築に関する項を参照してください。