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モードから選択できますが、Oracleでは、特定の機能に異なるタイプのReplicatが必要でないかぎり、並列非統合Replicatを使用することをお薦めします。パラレルReplicatは、OracleデータベースとOracle以外のデータベースの両方で使用できます。

次の表に、それぞれのReplicatでサポートされる機能を示します。

機能 パラレルReplicat 統合Replicat 調整Replicat クラシックReplicat

バッチ処理

はい

はい

はい

はい

バリア・トランザクション

はい

はい

はい

いいえ

依存関係の計算

はい

はい

いいえ

いいえ

自動並列化

ノート:

デフォルトでは、自動並列化は無効になっています。デフォルト設定では、4つのスレッドのみが使用されます。MIN_PARALLELISMおよびMAX_PARALLELISMを使用するようにReplicatを変更すると、自動並列化が使用されます。

はい

はい

いいえ

いいえ

DMLハンドラ

あり。統合モード

はい

いいえ

いいえ

プロシージャ・レプリケーション

あり。統合パラレルReplicat (iPR)に使用されます

はい

いいえ

いいえ

自動CDR

あり。iPRによってのみ使用されます

はい

いいえ

いいえ

依存関係を認識したトランザクション分割

はい

いいえ

いいえ

いいえ

RACノード間の処理

はい

いいえ

はい

いいえ

ALLOWDUPTARGETMAP

ALLOWDUPTARGETMAP | NOALLOWDUPTARGETMAPを参照してください

なし。iPRを備えたOracle Database

なし。Oracle Database

はい

はい

チェックポイント保持の制御

TRANLOGOPTIONSパラメータのCHECKPOINTRETENTIONTIMEオプションでは、Replicatがチェックポイントを自動的にパージするまで保持する日数を制御します。部分的な日数は、10進値を使用して指定されます。たとえば、8.25は8日と6時間を指定します。デフォルトは7日です。

双方向レプリケーションでのReplicatトランザクションの除外

双方向構成では、トランザクションをマークするようにReplicatを構成する必要があり、また、Replicatトランザクションを除外するようにExtractを構成して、ソースに伝播されないようにする必要があります。

これは、次の2つの方法で実装できます。

方法1

OracleからOracleの実装にのみ有効です。

Replicatは、統合モードと非統合モードのどちらであってもかまいません。次のパラメータを使用します。

  • Replicatのパラメータ・ファイルで、DBOPTIONSSETTAGオプションとともに使用します。インバウンド・サーバーは、指定した値のタグ(これらのトランザクションを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用のその他のパラメータ・オプション

これらのパラメータを設定するには、INTEGRATEDPARAMSオプションを指定してDBOPTIONSパラメータを使用するか、INTEGRATEDPARAMSオプションを指定してSEND REPLICATコマンドを発行して動的に設定します。

デフォルトのReplicat構成で十分です。しかし、必要な場合は、特定の要件をサポートする次のインバウンド・サーバー・パラメータを設定できます。

ノート:

これらのパラメータの詳細情報と使用方法は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』の「DBMS_APPLY_ADM」を参照してください。

パラメータの詳細は、「DBOPTIONS」を参照してください。

  • COMMIT_SERIALIZATION: 適用されたトランザクションがコミットされる順序を制御し、DEPENDENT_TRANSACTIONSFULLの2つのモードがあります。Oracle GoldenGateのデフォルト・モードはDEPENDENT_TRANSACTIONSです(依存するトランザクションは、ソース・コミット順では必ずしも適用されませんが、正しい順序で適用されます)。FULLモードの場合、トランザクションの適用時にソース・コミット順序が適用されます。

  • BATCHSQL_MODE: 保留中の依存性を含む、バッチ実行スケジュール・モードを制御します。保留中の依存性は、すでにスケジュールされたが、完全に実行されていない別のトランザクションの依存性です。デフォルトはDEPENDENTです。次の3つのモードを使用できます。

    DEPENDENT

    初期開始なしの依存性対応スケジュール。バッチ処理されたトランザクションは、保留中の依存性がない場合にスケジュールされます。

    DEPENDENT_EAGER

    初期開始ありの依存性対応バッチ処理。バッチ処理されたトランザクションは、保留中の依存性に関係なくスケジュールされます。

    SEQUENTIAL

    順次バッチ処理。トランザクションは、元のコミット順序に基づいてトランザクションを順にグループ化することでバッチ処理されます。

  • 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_PARALLELISMPARALLELISMより大きい場合にのみ有効です。PARALLELISMMAX_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 X PARALLELISM_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です(はい)。

ターゲット表の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変更通知の使用を参照してください。