複数のプロセス・グループの使用
データベースから効率的に取得するために必要なExtractグループは、通常1つのみです。ただし、REDO (トランザクション)の値、またはデータと操作のタイプによっては、1つ以上のExtractグループを構成に追加する必要がある場合があります。
同様に、Replicatを調整モードで使用する場合、ターゲット・データベースにデータを適用するために必要なReplicatグループは、通常1つのみです。ただし、Replicatを調整モードで使用する場合でも、複数のReplicatグループが必要な場合があります。Replicatをクラシック・モードで使用し、アプリケーションで大量のトランザクションが生成される場合、パラレルReplicatグループを使用する必要がある場合があります。
各Oracle GoldenGateコンポーネント(Extract、証跡、DISTPATH、Replicat)は独立したモジュールであるため、必要に応じた組合せが可能です。複数の証跡および並列のExtractおよびReplicatプロセスを使用すると、大量のトランザクションの処理、パフォーマンスの向上、ボトルネックの解消、レイテンシの削減または特定のデータ処理の分離を実現することができます。
次の図は、処理速度を高め、ネットワーク帯域幅の問題を克服するようOracle GoldenGateを構成するいくつかの方法を示しています。

-
A: パラレルExtractによってロードが分割されます。たとえば、スキーマごとに、あるいはフェッチを生成する表を分離する場合などです。
-
B: ローカル証跡があるExtractは、フィルタリング、変換およびネットワーク・フォルト・トレランスに使用できます。
-
C: 複数のDISTPATHSを使用すると、ネットワークのプロセス当たりの帯域幅制限が回避され、TCP/IPスループットが向上します。それらの間で、
TABLEパラメータ文を分割します。 -
D: パラレルReplicatによってデータベースへのスループットが増加します。どの証跡も1つ以上のReplicatで読み取ることができます。それらの間で、
MAP文を分割します。
複数のプロセス・グループの使用に関する考慮事項
複数の処理グループを構成する前に、次の考慮事項に目を通し、望んだ結果が得られ、データ整合性が保てる構成であることを確認します。
データ整合性の維持
すべてのワークロードが、複数のグループにパーティション化されても元のトランザクション原子性を維持できるというわけではありません。1つのグループのオブジェクトが他のいずれかのグループのオブジェクトに対して、トランザクションまたはそれ以外の依存関係を持つことがあるかどうかを判断する必要があります。たとえば、ワークロードが主キーを定期的に更新する表は、この方法で簡単にパーティション化することはできません。このモードでは、DDLレプリケーション(データベースに対してサポートされている場合)も、アクションが特定のレコードに基づいているような一部のSQLEXECまたはEVENTACTIONS機能の使用も、有効ではありません。
表に外部キー依存性や主キーの更新がない場合、複数プロセスを使用できます。関連するDMLを同じプロセス・ストリームに保持し、データ整合性を保ちます。
グループ数
システムで実行できる同時ExtractおよびReplicatプロセス・グループの数は、使用可能なシステム・メモリー・サイズに応じて異なります。ExtractおよびクラシックReplicatの各プロセスでは、約25から55MBのメモリーが必要であり、トランザクションのサイズと同時トランザクション数によってはそれ以上のメモリーが必要です。Oracle GoldenGateコマンド・インタフェースでは、Oracle GoldenGateのインスタンス当たり、最大で同時に5,000のExtractおよびReplicatグループ(合計)がサポートされます。サポートされているレベルで、INFO、STATUSなどのコマンドですべてのグループを完全に制御および表示できます。
サポートされているレベルを超えると、グループ情報は表示されず、エラーが発生する可能性があります。Oracle GoldenGateでは、環境を効果的に管理するために、ExtractおよびReplicatグループの数(合計)を100以下程度の扱いやすいレベルを保つようにお薦めします。グループの最大数は、デフォルト値が1000であるMAXGROUPSパラメータで制御されます。
Windows Server環境では、実行可能なプロセス・グループの数は、'非対話型' Windowsデスクトップ・ヒープ・メモリーの設定と密接に関係します。Windowsデスクトップ・ヒープのデフォルト設定は、非常に少数のプロセス・グループの実行には十分といえますが、プロセス・グループが大量(おおよそ60以上)になったときには、このMicrosoftからの情報(Windowsデスクトップ・ヒープ・メモリー)に基づいてレジストリのSharedSectionフィールドの'非対話型'の値を調整するか、Oracle GoldenGateホームの数を増やして、それらのホーム全体で必要なプロセス・グループの合計数を分散する必要があります。
ノート:
Windowsデスクトップ・ヒープ・メモリーの変更の詳細は、Oracle Knowledge Baseドキュメント(Doc ID 2056225.1)を確認してください。メモリー
システムは、今後実行する各Oracle GoldenGate ExtractおよびReplicatプロセスのために、十分なスワップ領域を確保している必要があります。必要なスワップ領域を特定するには、次の手順を実行します。
- 1つのExtractまたはReplicatを起動します。
- 管理クライアントを実行します。
- レポート・ファイルを表示し、
PROCESS VM AVAIL FROM OS (min)行を探します。 - 必要に応じて、値を次の整数(GB)に切り上げます。たとえば、1.76GBの場合は2GBに切り上げます。
- その値に、実行されるExtractおよびReplicatプロセスの数を掛けます。その結果が、必要となる可能性のあるスワップ領域の最大量です。
メモリーの管理方法の詳細は、Oracle GoldenGateパラメータおよび機能リファレンスのCACHEMGRパラメータを参照してください。
処理が集中している表の分離
複数のプロセス・グループを使用して、通常の処理を妨げ、ターゲットでレイテンシを発生させるような表をサポートできます。たとえば:
-
列のデータ型またはパラメータの指定によって、あるいはSQLプロシージャを実行するために、Extractでデータベースからフェッチを行う必要がある場合があります。データベースからデータをフェッチする必要がある場合、Extractのパフォーマンスに影響します。Extractのパラメータ・ファイルに
STATOPTIONS REPORTFETCHパラメータが含まれている場合、STATS EXTRACTコマンドでフェッチ統計を取得できます。トランザクションの整合性が保てるのであれば、それらの表を独自のExtractグループに分離できます。 -
クラシック・モードでは、Replicatプロセスがパフォーマンス・ボトルネックの原因となることがあります。それは、Replicatが単一スレッドのプロセスで、通常のSQLを使用して適用する操作が一度に1つであるためです。
BATCHSQLを有効にしても(Oracle GoldenGateパラメータおよび機能リファレンスを参照)、Replicatで大規模トランザクションまたは長時間実行トランザクション、大量のデータ、多数の変更列およびLOBデータが含まれる表の処理に時間がかかる場合があります。その場合、トランザクションの整合性が保てるのであれば、それらの表を独自のReplicatグループに分離できます。