13 オンライン変更同期の構成
内容は次のとおりです。
オンライン変更同期の概要
オンライン変更同期では、データ変更を継続的に抽出およびレプリケートして、ほぼリアルタイムな状態にターゲット・データベースを維持します。必要なExtractおよびReplicatのプロセスおよび証跡の数は、デプロイするレプリケーション・トポロジと、使用しているプロセス・モードによって異なります。
特定のレプリケーション・トポロジのデプロイの詳細は、次のものを参照してください。
Oracleマルチテナント・コンテナ・データベース間でレプリケートする場合、複数のReplicatプロセスを構成する必要があることがあります。
特定のパフォーマンス・レベルを達成するために、複数のプロセス・グループを構成する必要がある場合があります。たとえば、ラグを特定のしきい値未満に抑えたい場合などです。ラグとは、ソース・アプリケーション内で変更が発生した時点と、それらの変更がターゲット・データベースに適用される時点との間の時間差です。
Oracle GoldenGateは、Oracle GoldenGate Managerインスタンス当たり、最大で5,000の同時ExtractおよびReplicatグループをサポートします。サポートされているレベルで、INFO
、STATUS
などのGGSCIコマンドですべてのグループを完全に制御および表示できます。Oracle GoldenGateでは、環境を効果的に管理するために、ExtractおよびReplicatグループの数(合計)をデフォルト・レベルの300以下に保つことが推奨されます。
最高のパフォーマンスを得るためのOracle GoldenGate構成の詳細は、「Oracle GoldenGateのパフォーマンスのチューニング」を参照してください。
親トピック: オンライン変更同期の構成
初期同期
この章の手順に従って変更同期グループおよび証跡を構成したら、初期ロードによるOracle GoldenGateのインスタンス化を参照して同期用のターゲット表を準備します。初期ロードによって、ソース表全体がコピーされ、必要に応じてデータが変換され、トランザクション・データの移動が同期状態から開始されるようにデータがターゲット表に適用されます。変更同期を最初に開始するのは、初期同期プロセス中である必要があります。変更同期によって、ロードが適用されている間、進行中のトランザクション変更が追跡されます。
親トピック: オンライン変更同期の概要
プロセスとファイルの名前の選択
構成手順を開始する前に、Oracle GoldenGateのプロセスとファイルの一貫したネーミング規則を作成すると便利です。意味のある名前を選択すると、ディスプレイ、エラー・ログおよび外部監視プログラムで複数のプロセスやファイルを区別するのに役立ちます。また、環境の変更や拡張に応じて後でプロセスやファイルを追加する際の命名にも対応します。
この項では、次の点について説明します。
親トピック: オンライン変更同期の構成
プロセスのネーミング規則
プロセス名またはグループ名を指定する場合、次のルールに従います。
-
次のタイプのプロセスでは最大8文字を使用できます。アンダースコア(_)などの英数字以外の文字も含めることができます。
-
オンラインExtractグループ
-
初期ロードExtract
-
クラシック(未調整)モードで作成されたオンラインReplicatグループ
-
統合モードで作成されたオンラインReplicatグループ(Oracleのみ)
-
-
調整および並列Replicatプロセス・グループには、最大5文字まで使用できます。アンダースコア(_)などの英数字以外の文字も含めることができます。内部的には、
ADD REPLICAT
コマンドのMAXTHREADS
オプションに基づいて作成される各スレッドのベース名に、3文字のスレッドIDが追加されます。作成される名前は、他のReplicatグループに対して重複させることはできません。たとえば、名前がfin
で、MAXTHREADS
が50スレッドである調整Replicatグループが作成された場合、作成されるスレッド名はfin000
からfin050
になります(MAP
文で指定されたIDであるとします)。この場合、fin000
からfin0050
までの名前を他のReplicatグループは使用できません。詳細は、次のルールを参照してください。 -
グループ名には数値を含めることができますが、数字で終わる名前はお薦めできません。レポート生成時に書込みプロセスによってグループ名の末尾に数値が追加されるため、グループ名の末尾に数値を使用すると(
fin1
など)、レポート・ファイル名の重複やエラーの原因になります。また、Replicatを調整モードで実行している場合、数値で終わるグループ名はお薦めできません。内部的に数値のスレッドIDがグループ名に追加されるため、ベース・グループ名も数字で終わる場合、情報コマンドの出力の解析が困難になります。数字を付加した結果がワイルドカードに適合すると、スレッド名を他のReplicatグループの名前と混同する可能性があります。レポート・ファイル名の重複が起こる可能性もあります。グループ名の始めに数値を配置する方が(たとえば1_fin
、1fin
など)、より実際的です。 -
ローカル・オペレーティング・システムのキャラクタ・セットでサポートされ、オペレーティング・システムでファイル名での使用が許可されているかぎり、プロセスの名前には任意の文字を使用できます。この理由は、グループがその関連するチェックポイント・ファイルとパラメータ・ファイルで識別されるためです。
-
次の文字は、グループ名に使用できません。
{\ / : * ? " < > | }
-
HP UX、LinuxおよびSolarisでは、コロン(:)またはアスタリスク(*)を使用してファイル名を指定できますが、推奨はされません。
-
一般的に、Oracle GoldenGate内では、プロセス名とパラメータ・ファイル名の大/小文字は区別されません。たとえば、
finance
、Finance
およびFINANCE
は、すべて同じであるとみなされます。ただし、Linuxでは、プロセス名(およびADD
コマンドで明示的に定義される場合はそのパラメータ・ファイル名)はすべて大文字またはすべて小文字である必要があります。プロセスおよびパラメータ・ファイルに指定された名前に大文字と小文字が混在していると、プロセスの起動時にエラーが発生します。 -
名前には、1語のみ使用してください。
-
プロセスまたはパラメータ・ファイルのフル・ネームにportという語は使用しないでください。ただし、名前の一部にportという文字列があってもかまいません。
親トピック: プロセスとファイルの名前の選択
ファイル名の選択
キャプチャされたデータは、次のOracle GoldenGateプロセス・ダウンストリームによって処理されるための格納場所である、証跡と呼ばれる一連のファイルへと格納される必要があります。基本的な構成は次のとおりです。
-
ソース・システムのローカル証跡
-
ターゲット・システムのリモート証跡
実際の証跡名には、./dirdat/tr
のように2文字のみが含まれます。新規ファイルが作成される際、Oracle GoldenGateによってこの名前に9桁の順序番号が付加され、./dirdat/aa000000002
のようになります。証跡はOracle GoldenGateプロセスにリンクされており、トラブルシューティングの目的で識別が必要になる場合があるので、そのネーミング規則を確立しておくことをお薦めします。
Windowsシステムでは、証跡パス名のディレクトリの名前が数字で始まる場合、パラメータ・ファイル内に証跡をリストするときに、そのパスをバックスラッシュでなくスラッシュで指定する必要があります。詳細は、「Windowsシステムでのパラメータ・ファイルでのファイルシステム・パス名の指定」を参照してください
Oracle GoldenGate証跡の詳細は、証跡とはを参照してください。
親トピック: プロセスとファイルの名前の選択
チェックポイント表の作成
Replicatは、予期される停止または予期されない停止の後に処理を開始する基準となる証跡内の既知の位置を指定するチェックポイントを管理します。チェックポイントのレコードを格納するために、Replicatはターゲット・データベースのチェックポイント表を使用します。これにより、ReplicatのチェックポイントをReplicatトランザクション自体に含めることができるため、Replicatプロセスまたはデータベース・プロセスに障害が発生した場合でも、トランザクションは一度しか適用されません。不要になった行は削除されるため、チェックポイント表のサイズは小さく抑えられ、データベース・パフォーマンスには影響しません。チェックポイント表の詳細は、チェックポイントについてを参照してください。
チェックポイント表作成のオプション
チェックポイント表は任意のスキーマに配置できます。可能であれば、Oracle GoldenGate専用のものを使用してください。
Oracle GoldenGateの複数のインスタンス(複数インストール)は同じチェックポイント表を使用できます。Oracle GoldenGateは、異なるインスタンスでReplicatグループの名前が同じであっても、チェックポイントを追跡します。
必要に応じて複数のチェックポイント表を使用できます。たとえば、Replicatグループごとに異なるものを使用できます。
チェックポイント表は次の方法でインストールできます。
-
GLOBALS
ファイルにデフォルトのチェックポイント表を指定できます。ADD REPLICAT
コマンドを使用して作成された新規Replicatグループは、特別な指示がなくてもこの表を自動的に使用します。手順は、GLOBALSファイルにデフォルトのチェックポイント表を指定する手順を参照してください。 -
任意のReplicatグループを作成する際に、
ADD REPLICAT
コマンドで、次のように特定のチェックポイント表の指示を指定できます。-
グループで特定のチェックポイント表を使用するには、
ADD REPLICAT
のCHECKPOINTTABLE
引数を使用します。このチェックポイント表は、GLOBALS
ファイルのすべてのデフォルトの指定よりも優先されます。ただ1つのReplicatグループを使用する場合、このコマンドを使用して、GLOBALS
ファイルの作成を完全に省略できます。 -
グループでチェックポイント表の使用を省略するには、
ADD REPLICAT
のNODBCHECKPOINT
引数を使用します。チェックポイント表がない場合でも、チェックポイントはReplicatによりディスク上のチェックポイント・ファイルに保持されますが、データの一貫性を失うリスクが生じます。
-
チェックポイント表の実装方法にかかわらず、ADD REPLICAT
コマンドを使用する前に、ターゲット・データベースにチェックポイント表を作成しておく必要があります。
ターゲット・データベースにチェックポイント表を追加する手順
GGSCIを通じてチェックポイント表を作成する次の手順は、かわりにchkpt_
db
_create.sql
スクリプト(db
はデータベース・タイプの略称)を実行することで省略できます。このスクリプトを使用することで、カスタム記憶域または他の属性を指定できます。この表の列の名前または属性は変更しないでください。
-
Oracle GoldenGateディレクトリから、GGSCIを実行して
DBLOGIN
コマンドを発行し、データベースにログインします。このコマンドを発行するユーザーは、CREATE TABLE
権限を持っている必要があります。データベースで使用する正しい構文の詳細は、『Oracle GoldenGateリファレンス』を参照してください。 -
GGSCIで、次のコマンドを発行してデータベースにチェックポイント表を追加します。
ADD CHECKPOINTTABLE
container
owner.table
説明:
Oracleマルチテナント・コンテナ・データベースにインストールする場合、
owner
.table
は表の所有者と名前、container
はPDBの名前です。この表をデフォルトのチェックポイント表として使用し、GLOBALS
ファイルのCHECKPOINTTABLE
で指定する場合、所有者および名前は省略できます。この表の名前は、データベースでオブジェクト名に対して許容される最大長を超えてはなりません。チェックポイント表の名前には、引用符、バックスラッシュ、番号記号などの特殊文字を含めることはできません。
GLOBALSファイルにデフォルトのチェックポイント表を指定する手順
この手順は、Oracle GoldenGateインスタンスにおけるすべてのチェックポイント表のグローバル名を指定します。Replicatグループの作成時に異なるチェックポイント表を指定することによって、任意のReplicatグループに対してこの名前をオーバーライドできます。
親トピック: チェックポイント表の作成
Oracle RACにおける調整Replicatへの対応
チェックポイント表の作成対象のReplicatがOracle RAC構成で実行される場合、Replicatチェックポイント表のPCTFREE
属性をできるだけ高い値、可能なら90に増やすことをお薦めします。これにより、調整処理で必要になる、頻繁なチェックポイント化に対応できます。この変更は、Replicatグループを初めて開始する前に行う必要があります。調整Replicatの詳細は、「オンラインReplicatグループの作成」を参照してください。
親トピック: チェックポイント表の作成
オンラインExtractグループの作成
オンラインExtractグループを作成するには、ソース・システムでGGSCIを実行し、ADD EXTRACT
コマンドを発行します。コマンド引数はすべてカンマで区切ります。構文には、次の2つの形態があります。
標準、パッシブまたはデータ・ポンプExtractグループを作成するための構文
ADD EXTRACT group
{, datasource
}
{, BEGIN start_point
} | {position_point
}
[, PASSIVE]
[, THREADS n
]
[, PARAMS pathname
]
[, REPORT pathname
]
[, DESC 'description
']
説明:
-
group
は、Extractグループの名前です。グループ名は必須です。 -
datasource
は、抽出するデータのソースを指定する場合に必要です。次のいずれかを使用します。-
TRANLOG
では、データソースとしてトランザクション・ログを指定します。Oracle Enterprise Editionでこのオプションを使用する場合は、ADD EXTRACT
を使用する前に(かつ、DELETE EXTRACT
を発行してExtractグループを削除する前に)、Extractデータベース・ユーザー(または同じ権限を持つユーザー)としてDBLOGIN
コマンドを発行する必要があります。z/OS上で稼働する
DB2では、
bsdsオプションを使用して、トランザクション・ログのブートストラップ・データセットのファイル名を指定します。 -
INTEGRATED TRANLOG
では、このExtractが統合キャプチャ・モードで動作して、Oracle Databaseログマイニング・サーバーから論理変更レコード(LCR)を受信することを指定します。このパラメータは、Oracle Databaseにのみ適用されます。 -
EXTTRAILSOURCE
trail name
では、ローカル証跡の相対名または完全修飾名を指定します。データ・ポンプを作成する場合に使用します。データ・ポンプは、Oracle GoldenGateの任意の抽出方法と組み合せて使用できます。
-
-
BEGIN
start_point
では、処理のための初期チェックポイントおよび開始ポイントを確定してオンラインExtractグループを定義します。このポイントより前に開始されたトランザクションは、破棄されます。次のいずれかを使用します。-
NOW
は、グループを作成するためにADD EXTRACT
コマンドが実行された時点(統合モードのOracle Extractの場合は、REGISTER EXTRACT
コマンドでグループが登録された時点から)のタイムスタンプが指定された変更の抽出を開始します。ADD EXTRACT
文よりも前にOracle GoldenGateの証跡に取得されたデータを回避しない場合は、データ・ポンプExtractにNOW
を使用しないでください。YYYY-MM-DD HH:MM[:SS[.CCCCCC
]]
は、開始ポイントとして正確なタイムスタンプを指定するための書式です。レプリケーションまたはロギングが有効化された時点より後の開始ポイントを使用してください。
-
-
position_point
では、特定のトランザクション・ログ・ファイル内で処理を開始する特定の位置を指定します。データベースで使用する特定の構文は、『Oracle GoldenGateリファレンス』のADD EXTRACT
に関する項を参照してください。 -
PASSIVE
では、グループがパッシブExtractであることを示します。PASSIVE
を使用する場合、別名Extractも使用する必要があります。このオプションは、他のADD EXTRACT
オプション内に任意の順序で配置できます。 -
THREADS
n
は、ExtractがOracle Real Application Cluster (RAC)におけるクラシック・キャプチャ・モードで動作している場合に必要です。クラスタで使用するREDOログ・スレッドの数を指定します。 -
PARAMS
pathname
は、このグループのパラメータ・ファイルをOracle GoldenGateディレクトリのdirprm
サブディレクトリ以外の場所に格納する場合に必要です。完全修飾名を指定します。デフォルトの場所をお薦めします。 -
REPORT
pathname
は、このグループのプロセス・レポートをOracle GoldenGateディレクトリのdirrpt
サブディレクトリ以外の場所に格納する場合に必要です。完全修飾名を指定します。デフォルトの場所をお薦めします。 -
DESC '
description
'では、グループの説明を指定します。
別名Extractグループを作成するための構文
ADD EXTRACTgroup
, RMTHOST {host
|IP address
} , {MGRPORT port} | {PORT port} [, RMTNAME name] [, DESC 'description']
説明:
-
RMTHOST
では、このグループを別名Extractとして識別し、リモート・ホストのDNS名またはそのIPアドレスを指定します。 -
MGRPORT
では、Managerが稼働しているリモート・システムのポートを指定します。動的Collectorを使用する場合、このオプションを使用します。 -
PORT
では、静的Collectorのポートを指定します。静的Collectorを実行する場合にのみ、MGRPORT
のかわりに使用します。 -
RMTNAME
では、パッシブExtractの名前を指定します(別名Extractの名前と異なる場合)。 -
DESC
'description
'では、グループの説明を指定します。
例13-1 ログベース取得のためのExtractグループの追加
この例では、finance
というExtractグループを作成します。抽出は、グループの作成時点に生成されたレコードから開始します。
ADD EXTRACT finance, TRANLOG, BEGIN NOW
例13-2 データ・ポンプExtractグループの追加
この例では、finance
というデータ・ポンプExtractグループを作成します。このグループは、Oracle GoldenGate証跡のc:\ggs\dirdat\lt
から読取りを行います。
ADD EXTRACT finance, EXTTRAILSOURCE c:\ggs\dirdat\lt
例13-3 パッシブExtractグループの追加
この例では、finance
というパッシブExtractグループを作成します。抽出は、グループの作成時点に生成されたレコードから開始します。このグループはパッシブとしてマークされるため、ターゲットの別名ExtractがこのExtractへの接続を開始します。
ADD EXTRACT finance, TRANLOG, BEGIN NOW, PASSIVE
例13-4 パッシブ・データ・ポンプExtractグループの追加
この例では、finance
というデータ・ポンプExtractグループを作成します。これは、Oracle GoldenGate証跡のc:\ggs\dirdat\lt
から読取りを行うパッシブ・データ・ポンプExtractです。このデータ・ポンプはパッシブとしてマークされるため、ターゲットの別名Extractがこのデータ・ポンプへの接続を開始します。
ADD EXTRACT finance, EXTTRAILSOURCE c:\ggs\dirdat\lt, PASSIVE
例13-5 別名Extractグループの追加
この例では、alias
という別名Extractグループを作成します。
ADD EXTRACT alias, RMTHOST sysA, MGRPORT 7800, RMTNAME finance
例13-6 Oracleのための統合モードでのプライマリExtractの追加
この例では、Oracleソース・データベース用に統合キャプチャ・モードでExtractを作成し、開始ポイントを、ExtractグループがREGISTER EXTRACT
コマンドによってOracleデータベースに登録された時刻に設定します。統合キャプチャは、Oracleデータベースに対してのみ使用できます。
ADD EXTRACT finance INTEGRATED TRANLOG, BEGIN NOW
親トピック: オンライン変更同期の構成
証跡の作成
データを抽出したら、処理して1つ以上の証跡に格納する必要があります。証跡では、別のOracle GoldenGateプロセスによって処理するためにデータが格納されます。証跡は、必要に応じて作成およびエージングされる一連のファイルです。証跡を読み取るプロセスには、次のものがあります。
-
データ・ポンプExtract: 後続の処理のために必要に応じてローカル証跡からデータを抽出し、そのデータをターゲット・システムに転送します。
-
Replicat: 証跡を読み取って変更データをターゲット・データベースに適用します。
複数の証跡を作成し、異なる表またはアプリケーションのデータを分けたり、カスケード・トポロジなどの特定のレプリケーション・トポロジの要件に適合させることができます。TABLE
文で指定した表を、Extractパラメータ・ファイルのEXTTRAIL
またはRMTTRAIL
パラメータ文で指定した証跡にリンクします。Oracle GoldenGate証跡の詳細は、Oracle GoldenGate証跡についてを参照してください。
Oracle GoldenGate証跡の記憶域の割当て
通常の構成では、少なくともソース・システムに1つ、ターゲット・システムに1つの証跡があります。次の点を考慮に入れ、十分なディスク領域を割り当てます。
-
プライマリExtractプロセスは、ソース・データベースからトランザクション・データを取得し、ローカル証跡に書き込みます。データ・ポンプExtractは、その証跡を読み取り、データをネットワーク経由でターゲットのリモート証跡に転送します。ネットワークに障害があると、データ・ポンプは失敗しますが、プライマリExtractによるローカル証跡へのデータの処理は続けられます。累積していくデータを格納するのに十分なディスク領域がある必要があります。そうでないと、プライマリExtractが異常終了します。
-
ターゲットの場所にある証跡の場合、
PURGEOLDEXTRACTS
パラメータで設定された消去ルールに従ってデータの累積を処理するのに十分なディスク領域を用意します。PURGEOLDEXTRACTS
を使用しても、ターゲット・データベースへの適用よりもネットワーク経由の転送の方が速いため、データはターゲットに常に累積します。
証跡アクティビティがビジネス・アプリケーションによって干渉されないようにするには、別個のディスクまたはファイル・システムを割り当てて証跡ファイルを含めます。証跡ファイルは、Oracle GoldenGateインストールのローカル・ドライブに配置することも、NASまたはSANデバイスに配置することもできます。Oracleクラスタでは、ASMまたはDBFS記憶域に配置できます。
親トピック: 証跡の作成
証跡の追加
証跡を作成または追加する際、ディスクにファイルを物理的に作成しません。ファイルはExtractプロセスによって自動的に作成されます。証跡の名前を指定し、その証跡に書き込むExtractグループに割り当てます。
証跡を追加するには、ソース・システムのGGSCIで、次のコマンドを発行します。
ADD {RMTTRAIL | EXTTRAIL}pathname
, EXTRACTgroup
[, MEGABYTESn
]
説明:
-
RMTTRAIL
では、リモート・システムの証跡を指定します。 -
EXTTRAIL
では、ローカル・システムの証跡を指定します。-
EXTTRAIL
は、PASSIVE
モードのExtractには使用できません。 -
EXTTRAIL
は、データ・ポンプによって読み取られるローカル証跡を指定する場合に使用する必要があります。
-
-
pathname
は、2文字の名前(任意の2つの英数字)を含む証跡の相対名または完全修飾名です(c:\ggs\dirdat\rt
など)。Oracle GoldenGateでは、処理時の作成順に、各証跡ファイルにシリアル番号が追加されます。通常、証跡は、Oracle GoldenGateディレクトリのdirdat
サブディレクトリに格納されます。 -
EXTRACT
group
は、この証跡に書込みを行うExtractグループの名前です。1つのExtractグループのみが、証跡に書き込むことができます。 -
MEGABYTES
n
は、各証跡ファイルのサイズをMB単位で設定できるオプション引数です(デフォルトは100です)。
例13-7 ローカル証跡の作成
この例では、Extractグループのext
に対して/ggs/dirdat/lt
というローカル証跡を作成します。
ADD EXTTRAIL /ggs/dirdat/lt, EXTRACT ext
例13-8 リモート証跡の作成
この例では、Extractグループのfinance
に対して、各ファイル・サイズを約50MBとしてc:\ggs\dirdat\rt
という証跡を作成します。
ADD RMTTRAIL c:\ggs\dirdat\rt, EXTRACT finance, MEGABYTES 200
親トピック: 証跡の作成
オンライン抽出用のパラメータ・ファイルの作成
次の手順に従って、オンラインExtractグループのパラメータ・ファイルを作成します。パラメータ・ファイルは、別名Extractグループには必要ありません。
親トピック: オンライン変更同期の構成
オンラインReplicatグループの作成
Replicatグループを作成する前に、クラシック・モード(Oracle環境では非統合モードとも呼ばれます)、調整モードおよび統合モードのうち、どのReplicatモードが使用環境に適切かを評価する必要があります。
内容は次のとおりです。
- クラシックReplicatモードについて
- 調整Replicatモードについて
- 統合Replicatモードについて
- パラメータ変更との関係で見たReplicat処理の理解
- Replicatグループの作成
親トピック: オンライン変更同期の構成
クラシックReplicatモードについて
クラシック・モードでは、Replicatは標準SQLを使用してデータをターゲット表に適用する単一スレッド・プロセスです。このモードでは、Replicatは次のように動作します。
-
Oracle GoldenGate証跡を読み取ります。
-
データのフィルタリング、マッピング、および変換を実行します。
-
ソース・データベースのDMLまたはDDLトランザクションを表すSQL文を作成します(コミット順)。
-
指定のターゲット・データベース(たとえばODBCまたはネイティブのデータベース・インタフェース)に対してサポートされているSQLインタフェースを介して、SQLをターゲットに適用します。
図13-1に示すように、クラシックReplicatを使用してトランザクションをパラレルに適用できますが、複数のReplicatプロセスにわたってワークロードをパーティション化する必要があります。各Replicatに対してパラメータ・ファイルを作成する必要があります。
任意のオブジェクトに対してクラシック・モードを使用すべきか判断するためには、1つのReplicatグループのオブジェクトが他のいずれかのReplicatグループのオブジェクトに対して、トランザクショナルまたはそれ以外の依存関係を持つことがあるかどうかを判断する必要があります。すべてのワークロードが、複数のReplicatグループにパーティション化されても元のトランザクション原子性を維持できるというわけではありません。たとえば、ワークロードが主キーを定期的に更新する表は、この方法で簡単にパーティション化することはできません。このモードでは、DDLレプリケーション(データベースに対してサポートされている場合)も、アクションが特定のレコードに基づいているような一部のSQLEXEC
またはEVENTACTIONS
機能の使用も、有効ではありません。
表に外部キーへの依存関係や、主キーに対する更新がない場合は、クラシック・モードが適切である可能性があります。クラシック・モードには、調整モードより少ないオーバーヘッドしか必要ありません。
パラレルReplicatグループの使用方法の詳細は、Oracle GoldenGateのパフォーマンスのチューニングを参照してください。
親トピック: オンラインReplicatグループの作成
調整Replicatモードについて
調整モードでは、Replicatは次のように動作します。
-
Oracle GoldenGate証跡を読み取ります。
-
データのフィルタリング、マッピング、および変換を実行します。
-
コミットされた順序で各スレッドに送信された操作を処理します。
-
指定のターゲット・データベース(たとえばODBCまたはネイティブのデータベース・インタフェース)に対してサポートされているSQLインタフェースを介して、SQLをターゲットに適用します。
クラシック・モードと調整モードの相違点は、調整モードではReplicatがマルチスレッドである点です。単一のReplicatインスタンス内で複数のスレッドが独立に証跡を読み取り、パラレルにトランザクションを適用します。各スレッドは、フィルタリング、マッピング、変換、SQL作成およびエラー処理を、割り当てられたワークロードについて処理します。coordinatorスレッドは、トランザクションをスレッド間で調整して、スレッド間の依存関係を処理します。
合計ソース・トランザクションの整合性が維持されないように、ソース・トランザクションはCRプロセスに分割できます。 CRプロセスによって処理されるトランザクションの一部はコミットされた順序で実行されますが、すべてのCRプロセスに渡るトランザクション全体はコミットされた順序では実行されません。
調整Replicatでは、ワークロードのユーザー定義のパーティション化が可能で、大量のトランザクションを同時に適用できます。また、DDLやTHREADRANGE
パーティション化を使用した主キー更新などの調整の必要なトランザクションの実行が自動的に調整されます。そのようなトランザクションは、ターゲットでは1つのトランザクションとして完全に同期化されて実行されます。まず、それより前のトランザクションがすべて適用されるのを待機し、このバリア・トランザクションより後のトランザクションはすべて、このバリア・トランザクションが適用されるまで待機します。
1つの調整Replicatに必要なパラメータ・ファイルは、スレッドの数に関係なく1つのみです。MAP
文でTHREAD
またはTHREADRANGE
オプションを使用して、それらのオブジェクトのトランザクションをどのスレッドが処理するかを指定し、Replicatグループを作成するときに、スレッド数の最大値を指定します。
バリア・トランザクションについて
バリア・トランザクションは、調整Replicat構成で自動的に管理されます。バリア・トランザクションは、スレッド間での調整を必要とするトランザクションです。たとえば、DDL文、主キーに対する更新を含むトランザクションおよび一部のEVENTACTIONS
アクションなどです。
MAP
文でCOORDINATED
キーワードを使用することで、他のトランザクションを強制的にバリア・トランザクションのように処理できます。この使用例の1つは、SQLEXEC
を、強制的にシリアル実行に類似した方法で実行する場合です。これは、ターゲットの状態がすべてのトランザクションにわたって整合的でないと結果が一意にならない可能性がある場合に有益です。
注意:
マップされた表がTHNREADRANGE
に基づいてパーティション化されている場合、調整Replicatは非バリア・トランザクションに対して依存性計算を行いません。指定されたTHREADRANGE
列に依存して、ハッシュ値が計算されます。これによりハッシュ値に基づいて受信データがパーティション化され、このハッシュ値に一致するすべてのレコードが同じスレッドに送信されます。
親トピック: 調整Replicatモードについて
バリア・トランザクションの処理方式
バリア・トランザクションの開始時点で、すべてのスレッドが収束し、待機します。他のスレッドが開始位置に達するまで、バリア・トランザクションは一時停止されます。いずれかのスレッドがバリア・トランザクションの一部をすでに処理中であった場合、それらのスレッドはロールバックを実行します。グループ化トランザクション(BATCHSQL
またはGROUPTRANSOPS
パラメータによって制御されているものなど)も、バリア・トランザクションの開始位置に到達するまでロールバックされ、再適用されます。
バリア・トランザクションの後も、すべてのスレッドが収束し、次のトランザクションの開始を待機します。バリア・トランザクションの前と後の2つの同期ポイントにより、メタデータ操作とEVENTACTIONS
アクションがすべて、データ操作に関連する適切な順序で行われることが保証されます。
バリア・トランザクションの開始時点でスレッドが同期すると、バリア・トランザクションは、MAP
文で指定されたすべてのスレッドのうちで最も低いスレッドIDを持つスレッドによってシリアルに処理され、複数スレッドにわたるパラレル処理が再開されます。Replicatパラメータ・ファイルでUSEDEDICATEDCOORDINATIONTHREAD
パラメータを指定することによって、バリア・トランザクションが特定のスレッド(常にスレッド0)を介して処理されるように強制することができます。
親トピック: 調整Replicatモードについて
グローバル水位標について
調整Replicatが正常に停止すると、すべてのスレッドが、グローバル水位標と呼ばれる証跡内の同じトランザクション境界で停止することが保証されます。これは、その位置の前のすべてのレコードがそれぞれのスレッドすべてによりコミットまたは無視される、同期ポイントとして定義されます。正常に停止しない場合は、SYNCHRONIZE REPLICAT
コマンドを使用すると、すべてのスレッドを、最後のチェックポイントを作成したスレッドの位置に戻すことができます。調整Replicatグループのリカバリの詳細は、異常停止後のスレッドの同期を参照してください。
注意:
調整Replicatは、オンライン・プロセスでしかありません。初期ロードを実行するためには使用しないでください。
親トピック: 調整Replicatモードについて
統合Replicatモードについて
Replicatは、リリース11.2.0.4以降のOracleデータベースで利用できる統合モードでは、ターゲットOracleデータベース内で利用できる適用処理機能を活用します。このモードでは、Replicatは、証跡を読み取り、ソースのDMLまたはDDLトランザクションを表す論理変更レコードを作成し、それらのレコードをOracleターゲット・データベースのインバウンド・サーバーに送信します。インバウンド・サーバーは、データをターゲット・データベースに適用します。
統合Replicatの使用方法の詳細は、『Oracle DatabaseのためのOracle GoldenGateの使用』の統合モードの概要に関する項を参照してください。
注意:
統合Replicatは、オンライン・プロセスでしかありません。初期ロードを実行するためには使用しないでください。
親トピック: オンラインReplicatグループの作成
パラメータ変更との関係で見たReplicat処理の理解
Replicat構成におけるオブジェクト指定の変更は、すでに適用されたトランザクションではなく、未適用のものにのみ影響が及びます。これは調整Replicatや統合Replicatを使用する場合の重要な考慮事項です。
クラシック・モードのReplicatでは、トランザクションがシリアルに適用されるため、適用済トランザクションと未適用のトランザクションの境界は明瞭です。しかし調整Replicatや統合Replicatでは、トランザクションが非同期でパラレルに適用されるため、証跡内に、適用済トランザクションと未適用のトランザクションを分ける単一のポイントが存在しません。
調整モードや統合モードには、最低水位標(それを下回るトランザクションはすべて適用されます)と、最高水位標(それを上回るトランザクションは適用されません)があります。それらの境界の間に、個々のスレッドの進捗に応じて、適用されている可能性もされていない可能性もあるトランザクションが存在します。その結果、Replicatが強制される場合、Replicatの構成におけるオブジェクト指定の変更が、Replicatの再開後、ターゲット上に不均等に反映される場合があります。これが適用されるパラメータ変更の例は、MAP
マッピング、FILTER
句およびEXCLUDE
のパラメータに対する変更です。
Replicatの構成は、Replicatが異常終了または強制終了された後には変更しないでください。Replicatは、起動の後、最後のチェックポイントにリカバリできるようにしておきます。調整Replicatの場合は、調整Replicat構成の管理の管理手順に従うことができます。リカバリが完了するとSTOP REPLICAT
コマンドでReplicatを正常に停止できるため、その後でオブジェクト指定を変更できます。
親トピック: オンラインReplicatグループの作成
Replicatグループの作成
オンラインReplicatグループを作成するには、ターゲット・システムでGGSCIを実行し、ADD REPLICAT
コマンドを発行します。コマンド引数はすべてカンマで区切ります。
ADD REPLICATgroup
, EXTTRAILpath
[, {INTEGRATED | COORDINATED [MAXTHREADSnumber
]}] [, BEGINstart_point
| , EXTSEQNOseqno
, EXTRBArba
] [, CHECKPOINTTABLEowner
.table
] [, NODBCHECKPOINT] [, PARAMSpath
] [, REPORTpath
]
説明:
-
group
は、Replicatグループの名前です。グループ名は必須です。Oracle GoldenGateのネーミング規則の詳細は、「プロセスのネーミング規則」を参照してください。 -
EXTTRAIL
path
は、ADD RMTTRAIL
コマンドで定義した証跡の相対名または完全修飾名です。 -
INTEGRATED
は、このReplicatグループが統合モードで動作することを示しています。このモードは、Oracleデータベースにのみ有効です。 -
COORDINATED
は、このReplicatグループが調整モードで動作することを示しています。MAXTHREADS
は、このグループで許容されるスレッドの最大数を指定します。有効な値は1から500です。MAXTHREADS
はオプションです。MAXTHREADS
がない場合のデフォルトのスレッド数は25です。注意:
各Replicatスレッドは、
MAXGROUPS
パラメータのコンテキストでは1つのReplicatグループとみなされます。MAXGROUPS
では、Oracle GoldenGateのインスタンスで許容されるプロセス・グループの最大数が制御されます。MAXTHREADS
にOracle GoldenGateインスタンス内の他のプロセス・グループの数を加えた値は、MAXGROUPS
で設定された値(デフォルトは1000)を超えることはできません。 -
BEGIN
start_point
では、処理のための初期チェックポイントおよび開始ポイントを確定してオンラインReplicatグループを定義します。次のいずれかを使用します。-
NOW
では、グループを作成するためにADD REPLICAT
コマンドが実行された時点のタイムスタンプが指定された変更からレプリケートを開始します。 -
YYYY
-
MM
-
DD
HH
:
MM
[:
SS
[.
CCCCCC
]]
は、開始ポイントの正確なタイムスタンプを指定する形式です。
-
-
EXTSEQNO
seqno
, EXTRBA
rba
では、データの読取りを開始する証跡内のファイルの順序番号と、そのファイル内の相対バイト・アドレスを指定します。このオプションを使用しない場合、処理はデフォルトで証跡の最初から開始されます。順序番号には数値を指定しますが、埋込み用の0(ゼロ)は使用しません。たとえば、トレイル・ファイルがc:\ggs\dirdat\aa000000026
の場合は、EXTSEQNO 26
と指定します。このオプションを使用する前に、Oracleサポートに連絡してください。 -
CHECKPOINTTABLE
owner
.table
では、GLOBALS
ファイルで指定されたデフォルト以外のチェックポイント表の所有者および名前を指定します。この引数を使用するには、ADD
CHECKPOINTTABLE
コマンドを使用してデータベースにチェックポイント表を追加する必要があります(「チェックポイント表の作成」を参照)。 -
NODBCHECKPOINT
では、このReplicatグループでチェックポイント表を使用しないことを指定します。 -
PARAMS
path
は、このグループのパラメータ・ファイルをOracle GoldenGateディレクトリのdirprm
サブディレクトリ以外の場所に格納する場合に必要です。完全修飾名を指定します。デフォルトの場所をお薦めします。 -
REPORT
path
は、このグループのプロセス・レポートをOracle GoldenGateディレクトリのdirrpt
サブディレクトリ以外の場所に格納する場合に必要です。完全修飾名を指定します。デフォルトの場所をお薦めします。
例13-9 オンラインReplicatグループの作成
この例では、finance
という名前のオンラインReplicatグループを作成し、c:\ggs\dirdat\rt
という証跡を指定します。このパラメータ・ファイルは、代替場所である\ggs\params
に格納され、レポート・ファイルはデフォルトの場所に格納されます。
ADD REPLICAT finance, EXTTRAIL c:\ggs\dirdat\rt, PARAMS \ggs\params
親トピック: オンラインReplicatグループの作成
オンライン・レプリケーション用のパラメータ・ファイルの作成
次の手順に従って、オンラインReplicatグループのパラメータ・ファイルを作成します。
-
ターゲット・システムのGGSCIで、次のコマンドを発行します。
EDIT PARAMS
name
説明:
name
は、ADD REPLICAT
コマンドで作成したReplicatグループの名前です。または、グループの作成時に代替の場所を定義した場合は、パラメータ・ファイルの完全修飾名です。 -
表13-2にリストされている順序でパラメータを入力します。パラメータ文ごとに新規行を開始します。
表13-2 オンライン変更レプリケーションのパラメータ
パラメータ | 説明 |
---|---|
REPLICAT
|
Replicatは、チェックポイント付きのオンライン・プロセスとして構成します。 |
{SOURCEDEFS
|
データ定義の解釈方法を指定します。 マルチバイト・キャラクタ・セットを使用するOracle Databaseでは、ソースのセマンティクス設定がバイトでターゲットの設定が文字の場合、(DEFGENで生成された定義ファイルとともに) |
[DEFERAPPLYINTERVAL
|
オプションです。Replicatがターゲット・システムにトランザクションを適用するまでに待機する時間を指定します。 |
[TARGETDB |
データベース接続情報を指定します。
|
|
コリジョン処理の指定。開始しているオンライン処理と同時に初期ロードを実行しており、ロード中にソース・データベースがアクティブな状態にとどまる場合にのみ使用します。 |
|
ソースOracleマルチテナント・コンテナ・データベースのデフォルト・コンテナを指定します。それらのデータベースに対して3つの部分からなる名前が必要とされる場合に、2つの部分からなる名前( |
MAP [ |
単一または複数のソース・オブジェクトと、単一または複数のターゲット・オブジェクトの関係を指定します。 ソース・オブジェクトに対して、オブジェクトの完全修飾名(複数オブジェクトの場合は完全修飾ワイルドカード表記)を指定します。Oracleマルチテナント・コンテナ・データベースの場合は、 ターゲット・オブジェクトに対しては、データベースのタイプに関係なく、名前の パラメータ・ファイル内のオブジェクト名指定のガイドラインは、Oracle GoldenGateの入力におけるオブジェクト名の指定を参照してください。 調整モードでは、 |
|
関連付けられた |
- 『Oracle GoldenGateリファレンス』のReplicatパラメータの概要に関する項にリストされているReplicatの適切なオプション・パラメータを入力します。
- ファイルを保存して閉じます。
注意:
Oracleに対して統合Replicatを使用する場合は、処理開始後のReplicatへの構成変更に関する重要情報を、「パラメータ変更との関係で見たReplicat処理の理解」で確認してください。
親トピック: オンライン変更同期の構成