9 Replicat
この項では、Replicat、Replicatのタイプ、Replicatを追加するステップおよびReplicatに関連するその他のタスクの詳細を示します。
トピック:
Replicatについて
Replicatは、ターゲット・システムにデータを届けるプロセスです。ターゲット・データベースの証跡ファイルを読み取り、DML操作またはDDL操作を再構成して、ターゲット・データベースに適用します。
Replicatプロセスは、SQLを使用してSQL文を1回コンパイルした後、異なるバインド変数を使用して何度も実行します。レプリケートした操作をターゲット・データベースに適用する前に一定時間待機するようにReplicatプロセスを構成できます。遅延が推奨される場合として、たとえば、間違ったSQLの伝播を防ぐ場合、異なるタイムゾーンにわたるデータの受信を制御する場合、または他の計画済イベントの発生に備えて時間を考慮する場合があげられます。
次の2つのOracle GoldenGateの一般的なユースケースでは、Replicatプロセスの機能は次のとおりです。
- 初期ロード: 初期ロード用にOracle GoldenGateを設定すると、Replicatプロセスは静的データ・コピーをターゲット・オブジェクトに適用するか、高速なバルク・ロード・ユーティリティにデータをルーティングします。
- 変更同期: ターゲット・データベースとソース・データベースとの同期を維持するようにOracle GoldenGateを設定すると、Replicatプロセスは、データベース・タイプに応じてネイティブ・データベース・インタフェースまたはODBCを使用して、ソース操作をターゲット・オブジェクトに適用します。
複数のReplicatプロセスを1つ以上のExtractプロセスで構成して、スループットを向上できます。データ整合性を維持するため、プロセスのセットごとに異なるオブジェクトを処理します。Replicatプロセスを区別するには、それぞれにグループ名を付けます
親トピック: Replicat
デプロイメントのReplicatタイプの選択
Replicatプロセスは、ターゲット・データベースに証跡データを適用します。様々なタイプのReplicatモードから選択できますが、Oracleでは、特定の機能に異なるタイプのReplicatが必要でないかぎり、並列非統合Replicatを使用することをお薦めします。パラレルReplicatは、OracleデータベースとOracle以外のデータベースの両方で使用できます。
次の表に、それぞれのReplicatでサポートされる機能を示します。
機能 | パラレルReplicat | 統合Replicat | 調整Replicat | クラシックReplicat |
---|---|---|---|---|
バッチ処理 |
はい |
はい |
はい |
はい |
バリア・トランザクション |
はい |
はい |
はい |
いいえ |
依存関係の計算 |
はい |
はい |
いいえ |
いいえ |
自動並列化 ノート: デフォルトでは、自動並列化は無効になっています。デフォルト設定では、4つのスレッドのみが使用されます。 |
はい |
はい |
いいえ |
いいえ |
DMLハンドラ |
あり。統合モード |
はい |
いいえ |
いいえ |
プロシージャ・レプリケーション |
あり。統合パラレルReplicat (iPR)に使用されます |
はい |
いいえ |
いいえ |
自動CDR |
あり。iPRによってのみ使用されます |
はい |
いいえ |
いいえ |
依存関係を認識したトランザクション分割 |
はい |
いいえ |
いいえ |
いいえ |
RACノード間の処理 |
はい |
いいえ |
はい |
いいえ |
|
なし。iPRを備えたOracle Database |
なし。Oracle Database |
はい |
はい |
親トピック: Replicat
チェックポイント保持の制御
TRANLOGOPTIONS
パラメータのCHECKPOINTRETENTIONTIME
オプションでは、Replicatがチェックポイントを自動的にパージするまで保持する日数を制御します。部分的な日数は、10進値を使用して指定されます。たとえば、8.25は8日と6時間を指定します。デフォルトは7日です。
親トピック: Replicat
双方向レプリケーションでのReplicatトランザクションの除外
双方向構成では、トランザクションをマークするようにReplicatを構成する必要があり、また、Replicatトランザクションを除外するようにExtractを構成して、ソースに伝播されないようにする必要があります。
これは、次の2つの方法で実装できます。
方法1
OracleからOracleの実装にのみ有効です。
Replicatは、統合モードと非統合モードのどちらであってもかまいません。次のパラメータを使用します。
- Replicatのパラメータ・ファイルで、
DBOPTIONS
をSETTAG
オプションとともに使用します。インバウンド・サーバーは、指定した値のタグ(これらのトランザクションをREDOストリーム内で識別)をそのReplicatのトランザクションに付けます。SETTAG
のデフォルト値は00です。 - Extractのパラメータ・ファイルで、
TRANLOGOPTIONS
パラメータをEXCLUDETAG
オプションとともに使用します。Extractに関連付けられたログマイニング・サーバーは、SETTAG
値のタグが付いたREDOを除外します。複数のEXCLUDETAG
文を使用して、必要に応じて異なるタグ値を除外できます。
方法2
あらゆる実装(Oracleまたは異種データベース構成)に有効です。EXCLUDEUSER
またはEXCLUDEUSERID
オプションを指定してExtractのTRANLOGOPTIONS
パラメータを使用し、ユーザー名またはIDに基づいてReplicatのDDLおよびDMLトランザクションを無視します。複数のEXCLUDEUSER
文を使用できます。指定されたユーザーは、GETREPLICATES
またはIGNOREREPLICATES
パラメータのルールの対象になります。
親トピック: Replicat
統合Replicat用のその他のパラメータ・オプション
これらのパラメータを設定するには、INTEGRATEDPARAMS
オプションを指定してDBOPTIONS
パラメータを使用するか、INTEGRATEDPARAMS
オプションを指定してSEND REPLICAT
コマンドを発行して動的に設定します。
デフォルトのReplicat構成で十分です。しかし、必要な場合は、特定の要件をサポートする次のインバウンド・サーバー・パラメータを設定できます。
ノート:
これらのパラメータの詳細情報と使用方法は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』の「DBMS_APPLY_ADM
」を参照してください。
パラメータの詳細は、「DBOPTIONS」
を参照してください。
-
COMMIT_SERIALIZATION
: 適用されたトランザクションがコミットされる順序を制御し、DEPENDENT_TRANSACTIONS
とFULL
の2つのモードがあります。Oracle GoldenGateのデフォルト・モードはDEPENDENT_TRANSACTIONS
です(依存するトランザクションは、ソース・コミット順では必ずしも適用されませんが、正しい順序で適用されます)。FULL
モードの場合、トランザクションの適用時にソース・コミット順序が適用されます。 -
BATCHSQL_MODE
: 保留中の依存性を含む、バッチ実行スケジュール・モードを制御します。保留中の依存性は、すでにスケジュールされたが、完全に実行されていない別のトランザクションの依存性です。デフォルトはDEPENDENT
です。次の3つのモードを使用できます。 -
DISABLE_ON_ERROR
: 未解決エラー時に適用サーバーが無効化されるか続行されるかを決定します。Oracle GoldenGateのデフォルトはN
(エラー時も続行)になります。ただし、エラーが発生した場合に適用サーバーを無効化する必要がある場合は、オプションを「Y」に設定できます。 -
EAGER_SIZE
: コミット・レコードを受信する前にOracle GoldenGateがデータの適用を開始するまでの、トランザクションのサイズ(LCRの数)のしきい値を設定します。Oracle GoldenGateのデフォルトは15100
です。 -
ENABLE_XSTREAM_TABLE_STATS
: 適用されたトランザクションの統計をV$GOLDENGATE_TABLE_STATS
ビューに記録するか、まったく収集しないかを制御します。Oracle GoldenGateのデフォルトはY
です(統計を収集)。 -
MAX_PARALLELISM
: 負荷が重い場合に使用可能な適用サーバーの数を制限します。ワークロードが正常に戻ったら、この数は再び引き下げられます。適用サーバーの数の自動調整は、PARALLELISM
が1より大きく、MAX_PARALLELISM
がPARALLELISM
より大きい場合にのみ有効です。PARALLELISM
とMAX_PARALLELISM
が等しい場合、適用サーバーの数はワークロードで一定のままになります。Oracle GoldenGateのデフォルトは50です。 -
MAX_SGA_SIZE
: インバウンド・サーバーで使用される共有メモリーの量を制御します。共有メモリーはSGAのStreamsプールから取得されます。Oracle GoldenGateのデフォルトはINFINITE
です。 -
MESSAGE_TRACKING_FREQUENCY
: 適用プロセスにより、LCRが高レベルLCRトレースとマークされる頻度を制御します。デフォルト値は2000000
で、2ミリ秒ごとにLCRがトレースされます。値をゼロ(0
)にすると、LCRトレースが無効になります。 -
PARALLELISM
: 通常の状況下で使用できる適用サーバーの最小数を設定します。PARALLELISM
を1に設定すると、並列度の適用が無効になり、トランザクションは単一の適用サーバー・プロセスで適用されます。Oracle GoldenGateのデフォルトは4
です。Oracle Standard Editionの場合は、1
に設定する必要があります。 -
PARALLELISM_INTERVAL
: 現在のワークロード・アクティビティを計算する間隔を秒単位で設定します。Replicatは5 XPARALLELISM_INTERVAL
秒ごとに、平均スループットを計算します。それぞれの計算後に、適用コンポーネントは適用サーバーの数を増減して、スループットを改善できます。スループットが改善された場合、適用コンポーネントはその新しい適用サーバー数を維持します。並列度間隔が使用されるのは、PARALLELISM
が1より大きい値に設定され、MAX_PARALLELISM
値がPARALLELISM
値よりも大きい値に設定されている場合のみです。デフォルトは5秒です。 -
PRESERVE_ENCRYPTION
: 透過的データ暗号化を使用して暗号化された列の暗号化を保持するかどうかを制御します。Oracle GoldenGateのデフォルトはN
です(暗号化形式のデータを適用しない)。 -
TRACE_LEVEL
: Replicatインバウンド・サーバーのトレース・レベルを制御します。Oracleサポートの指示を受ける場合のみ使用します。Oracle GoldenGateのデフォルトは0
です(トレースなし)。 -
WRITE_ALERT_LOG
: Replicatインバウンド・サーバーがOracleアラート・ログにメッセージを書き込むかどうかを制御します。Oracle GoldenGateのデフォルトはY
です(はい)。
親トピック: Replicat
ターゲット表のDDL通知
Oracle GoldenGate Replicatは、DMLレプリケーション中にターゲット表のメタデータをキャッシュします。バンド外DDLを変更すると、キャッシュされたメタデータは不要になります。たとえば、ソースをアップグレードする前にアプリケーション・パッチがターゲット・データベースに適用される場合です。
Oracle GoldenGate 23c以降、Replicatは効率的な表DDL変更通知を使用して、ターゲット表のメタデータの変更を自動的に検出します。Oracle GoldenGateは、メタデータがキャッシュされるときに表に対するDDL通知を登録します。ターゲット表に対してDDLが実行されるたびに、Replicatに通知され、キャッシュされたメタデータが無効化されます。Replicatは、次回ターゲット表にDMLを適用するときに、ターゲット表のメタデータをリロードします。この機能は、Oracle DatabaseのすべてのタイプのReplicatに適用されます。パラメータのオプションおよび構文について学習するには、『Oracle GoldenGateリファレンス』のTARGETDDLNOTIFY
を参照してください。
効率的な表変更DDL通知の詳細は、効率的な表のDDL変更通知の使用を参照してください。
親トピック: Replicat