『Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成』の「Oracle GoldenGateのインストール」
「Oracle GoldenGateアプリケーション・アダプタのインストール」
『Application Adapters Oracle GoldenGateアダプタの管理』の「Oracle GoldenGateアダプタの理解」
注意:
HotCacheを使用するには、Oracle GoldenGateおよびCoherence Grid Editionのライセンスが必要です。HotCacheは、Oracle GoldenGate for Big Data 12c (12.3.1.1.0以上)およびOracle GoldenGate 11gR1、11gR2および12cのリリースで使用できます。
この章の内容は次のとおりです。
persistence.xml
ファイルで構成されます。(pof-config.xml)
を更新してHotCacheおよびTopLink Gridフレームワーク・クラスが登録できるようにする必要があります。HotCacheは、どのようなCoherenceアプリケーションにも追加できます。データベース・データからJavaオブジェクトへのマッピングの取得には標準JPAが使用されます。構成は、XMLのみで取得することも、注釈を使用したXMLで取得することできます。
次のシナリオは、HotCacheをデータベースと連動して使用する方法、およびCoherenceキャッシュを使用するアプリケーションと連動するように使用する方法を示しています。図2-1にこのシナリオを示します。
GoldenGateを起動します。『Application Adapters Oracle GoldenGateアダプタの管理』のアプリケーションの起動に関する項を参照してください。GoldenGateによって、目的の変更に対するトランザクション・ログがモニターされます。これらの変更内容は追跡ファイルに格納されます。
必要に応じてCoherenceキャッシュ・サーバーを起動し、キャッシュをウォーミングします。
HotCacheを起動して、追跡ファイル内の変更内容をキャッシュに伝播できるようにします。キャッシュのウォーミング中に変更が発生した場合は、変更内容が消失しないように、HotCacheが起動するとその変更が即時にキャッシュに適用されます。
アプリケーション・クライアントを起動します。その操作の一部として、アプリケーションによってキャッシュに対する問合せが繰り返し実行されることを想定します。
サード・パーティ・アプリケーションによって、データベースの直接更新が実行されます。
GoldenGateによってデータベースの変更が検出され、それがHotCacheによってCoherenceキャッシュに伝播されます。
アプリケーション・クライアントによって、キャッシュ内の変更が検出されます。
この項には次のトピックが含まれます:
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>
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
列と関連付けられた)を更新できます。
GoldenGate Javaアダプタでは、データベースのINSERT
、UPDATE
およびDELETE
操作がサポートされています。マップされた表にINSERT
操作を実行すると、関連付けられたクラスの新しいインスタンスが追加され、新たに挿入された行のデータが移入されます。UPDATE
操作で適用される変更内容は、対応するキャッシュ・オブジェクトに伝播されます。更新された行に対応するオブジェクトがキャッシュに含まれていなければ、デフォルトではキャッシュは変更されません。デフォルトの動作を変更するには、HonorRedundantInsertプロパティを参照してください。DELETE
操作を実行すると、対応するオブジェクトがキャッシュに存在する場合はキャッシュから削除されます。
HotCacheでは、1対1、1対多、多対1および多対多のJPA関係マッピングはサポートされません。ただし、HotCacheではJPA埋込み可能クラスおよびJPA要素コレクションはサポートされます。埋込み可能クラスおよび要素コレクションをHotCacheで使用して、ドメイン・オブジェクト間の関係をモデル化できます。HotCacheで使用されるドメイン・オブジェクトは、識別子(リレーショナル・データベースの外部キーと類似)によって相互に参照できる場合もあります。
パフォーマンス最適化として、HotCacheでJPA要素コレクションを使用するときは、親表に対する外部キーである要素コレクション表の列を指定してADD TRANDATA
コマンドでGoldenGateを構成することをお薦めします。要素コレクション表の行が変更されたときに更新するキャッシュ・エントリを、最適化により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 DATABASE ADD SUPPLEMENTAL LOG DATA;
また、ここでの説明は、Oracle GoldenGateがインストールされ、マネージャが起動されていることを前提としています。これには、次の作業が含まれます。
Oracle GoldenGateのダウンロードおよびインストール
ggsci
の実行によるGoldenGateサブディレクトリの作成
マネージャ・パラメータ(mgr.prm
)ファイルの作成、リスナー・ポートの指定
ライブラリ・パスへのJVMライブラリの追加
マネージャの起動
これらのタスクの詳細は、このドキュメントでは述べません。『Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成』の「Oracle GoldenGateのインストール」、『Application Adapters Oracle GoldenGateアダプタの管理』のOracle GoldenGateアプリケーション・アダプタのインストールに関する項および「Oracle GoldenGateアダプタの理解」を参照してください。
注意:
Oracle GoldenGateアプリケーション・アダプタのインストール時には、Oracle GoldenGateの汎用ビルドを使用することが重要です。Oracle GoldenGateの非汎用のインスタンスは使用しないでください。
この項には次のトピックが含まれます:
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 Javaアダプタggsciスクリプトのサンプル
start mgr DBLOGIN USERID csdemo, PASSWORD csdemo STOP EXTRACT cs-cap DELETE EXTRACT cs-cap ADD TRANDATA csdemo.* ADD EXTRACT cs-cap, tranlog, begin now SHELL rm -f dirdat/cs* ADD EXTTRAIL dirdat/cs, EXTRACT cs-cap start cs-cap
Coherence CacheStoresにログインしているユーザーが行った変更が無視されるようにGoldenGateを構成します。これにより、Coherenceによってデータベースに適用された、キャッシュにすでに存在する変更の処理が回避されます。
TranLogOptions
excludeUSER
コマンドは、コマンド行で、またはggsci
スクリプト内で使用できます。たとえば、次のコマンドはcsdemo
でログインしたCoherence CacheStoreユーザーが行ったデータベース表への変更を無視するようにGoldenGate抽出プロセスに指示します。
TranLogOptions excludeUser csdemo
例2-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で無視されることを示します。
注意:
OverwriteMode
オプションは、Oracle GoldenGate for Big Dataには適用されません。
例2-7 GoldenGate Javaアダプタ用の抽出の.prmファイルのサンプル
EXTRACT cs-cap USERID csdemo, PASSWORD csdemo RecoveryOptions OverwriteMode EXTTRAIL dirdat/cs BR BROFF getUpdateBefores TABLE csdemo.*; TranLogOptions excludeUser csdemo --ignore changes made by csuser
persistence.xml
ファイルで構成されます。「HotCacheの仕組み」を参照してください。HotCacheからCoherenceクラスタへの接続はCoherence*Extend (TCP)を使用して実行でき、またはHotCache JVMはCoherenceクラスタをメンバーとして結合できます。次の項では、HotCacheの構成に必要なプロパティと、Coherence*Extendとの接続について説明します。
ファイル名の拡張子が.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
を使用します。
その他の様々なプロパティを使用して、GoldenGate Javaアダプタの動作を制御できます。『Oracle GoldenGate Application Adapters Oracle GoldenGateアダプタの管理』のOracle GoldenGateアプリケーション・アダプタのプロパティの使用に関する項を参照してください。
例2-8 HotCacheプロジェクトの.propertiesファイル
# ==================================================================== # List of active event handlers # ==================================================================== gg.handlerlist=hotcache # ==================================================================== # HotCache event handler # ==================================================================== gg.handler.hotcache.type=oracle.toplink.goldengate.CoherenceAdapter1220 # ====================================== # JVM boot options # ====================================== jvm.bootoptions=-Xms32M -Xmx32M -Djava.class.path=dirprm:ggjava/ggjava.jar:/u01/app/oracle/product/12.1.0/dbhome_1/jdbc/lib/ojdbc6.jar:/u01/Oracle/Middleware/Oracle_Home/coherence/lib/coherence.jar:/u01/Oracle/Middleware/Oracle_Home/coherence/lib/coherence-hotcache.jar:/u01/Oracle/Middleware/Oracle_Home/oracle_common/modules/javax.persistence.jar:/u01/Oracle/Middleware/Oracle_Home/oracle_common/modules/oracle.toplink/eclipselink.jar:/u01/Oracle/Middleware/Oracle_Home/oracle_common/modules/oracle.toplink/toplink-grid.jar:/home/oracle/cgga/workspace/CacheStoreDemo/bin -Dcoherence.cacheconfig=/home/oracle/cgga/workspace/CacheStoreDemo/client-cache-config.xml -Dcoherence.distributed.localstorage=false -Dtoplink.goldengate.persistence-unit=employee
この項では.properties
ファイルのJVMブート・オプションのセクションに指定する必要のあるプロパティについて説明します。これらのオプションはjvm.bootoptions
プロパティを使用して定義します。jvm.bootoptions
のサンプル・リストは、例2-8のJVM boot options
セクションに記載されています。
この項には次のトピックが含まれます:
次のリストは、Javaクラスパスに含める必要があるディレクトリおよびJARファイルです。ディレクトリおよびJARファイルはjava.class.path
プロパティで定義します。
dirprm
: GoldenGateのdirprm
ディレクトリ
ggjava.jar
: GoldenGate Javaアダプタ・ライブラリが含まれています
ojdbc6.jar
: ソース・データベース用のJDBCドライバ・クラスが含まれています
coherence.jar
: Oracle 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にマップされています。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
の値のcoherence.distributed.localstorage
システム・プロパティは、Java boot optionsで渡す必要がある唯一のCoherenceプロパティです。Coherenceのすべてのプロパティと同様に、jvm.bootoptions
文ではプロパティ名に-D
接頭辞を付けます。次に例を示します。
-Dcoherence.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構成と共存できます。どちらもjvm.bootoptions
パスで構成される同じファイルに含めることができます。
HotCacheとCoherenceクラスタ間は、Coherence*Extendで接続されます。Coherence*Extendの詳細は、Oracle Coherenceリモート・クライアントの開発を参照してください。
Coherenceの構成ファイルは.properties
ファイルのjvm.bootoptions=-Djava.class.path=
...エントリで指定されたディレクトリに存在する必要があります。1つの例として、例2-8のjvm.bootoptions
エントリを参照してください。
例2-9に、Coherenceクラスタへの接続にCoherence*Extendを使用するクライアント・キャッシュ構成ファイルのセクションを示します。クライアント・キャッシュ構成ファイルでは、Coherence*Extendは<remote-cache-scheme>
セクションで構成されます。デフォルトでは、Coherence*Extendの接続ポートは9099
です。
例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>
この項には次のトピックが含まれます:
この項では、GoldenGate JavaアダプタのReplicatの.prm
ファイルに定義できるパラメータについて説明します。例2-11に示すパラメータは、HotCacheプロジェクトの最低限の構成です。
パラメータの完全なリストについては、『Oracle GoldenGateリファレンスfor Windows and UNIX』の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リファレンスfor Windows and UNIX』のTABLEおよびMAPのオプションに関する項を参照してください
例2-11は、GoldenGate Javaアダプタのサンプルの.prm
ファイルを示しています。
例2-11 GoldenGate Javaアダプタのサンプルの.prmパラメータ・ファイル
REPLICAT hotcache TARGETDB LIBFILE libggjava.so SET property=/home/user/project/hotcache.properties GROUPTRANSOPS 1 MAP scott.*, TARGET scott.*;
coherence-hotcache.jar
– Oracle Coherence GoldenGate HotCacheライブラリが含まれています
javax.persistence.jar
– Java永続ライブラリが含まれています
eclipselink.jar
– EclipseLinkライブラリが含まれています
toplink-grid.jar
– HotCacheで必要なOracle TopLinkライブラリが含まれています
ドメイン・クラス – Coherenceにキャッシュされているユーザー・クラスを含むJARファイルまたはディレクトリ。HotCacheで使用するためにJPAにマップされています。
(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>
@Property
注釈、またはpersistence.xml
ファイルの<property>
要素のいずれかによって構成できます。構成が矛盾する場合は、後者が優先されます。この項には次のトピックが含まれます:
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]"/>
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]"/>
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]"/>
eclipselink.cache.shared.default
eclipselink.cache.shared.default
プロパティは、EclipseLink内部共有キャッシュを有効化するために使用されます。HotCache JVM内の内部共有キャッシュは、persistence.xml
ファイル内のプロパティをfalse
に設定して無効化することが重要です。
永続性XMLプロパティ
<property name=" eclipselink.cache.shared.default" value="false"/>
この項には次のトピックが含まれます:
IL0001
、IL0002
などの名前の1つ以上の追跡ファイルがGG_HOME/dirdat
ディレクトリにできます。 ファイルが生成されない場合は、GG_HOME/dirrpt/initload.rpt
ファイルを確認してください。initload.rpt
を参照)、Coherence MBeansまたはコマンド行インタフェース・コマンドに従ったターゲットCoherenceキャッシュ内のエントリ数を比較することによって、初期ロードが正しく完了したことを検証します。ベストプラクティスのデプロイメントでは、Coherenceキャッシュ・サービスおよびプロキシ・サービスには、サービス・メンバーの冗長性(たとえば、複数のキャッシュ・サーバー・プロセスおよび複数のプロキシ・サーバー・プロセス)と、Coherence内の組込み自動フェイルオーバー機能により、すでに高い可用性があります。たとえば、プロキシ・サーバーに障害が発生した場合、そのプロキシ・サーバーを使用するCoherence*Extendクライアントは自動的に別のプロキシ・サーバーにフェイルオーバーします。同様に、キャッシュ・サーバーに障害が発生した場合は、別のキャッシュ・サーバーがそのデータの責任を引き受け、そのデータとのクライアント相互作用は、そのデータを所有する新しいキャッシュ・サーバーに自動的にリダイレクトされます。
HotCacheクライアント自体の可用性を高くすることは、HotCache JVMがGoldenGateプロセスに埋め込まれて実行されるため、標準のGoldenGate HA手法に依存します。
GoldenGateは、GoldenGateインストール内のマネージャ・プロセスによって強制されるAUTOSTART
およびAUTORESTART
パラメータを介して単一サーバーHAを実装します。マネージャ・プロセスは、AUTOSTART
で構成された登録済のGoldenGateプロセスを自動的に起動します。また、AUTORESTART
で構成された登録済のGoldenGateプロセスの停止も検出(および自動再起動)します。
マネージャ・プロセス自体、またはマネージャ・プロセスが実行されるホストやそのホストに接続するネットワークの障害から保護するために、GoldenGateはOracle Clusterwareに依存して、アクティブなGoldenGateインストールの停止を検出し、パッシブなGoldenGateインストールにフェイルオーバーします。
HotCache JVM埋込みのGoldenGateプロセスを含め、GoldenGateの高可用性については、ホワイト・ペーパー『Oracle Clusterwareを使用したOracle GoldenGateの高可用性』で説明されています。
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を構成する方法について説明します。
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のクラスパスに存在する必要があります。
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データ型とオブジェクトのサマリーに関する項および使用するキャプチャ方法の決定に関する項を参照してください。
トランザクションおよびその操作は、ソース・データベースでコミットされた順に証跡ファイルに現れます。デフォルトでは、HotCacheは、一度に1つのスレッドに操作を適用することで、ソース・データベースに適用された操作とまったく同じ順序で操作がキャッシュに適用されることを保証します。マルチスレッドを使用する場合、操作はソース・データベース表に適用された順序とは異なる順序で適用され、正確性のリスクが発生する可能性があります。
潜在的なリスクを判断するには、次の例を検討してください。
あるデータベース・トランザクションが表に行を挿入し、次のデータベース・トランザクションがその行を削除する場合、順不同で操作を適用すると、対応するデータベースの行が削除されたオブジェクトがキャッシュに残ります。
あるデータベース・トランザクションによって列が古い値に更新され、次のデータベース・トランザクションによってその列が新しい値に更新される場合、順不同で操作を適用すると、キャッシュされたオブジェクトに新しい値ではなく古い値が残る可能性があります。(HotCacheでサポートされているJPAオプティミスティック・ロック機能を使用して、この特定の更新リスクを緩和できます)。
HotCacheを使用するシステムでデータの正確性のリスクがなく、複数のスレッドを使用してCoherenceキャッシュに証跡ファイルの操作を適用することを決定した場合、次のようにマルチスレッドを使用するようにHotCacheを構成できます。
GoldenGate Javaアダプタのプロパティ・ファイルを編集し、トランザクション・モードを使用するようにHotCacheイベント・ハンドラを構成します。
gg.handlerlist=hotcache goldengate.handler.hotcache.type=oracle.toplink.goldengate.CoherenceAdapter1220 goldengate.handler.hotcache.mode=tx
デフォルトでは、GoldenGate Javaアダプタのイベント・ハンドラは、操作モードを使用します。操作モード(op
)では、イベント・ハンドラは一度に1つの操作を処理します。トランザクション・モード(tx
)では、イベント・ハンドラは一度に1つのトランザクション内のすべての操作を処理します。
GoldenGate Javaアダプタのプロパティ・ファイルを編集し、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アダプタのmode
プロパティとcoherence.hotcache.concurrency
プロパティの値に応じたHotCacheスレッドの動作をまとめたものです。
表2-1 HotCacheスレッドの動作
モード | 並行性 | 動作 |
---|---|---|
|
N/A |
op モードの場合、HotCacheでは、各操作が証跡ファイルから読み込まれるたびに、単一のスレッド(GoldenGate Javaアダプタ・スレッド)上で一度に1つずつ証跡ファイルの操作が適用されます。これはHotCacheのデフォルトの動作です。並行性のプロパティの値は、操作モードでは考慮されません。 |
|
1 |
tx モードで並行性のプロパティ値が1 の場合、HotCacheでは、単一のスレッド(GoldenGate Javaアダプタ・スレッド)上で、一連の証跡ファイルの操作が繰り返し適用されます。トランザクションを構成する操作のグループは、GoldenGate ReplicatのGROUPTRANOPS プロパティの値によって決定されます。並行性のプロパティのデフォルト値は1 です。この構成は、シングル・スレッドのままであり、データの正確性のリスクがないにもかかわらず、操作モードの構成よりも高いスループットを示す可能性があります。 |
|
>1 |
tx モードで並行性のプロパティ値が1 より大きい場合、HotCacheでは、複数のHotCacheスレッドによる並列処理で一連のトランザクションが処理されます。トランザクションを構成する操作のグループは、GoldenGate ReplicatのGROUPTRANOPS プロパティの値によって決定されます。この構成では、シングル・スレッド構成よりもスループットが向上し、通常、HotCacheホスト上のコア数の最大8倍まで、構成されたスレッド数に応じてスループットが向上します。 |
GoldenGateの証跡ファイルは単一テナントのデータが含まれていることが前提で、単一テナントのデータを入れるように構成する必要があります。複数テナントのキャッシュをリフレッシュする場合は、テナントごとに異なるHotCacheプロセスを使用する必要があります。Oracle Databaseを使用していて、GoldenGateのマルチテナント・サポートの構成をまだ実行していない場合は、ここでの手順を完了する前に実行してください。『Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成』のマルチテナント・コンテナ・データベースでのOracle GoldenGateの構成に関する項を参照してください。
HotCacheのマルチテナント・モードを使用するには:
HotCacheのプロパティ・ファイルを編集し、データベース・テナント識別子を設定したcoherence.hotcache.tenantid
システム・プロパティをJVMブート・オプションのセクションに含めます。次に例を示します。
-Dcoherence.hotcache.tenantid=oracle
Coherenceキャッシュ構成ファイルを編集して、構成のスコープ名を含めます。次に例を示します
<?xml version='1.0'?> <cache-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config coherence-cache-config.xsd"> <defaults> <scope-name>accounts</scope-name> </defaults> ...
注意:
前述のテナント識別子とスコープ名を指定する場合は、キャッシュ・サービス名をoracle/accounts:servicename
に変更します。
この項には次のトピックが含まれます:
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レポートには、操作設定およびパフォーマンスの統計が含まれています。統計データは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アダプタによる操作の処理までのミリ秒単位の最小時間 |
Coherence-JVisualVMプラグインの「HotCache」タブには、HotCacheのパフォーマンス統計がグラフィカル表示されます。Coherence-Java VisualVMプラグインを初めて使用する場合は、「Coherence-JVisualVMプラグインの使用」を参照してください。
HotCacheの統計データは、CoherenceAdapatMBean
MBeanから収集され、時間とともに表およびグラフ形式で提示されます。このタブには、各GoldenGate HotCacheメンバーの統計が表示され、そのHotCacheメンバーによってリフレッシュされた特定のキャッシュに関する詳細が表示されます。特定のメンバーのデータを表示するには、メンバー表でメンバーを選択します。特定のキャッシュのデータを表示するには、キャッシュ表でキャッシュを選択します。
「HotCache」タブを使用してパフォーマンス統計の詳細を表示し、キャッシュ更新操作の潜在的なパフォーマンスの問題を特定します。「HotCache」タブには、次のものが含まれます。
各操作でキャッシュを更新するために必要な最小、最大および平均の時間。
トランザクション内のすべての操作でキャッシュを更新するために必要な最小、最大および平均の時間。
各操作で実行されるエントリ・プロセッサの合計呼出し数。
最後の操作の最小、最大および平均の時間。
このMBean属性値が最後にサンプリングされてからの、最後の操作の最小、最大および平均の操作レプリケーション・ラグ時間。レプリケーション・ラグは、データベース・トランザクションのコミットからHotCacheアダプタによる操作の処理までの時間です。
統計が最後にリセットされてからの、最小、最大および平均の操作レプリケーション・ラグ時間。
各トランザクションの最小、最大および平均の操作数。
各キャッシュ、各操作タイプの最小、最大および平均の時間。操作には、EVICT
、INSERT
、PK_CHANGE
、READ_FROM_DB
、REDUNDANT_INSERT
、REFRESH
、UPDATE
、およびUPSERT
が含まれます。