17 Oracle GoldenGateのパフォーマンスのチューニング
内容は次のとおりです。
- 複数のプロセス・グループの使用
- 行範囲によるプロセス・グループ間での表の分割
- ネットワークを効率的に使用するためのOracle GoldenGateの構成
- ディスクI/Oボトルネックの除外
- 仮想メモリーとページングの管理
- データのフィルタリングおよび変換の最適化
- Replicatトランザクションのチューニング
- ヘルスチェック・スクリプトを使用した監視およびトラブルシューティング
Oracle GoldenGateのヘルスチェック・スクリプトでは、Oracle Databasesのデータベース・サイト情報が提供され、監視およびトラブルシューティングを実行できます。
17.1 複数のプロセス・グループの使用
データベースから効率的に取得するために必要なExtractグループは、通常1つのみです。ただし、REDO (トランザクション)の値、またはデータと操作のタイプによっては、1つ以上のExtractグループを構成に追加する必要がある場合があります。
同様に、Replicatを調整モードで使用する場合、ターゲット・データベースにデータを適用するために必要なReplicatグループは、通常1つのみです。(詳細は、「調整Replicatモードについて」を参照してください。)ただし、Replicatを調整モードで使用する場合でも、複数のReplicatグループが必要な場合があります。Replicatをクラシック・モードで使用し、アプリケーションで大量のトランザクションが生成される場合、パラレルReplicatグループを使用する必要がある場合があります。
各Oracle GoldenGateコンポーネント(Extract、データ・ポンプ、証跡、Replicat)は独立したモジュールのため、必要に応じた組合せが可能です。複数の証跡とパラレルのExtractおよびReplicatプロセスを使用すると(データ・ポンプは使用しても使用しなくてもよい)、大量のトランザクションの処理、パフォーマンスの向上、ボトルネックの解消、レイテンシの削減または特定のデータの処理の分離を行えます。
図17-1に、処理速度を高め、ネットワーク帯域幅の問題を解決するようOracle GoldenGateを構成する方法をいくつか示します。
図17-1 パフォーマンスを向上させるロードバランシング構成
-
A: パラレルExtractによってロードが分割されます。たとえば、スキーマごとに、あるいはフェッチを生成する表を分離する場合などです。
-
B: ローカル証跡があるデータ・ポンプを、フィルタリング、変換およびネットワーク・フォルト・トレランスに使用できます。
-
C: TCP/IPスループットを有効にするために、複数のデータ・ポンプがネットワークのプロセス当たりのバンド幅制限を回避します。それらの間で、TABLEパラメータ文を分割します。
-
D: パラレルReplicatによってデータベースへのスループットが増加します。どの証跡も1つ以上のReplicatで読み取ることができます。それらの間で、MAP文を分割します。
17.1.1 複数のプロセス・グループの使用に関する考慮事項
複数の処理グループを構成する前に、次の考慮事項に目を通し、望んだ結果が得られ、データ整合性が保てる構成であることを確認します。
17.1.1.1 データ整合性の維持
すべてのワークロードが、複数のグループにパーティション化されても元のトランザクション原子性を維持できるというわけではありません。1つのグループのオブジェクトが他のいずれかのグループのオブジェクトに対して、トランザクションまたはそれ以外の依存関係を持つことがあるかどうかを判断する必要があります。たとえば、ワークロードが主キーを定期的に更新する表は、この方法で簡単にパーティション化することはできません。このモードでは、DDLレプリケーション(データベースに対してサポートされている場合)も、アクションが特定のレコードに基づいているような一部のSQLEXEC
またはEVENTACTIONS
機能の使用も、有効ではありません。
表に外部キー依存性や主キーの更新がない場合、複数プロセスを使用できます。関連するDMLを同じプロセス・ストリームに保持し、データ整合性を保ちます。
親トピック: 複数のプロセス・グループの使用に関する考慮事項
17.1.1.2 グループの数
システムで実行できる同時ExtractおよびReplicatプロセス・グループの数は、使用可能なシステム・メモリー・サイズに応じて異なります。Classic ExtractおよびReplicatの各プロセスには、約25から55MBのメモリーが必要であり、トランザクションのサイズと同時トランザクション数によってはそれ以上のメモリーが必要です。Oracle GoldenGate GGSCIコマンド・インタフェースでは、Oracle GoldenGate Managerのインスタンス当たり、最大で同時に5,000のExtractおよびReplicatグループ(合計)がサポートされます。サポートされているレベルで、INFO
、STATUS
などのGGSCIコマンドですべてのグループを完全に制御および表示できます。サポートされているレベルを超えると、グループ情報は表示されず、エラーが発生する可能性があります。Oracle GoldenGateでは、環境を効果的に管理するために、ExtractおよびReplicatグループの数(合計)を100以下程度の扱いやすいレベルを保つようにお薦めします。グループの最大数は、MAXGROUPS
パラメータで制御されます。デフォルトは1000です。
Windows Server環境では、実行可能なプロセス・グループの数は、'非対話型' Windowsデスクトップ・ヒープ・メモリーの設定と密接に関係します。Windowsデスクトップ・ヒープのデフォルト設定は、非常に少数のプロセス・グループの実行には十分といえますが、プロセス・グループが大量(おおよそ60以上)になったときには、このMicrosoftからの情報(Windowsデスクトップ・ヒープ・メモリー)に基づいてレジストリのSharedSectionフィールドの'非対話型'の値を調整するか、Oracle GoldenGateホームの数を増やして、それらのホーム全体で必要なプロセス・グループの合計数を分散する必要があります。
ノート:
Windowsデスクトップ・ヒープ・メモリーの変更の詳細は、Oracle Knowledge Baseドキュメント(Doc ID 2056225.1)を確認してください。親トピック: 複数のプロセス・グループの使用に関する考慮事項
17.1.1.3 メモリー
システムは、今後実行する各Oracle GoldenGate ExtractおよびReplicatプロセスのために、十分なスワップ領域を確保している必要があります。必要なスワップ領域を特定するには、次の手順を実行します。
- 1つのExtractまたはReplicatを起動します。
- GGSCIを実行します。
- レポート・ファイルを表示し、
PROCESS VM AVAIL FROM OS (min)
行を探します。 - 必要に応じて、値を次の整数(GB)に切り上げます。たとえば、1.76GBの場合は2GBに切り上げます。
- その値に、実行されるExtractおよびReplicatプロセスの数を掛けます。その結果が、必要となる可能性のあるスワップ領域の最大量です。
メモリーの管理方法の詳細は、『Oracle GoldenGateリファレンス』のCACHEMGR
パラメータに関する項を参照してください。
親トピック: 複数のプロセス・グループの使用に関する考慮事項
17.1.1.4 処理が集中している表の分離
複数のプロセス・グループを使用して、通常の処理を妨げ、ターゲットでレイテンシを発生させるような表をサポートできます。たとえば:
-
列のデータ型またはパラメータの指定によって、あるいはSQLプロシージャを実行するために、Extractでデータベースからフェッチを行う必要がある場合があります。データベースからデータをフェッチする必要がある場合、Extractのパフォーマンスに影響します。Extractのパラメータ・ファイルに
STATOPTIONS REPORTFETCH
パラメータが含まれている場合、STATS EXTRACT
コマンドでフェッチ統計を取得できます。トランザクションの整合性が保てるのであれば、それらの表を独自のExtractグループに分離できます。 -
クラシック・モードでは、Replicatプロセスがパフォーマンス・ボトルネックの原因となることがあります。それは、Replicatが単一スレッドのプロセスで、通常のSQLを使用して適用する操作が一度に1つであるためです。
BATCHSQL
を有効にしても(『Oracle GoldenGateリファレンス』を参照)、Replicatで大規模または長時間実行トランザクション、大量で多数の変更列およびLOBデータが含まれる表の処理に時間がかかる場合があります。その場合、トランザクションの整合性が保てるのであれば、それらの表を独自のReplicatグループに分離できます。
親トピック: 複数のプロセス・グループの使用に関する考慮事項
17.1.2 ターゲット・システムでのパラレルReplicatグループの使用
この項には、1つのExtractグループを複数のReplicatグループと組み合せる構成を作成する手順を示します。複数のReplicatプロセスで1つの証跡を読み取ることはできます(ディスクの競合を避けるため、3個以下)が、各Replicatを独自の証跡および対応するプロセスと対にすることをお薦めします。
変更同期の構成手順の詳細は、オンライン変更同期の構成を参照してください。
内容は次のとおりです。
17.1.2.2 Replicatグループの作成
- ターゲットで、Replicatチェックポイント表を作成します。手順については、「チェックポイント表の作成」を参照してくださいすべてのReplicatグループで同じチェックポイント表を使用できます。
- ターゲットで
ADD REPLICAT
コマンドを使用して、作成した各証跡に対するReplicatグループを作成します。ADD REPLICATのEXTTRAIL
引数を使用して、Replicatグループを適切な証跡にリンクします。 - ターゲットで
EDIT PARAMS
コマンドを使用して、データベース環境に必要なパラメータを含むReplicatパラメータ・ファイルを各Replicatグループ用に作成します。特定のReplicatグループに対するすべてのMAP
文では、そのグループにリンクされた証跡に含まれる同じオブジェクトを指定する必要があります。 - ターゲット・システムのManagerのパラメータ・ファイルで、
PURGEOLDEXTRACTS
パラメータを使用して、証跡からのファイルの消去を制御します。
17.1.3 複数のExtractグループと複数のReplicatグループの使用
複数のExtractグループは独自の証跡に書き込みます。各証跡は、専用のReplicatグループによって読み取られます。
変更同期の構成手順の詳細は、オンライン変更同期の構成を参照してください。
17.1.3.1 Extractグループの作成
ノート:
この構成には、データ・ポンプが含まれます。
- ソースで
ADD EXTRACT
コマンドを使用して、プライマリExtractグループを作成します。 - ソースで
ADD EXTTRAIL
コマンドを使用して、作成した各Extractグループに対するローカル証跡を指定します。 - ソースで、作成した各ローカル証跡を読み取るデータ・ポンプExtractグループを作成します。
- ソースで
ADD RMTTRAIL
コマンドを使用して、作成した各データ・ポンプに対するリモート証跡を指定します。 - ソースで
EDIT PARAMS
コマンドを使用して、各プライマリExtractグループおよび各データ・ポンプExtractグループに対するExtractパラメータ・ファイルを作成します。
17.1.3.2 Replicatグループの作成
- ターゲットで、Replicatチェックポイント表を作成します。手順については、「チェックポイント表の作成」を参照してくださいすべてのReplicatグループで同じチェックポイント表を使用できます。
- ターゲットで
ADD REPLICAT
コマンドを使用して、各証跡に対するReplicatグループを作成します。ADD REPLICAT
のEXTTRAIL
引数を使用して、グループを証跡にリンクします。 - ターゲットで
EDIT PARAMS
コマンドを使用して、各Replicatグループに対するReplicatパラメータ・ファイルを作成します。特定のReplicatグループに対するすべてのMAP
文では、そのグループにリンクされた証跡に含まれる同じオブジェクトを指定する必要があります。 - ソース・システムおよびターゲット・システムのManagerのパラメータ・ファイルで、
PURGEOLDEXTRACTS
パラメータを使用して、証跡からのファイルの消去を制御します。
17.2 行範囲によるプロセス・グループ間での表の分割
@RANGE
関数を使用して、表の行を複数のOracle GoldenGateプロセスで分割できます。これを使用して大規模でアクセスの多い表のスループットを向上でき、データをセットに分割して異なる宛先に分散させることもできます。各範囲をTABLE
またはMAP
文のFILTER
句に指定します。
@RANGE
は安全でスケーラブルです。同じ行は同じプロセス・グループによって必ず処理されることが保証されるため、データ整合性が保たれます。
Replicatを使用するよりも、プライマリExtractまたはデータ・ポンプを使用して範囲を計算する方が効率的な場合があります。範囲を計算するには、Replicatが証跡全体をフィルタし、範囲の指定を満たすデータを見つける必要があります。ただし、ビジネス・ケースに応じて、このフィルタリングをどこで行うかを判断します。
17.3 ネットワークを効率的に使用するためのOracle GoldenGateの構成
ネットワーク間のデータの転送が非効率であると、Extractプロセスの遅延やターゲットでのレイテンシが生じます。これを修正しないと、最終的にはプロセスの障害が生じることがあります。
最初に新しいOracle GoldenGate構成を開始する際には、次のことを行います。
-
ExtractおよびReplicatで許容可能とみなされる遅延およびスループット・ボリュームのベンチマークを確立します。それぞれが実行するタスクの種類により、通常、ExtractはReplicatより高速であることに注意してください。時間の経過とともに、この違いが通常であるか、チューニングやトラブルシューティングが必要であるかがわかるようになります。
-
ベンチマークと比較して、定期的なスケジュールを設定して、遅延およびボリュームについてこれらのプロセスを監視します。ときどき急に発生する遅延ではなく、一定または増加中の遅延を探します。継続的な過度の遅延は、Oracle GoldenGate構成のいずれかの場所でボトルネックがあることを示します。これは、Oracle GoldenGateでチューニングが必要であること、またはエラー状態が存在することを示す重大な最初の指標です。
ボリューム統計を表示するには、STATS EXTRACT
またはSTATS REPLICAT
コマンドを使用します。遅延統計を表示するには、LAG EXTRACT
またはLAG REPLICAT
コマンドを使用します。
内容は次のとおりです。
17.3.1 Oracle GoldenGateに影響するネットワーク・ボトルネックの検出
Oracle GoldenGateのスループットに影響するネットワーク・ボトルネックを検出するには、次のステップに従います。
Replicatのステータスが遅延モードまたは証跡ファイルの最後であり、次のいずれかがtrueである場合、ネットワーク・ボトルネックが存在します。
-
プライマリExtractのみを使用していて、その書込みチェックポイントが増加していないか、増加が非常に遅い場合。このExtractプロセスはネットワーク全体のデータを送信する役割を持つため、最終的に、抽出されたデータのバックログを格納するメモリーを使い果して異常終了します。
-
データ・ポンプを使用していて、その書込みチェックポイントが増加していないが、プライマリExtractの書込みチェックポイントは増加している場合。この場合、プライマリExtractはローカル証跡に書き込むことができますが、データ・ポンプはリモート証跡に書き込むことができません。抽出されたデータのバックログを格納するメモリーを使い果すと、データ・ポンプは異常終了します。プライマリExtractは、証跡順序の最後のファイルに到達するまで実行され、チェックポイントを作成できなくなるため異常終了します。
ノート:
ネットワークが停止している場合でも、Replicatは、証跡の残りのデータのすべてをターゲットに適用するまで、通常の方法で処理を行います。最終的に、証跡ファイルの最後に到達したことが報告されます。
17.3.2 データ・ポンプの使用による帯域幅の制限の回避
並列のデータ・ポンプを使用すると、ネットワーク構成のプロセスごとに課せられている帯域幅の制限を回避できます。並列のデータ・ポンプを使用して、同じターゲット・システムや別のターゲット・システムにデータを送信できます。また、データ・ポンプはプライマリExtractからTCP/IPの役割を除去し、そのローカル証跡によりフォルト・トレランスが提供されます。
17.3.3 TCP/IPパケット・サイズの増加
RMTHOST
パラメータのTCPBUFSIZE
オプションを使用して、Extractが保持するTCPソケット・バッファのサイズを制御します。バッファ・サイズを増やすと、ターゲット・システムにより大きなパケットを送信できます。詳細は、『Oracle GoldenGateリファレンス』を参照してください。
ネットワークに最適なバッファ・サイズを決定するためのガイドラインとして、次のステップを使用します。
Windows以外のシステムの最大ソケット・バッファ・サイズは、通常デフォルトで制限されています。Oracle GoldenGateがTCPBUFSIZE
で構成するバッファ・サイズを増やすことができるように、システム管理者にソースおよびターゲット・システムのデフォルト値を増やすように依頼してください。
17.4 ディスクI/Oボトルネックの除外
I/Oアクティビティによって、ExtractとReplicatの両方にボトルネックが発生することがあります。
-
標準Extractでは、証跡へのディスク書込みおよびデータソースからのディスク読取りが生成されます。
-
データ・ポンプおよびReplicatでは、ローカル証跡からのディスク読取りが生成されます。
-
各プロセスは、定期的なスケジュールで、リカバリ・チェックポイントをそのチェックポイント・ファイルに書き込みます。
17.4.1 システム構成内のI/Oパフォーマンスの向上
証跡ファイルを含むディスク・サブシステムでI/O待機が発生している場合、実行可能な最速のディスク・コントローラにその証跡を配置します。
RAID構成を確認します。Oracle GoldenGateはデータを順次書き込むため、I/Oの速度が低下しこれらのタイプのファイルには不要なチェックサムを使用するRAID 5よりも、RAID 0+1 (ストライピングおよびミラーリング)をお薦めします。
親トピック: ディスクI/Oボトルネックの除外
17.4.2 Oracle GoldenGate構成内のI/Oパフォーマンスの向上
Oracle GoldenGate内で構成の変更を行うことによって、I/Oパフォーマンスを向上させることができます。次のパラメータの値を増加してみてください。
-
CHECKPOINTSECS
パラメータでは、ExtractおよびReplicatがルーチンのチェックポイントを作成する頻度を制御します。ノート:
CHECKPOINTSECS
は、Oracleデータベース・システムの統合Replicatには無効です。 -
GROUPTRANSOPS
パラメータでは、標準モードでの動作時に1つのReplicatトランザクションに含まれるSQL操作数を制御します。Replicatトランザクションに含まれる操作数を増やすと、Replicatが実行するトランザクション数の削減、およびチェックポイント・ファイルと(使用されている場合)チェックポイント表へのI/Oアクティビティの削減によって、Oracle GoldenGateのパフォーマンスが向上します。Replicatは、定期的なチェックポイントに加えて、ターゲットにトランザクションを適用するたびにチェックポイントを発行します。ノート:
インバウンド・サーバー・パラメータ
parallelism
が1に設定されていないかぎり、GROUPTRANSOPS
は、Oracleデータベース・システムの統合Replicatには無効です。 -
EOFDELAY
またはEOFDELAYCSECS
パラメータでは、Extract、データ・ポンプまたはReplicatが、データ・ソース内の現在のデータの末尾に到達した後に、新しいデータを確認する間隔を制御します。このパラメータの値を増やすと、新しいデータの読取りによるシステムI/Oのオーバーヘッドを低減できます。
ノート:
これらのパラメータの値を増やすと、パフォーマンスは向上しますが、プロセスが失敗したときに再処理が必要なデータ量も増加します。これは、ソースとターゲット間のレイテンシ全体に影響を及ぼします。一部のテストは、リカバリとパフォーマンスとの間の最適なバランスを決定するのに役立ちます。
親トピック: ディスクI/Oボトルネックの除外
17.5 仮想メモリーとページングの管理
Oracle GoldenGateはコミットされたトランザクションのみをレプリケートするため、トランザクションのコミットまたはロールバックを受信するまで、キャッシュと呼ばれる管理仮想メモリー・プールに各トランザクションの操作を保持します。1つのグローバル・キャッシュが1つのExtractまたはReplicatプロセスの共有リソースとして機能します。Oracle GoldenGateキャッシュ・マネージャは、オペレーティング・システムのメモリー管理機能を利用して、Oracle GoldenGateプロセスを持続的かつ効率的に機能させます。CACHEMGR
パラメータでは、Oracle GoldenGateによって処理中のコミットされていないトランザクション・データのキャッシュに使用可能な仮想メモリーおよび一時ディスク領域の量を制御します。
プロセスの起動時、次の例に示すように、キャッシュ・マネージャによって仮想メモリーのリソースの可用性が確認されます。
CACHEMGR virtual memory values (may have been adjusted)CACHESIZE: 32GCACHEPAGEOUTSIZE (normal): 8M PROCESS VM AVAIL FROM OS (min): 63.97GCACHESIZEMAX (strict force to disk): 48G
現在のリソースでは不十分な場合、次のようなメッセージが返されます。
2013-11-11 14:16:22 WARNING OGG-01842 CACHESIZE PER DYNAMIC DETERMINATION (32G) LESS THAN RECOMMENDED: 64G (64bit system)vm found: 63.97GCheck swap space. Recommended swap/extract: 128G (64bit system).
システムでページングが過度に発生し、クリティカルなプロセスのパフォーマンスに影響する場合、CACHEMGR
パラメータのCACHESIZE
オプションの値を小さくします。スワップ・ディレクトリに割り当てられるディスク領域の最大量をCACHEDIRECTORY
オプションで制御することもできます。CACHEMGR
の詳細は、『Oracle GoldenGateリファレンス』を参照してください。
17.6 データのフィルタリングおよび変換の最適化
大量のデータ・フィルタリングまたはデータ変換によって、処理のオーバーヘッドが追加されます。システム上の他のプロセスにおけるこのオーバーヘッドの影響を最小限にするための推奨事項を、次に示します。
-
プライマリExtractをデータのフィルタおよび変換に使用しないでください。データ取得専用にします。これにより、パフォーマンスは向上し、それらのアクティビティによって生じるプロセスの障害に対して脆弱ではなくなります。目的は、プライマリExtractプロセスが実行中であり、トランザクション・ボリュームに対応していることを確認することです。
-
フィルタリングおよび変換を実行するために、Replicatまたはデータ・ポンプを使用します。次のいずれかの構成を考慮します。
-
システムがオーバーヘッドを許容できる場合、ソースでデータ・ポンプを使用します。この構成は、使用されるネットワーク帯域幅が少ないため、フィルタリングされるデータのボリュームが大きい場合に適しています。フィルタリングされたデータのみがターゲットに送信され、これはセキュリティの考慮事項にも役立ちます。
-
中間システムでデータ・ポンプを使用します。この構成はソース・システムおよびターゲット・システムにオーバーヘッドがない状態を保持しますが、フィルタリングされていないデータがソース・システムから中間システムに送信されるため、ネットワーク帯域幅が多く使用されます。
-
システムがオーバーヘッドを許容できる場合、および大量のフィルタリングされていないデータを送信するのに十分なネットワーク帯域幅がある場合、ターゲットでデータ・ポンプまたはReplicatを使用します。
-
-
システム・リソースに制限がある場合、最も適切ではない選択肢は、ExtractとReplicat間でフィルタリングと変換の操作を分けることです。
17.7 Replicatトランザクションのチューニング
Replicatは標準SQLを使用するため、そのパフォーマンスは、ターゲット・データベースのパフォーマンスおよび適用されるSQLのタイプ(挿入、または更新や削除)に依存します。ただし、特定のステップを実行して、Replicatの効率を最大限にすることができます。
17.7.1 バリア・トランザクションに対する調整パフォーマンスのチューニング
調整Replicat構成で、主キーへの更新などのバリア・トランザクションにより、データベースへのコミット数が増加し、ReplicatのGROUPTRANSOPS
機能のメリットが妨げられます。調整Replicatのワークロード全体でバリア・トランザクションの数が多い場合、多数のスレッドを使用すると、実際にReplicatのパフォーマンスが低下します。
多数のバリア・トランザクションが予想される場合に高いパフォーマンスを維持するために、次を実行できます。
-
グループ内のアクティブなスレッド数を減らします。これにより、Replicatが実行する全体のコミット数が削減されます。
-
バリア・トランザクションの大部分を占める表、およびそれと依存関係がある任意の表を、スレッド数が少ない別の調整Replicatグループに移動します。バリア・トランザクションに妨げられずに並列パフォーマンスを維持するように、より多数のスレッドを持つ元のReplicatグループに最小限のバリア・トランザクションがある表を保持します。
-
(Oracle RAC)新しいReplicat構成で、Replicatチェックポイント表の
PCTFREE
属性を増やすことができます。ただし、最初にReplicatを起動する前にこれを実行する必要があります。PCTFREE
の推奨値は90です。
親トピック: Replicatトランザクションのチューニング
17.7.2 配列での同様のSQL文の適用
BATCHSQL
パラメータでは、Replicatのパフォーマンスを向上させます。BATCHSQL
を使用すると、Replicatは同様のSQL文を配列にまとめてより高速に適用します。標準モードでは、Replicatは1回に1つのSQL文を適用します。
ReplicatがBATCHSQL
モードの場合、小さな行の変更は大きな行の変更よりも高いパフォーマンスの向上を示します。行変更当たりのデータ量が100バイトの場合、BATCHSQL
を使用することによってReplicatのパフォーマンスが最大で300%向上することがわかっていますが、実際のパフォーマンス向上は、混在する操作に応じて異なります。行変更当たりのデータ量が約5,000バイトの場合、BATCHSQL
を使用するメリットは低下します。
SQL文をバッチにまとめると、効率性は向上しますが、メモリーも消費します。最適なパフォーマンスを維持するために、次のBATCHSQL
オプションを使用してください。
BATCHESPERQUEUE BYTESPERQUEUE OPSPERBATCH OPSPERQUEUE
値を設定するベンチマークとして、それぞれ500バイトの1,000のSQL文をまとめた1つのバッチが必要とするメモリーは10MB未満であると想定してください。
BATCHSQL
をBATCHTRANSOPS
オプションとともに使用して、配列のサイズを調整できます。BATCHTRANSOPS
は、コミットが必要になる前に1つのトランザクションにグループ化可能な最大バッチ操作数を制御します。非統合Replicatのデフォルトは1000です。統合Replicatのデフォルトは50です。統合Replicatを使用する際に多くの待機依存性がある場合、BATCHTRANSOPS
の値を減らしてみてください。待機依存性の数を確認するには、OracleデータベースのV$GG_APPLY_COORDINATOR
データベース・ビューのTOTAL_WAIT_DEPS
列を表示します。
追加の使用方法の考慮事項および構文は、『Oracle GoldenGateリファレンス』を参照してください。
親トピック: Replicatトランザクションのチューニング
17.7.3 キーがない場合の完全な表スキャンの防止
ターゲット表に主キー、一意キーまたは一意索引がない場合、Replicatはすべての列を使用してWHERE
句を構築します。これは本質的に完全な表スキャンです。
行選択をより効率的に行うには、TABLE
文およびMAP
文のKEYCOLS
句を使用して、1つ以上の列を一意と識別します。Replicatは指定された列をキーとして使用します。次の例は、TABLE
文のKEYCOLS
句を示しています。
TABLE hr.emp, KEYCOLS (FIRST_NAME, LAST_NAME, DOB, ID_NO);
使用方法のガイドラインおよび構文は、『Oracle GoldenGateリファレンス』のTABLE
パラメータおよびMAP
パラメータに関する項を参照してください。
親トピック: Replicatトランザクションのチューニング
17.7.4 大規模トランザクションの分割
ソース・データベースの大規模なトランザクションをターゲット・データベースで処理できない場合、ReplicatパラメータMAXTRANSOPS
を使用して、一連の小さいトランザクションに分割できます。詳細は、『Oracle GoldenGateリファレンス』を参照してください。
ノート:
MAXTRANSOPS
は、Oracleデータベース・システムの統合Replicatには無効です。
親トピック: Replicatトランザクションのチューニング
17.7.5 オープン・カーソルの調整
Replicatプロセスは、キャッシュされたSQL文およびSQLEXEC
操作のためにカーソルを保持します。十分なカーソルがないと、Replicatはより多くの文をエージングする必要があります。デフォルトでは、ReplicatはMAXSQLSTATEMENTS
パラメータで許可されているのと同じ数のカーソルを保持します。このパラメータの値を増やす必要がある場合があります。その場合、データベースで許可されているオープン・カーソルの最大数も調整する必要があります。詳細は、『Oracle GoldenGateリファレンス』を参照してください。
親トピック: Replicatトランザクションのチューニング
17.7.6 更新速度の向上
ブロックの断片化を過度に行うと、ReplicatがSQL文を適用する速度が通常より遅くなります。過度に断片化された表を再編成し、Replicatを停止および起動して、新しいオブジェクトIDを登録します。
親トピック: Replicatトランザクションのチューニング
17.7.7 Replicatトランザクション・タイムアウトの設定
TRANSACTIONTIMEOUT
パラメータでは、コミットされていないReplicatターゲット・トランザクションによる、ターゲット・データベースのロックおよびリソースの無駄な消費を防止します。Replicatが既存のアプリケーション・タイムアウト、およびターゲットのその他のデータベース要件内で動作できるように、このパラメータの値を変更できます。
TRANSACTIONTIMEOUT
では、Replicatがターゲット・トランザクション内の最後のソース・トランザクションのトランザクション終了レコードを受信していない場合に、ターゲット・トランザクションをオープンしておくことができる時間を制限します。デフォルトでは、Replicatは複数のソース・トランザクションを1つのターゲット・トランザクションにグループ化してパフォーマンスを向上させますが、ソース・トランザクションの一部のみのコミットは行わず、最後のレコードが到着するまで無制限に待ちます。ReplicatパラメータのGROUPTRANSOPS
では、グループ化されるターゲット・トランザクションの最小サイズを制御します。
次のイベントは、長期化してTRANSACTIONTIMEOUT
をトリガーする場合があります。
-
ネットワークの問題によって、トレイル・データがターゲット・システムに転送されない。
-
いずれかのシステムのディスク容量が不足し、トレイル・データが書き込まれない。
-
Collectorの異常終了(ほとんど発生しないイベントです)。
-
トランザクションのレコードの書込み中のExtractの異常終了または停止。
-
Extractデータ・ポンプの異常終了または停止。
-
停電やシステムのクラッシュなど、ソース・システムの障害。
詳細は、『Oracle GoldenGateリファレンス』を参照してください。
親トピック: Replicatトランザクションのチューニング
17.8 ヘルスチェック・スクリプトを使用した監視およびトラブルシューティング
Oracle GoldenGateのヘルスチェック・スクリプトでは、Oracle Databaseのデータベース・サイト情報が提供され、監視およびトラブルシューティングを実行できます。
ヘルスチェック・スクリプトでは、1回の実行で、データベースからレプリケーション関連の構成およびパフォーマンス情報がすべて収集されます。このスクリプト内には、データベース・インスタンスに関する多くの問合せと、ExtractおよびReplicatからのデータベース固有の情報が含まれています。このスクリプトを定期的に実行すると、レプリケーションに関する最新のデータベース側のパフォーマンス情報を取得できます。
この出力は、レプリケーション環境の定性的分析のサポートに必要な主要な情報の1つです。
内容は次のとおりです。
- ヘルスチェック・スクリプトのインストール、実行およびアンインストール
ヘルスチェック・スクリプトは、Oracle GoldenGate ClassicおよびMicroservicesで使用できます。 - ヘルスチェック情報の取り扱い方法
- ヘルスチェック情報のコンポーネント
ヘルスチェック・スクリプトでは、Webブラウザを使用して表示できるJSONオブジェクトおよびHTMLコードを含むHTMLファイルが生成されます。
17.8.1 ヘルスチェック・スクリプトのインストール、実行およびアンインストール
ヘルスチェック・スクリプトは、Oracle GoldenGate ClassicおよびMicroservicesで使用できます。
healtcheckディレクトリには、ヘルスチェック・スクリプトをインストール、実行および削除するための3つのファイルが含まれています。ogghc_install.sql
を使用してPL/SQLパッケージをインストールしたら、ohgghc_run.sql
スクリプトを頻繁に実行して出力ファイルを生成できます。ヘルスチェック・スクリプトは、ogghc_deinstall.sql
スクリプトを使用して削除できます。
-
$OGG_HOME/lib/sql/healthcheck
for MA -
$OGG_HOME/healthcheck
for CA
情報を収集するには、SYS
ユーザーとしてヘルスチェックをインストールおよび実行することをお薦めします。ただし、Oracle GoldenGate管理ユーザーとしてスクリプトをインストールおよび実行することもできます。この場合、一部のシステム情報は使用できません。ヘルスチェックの出力には、SYS
権限を必要とする情報が表示されます。
17.8.2 ヘルスチェック情報の取り扱い方法
ヘルスチェック・スクリプトの出力ファイルには、インスタンス名およびタイムスタンプが含まれています。デフォルトでは、統合ExtractおよびReplicatに関する情報が収集されます。ただし、レガシーOracle GoldenGateスキーマまたはデータベース・プロファイルから情報を取得できます。このため、EXCLUDE_TAG
パラメータの引数を使用する必要があります。
問合せ対象の情報量に応じて、スクリプトの実行時間(分単位)は異なります。
ヘルスチェック・スクリプトを使用して、処理に時間がかかりすぎる問合せを排除し、パラレル・セッションで別の問合せを実行して出力を取得できます。
17.8.3 ヘルスチェック情報のコンポーネント
ヘルスチェック・スクリプトでは、Webブラウザを使用して表示できるJSONオブジェクトおよびHTMLコードを含むHTMLファイルが生成されます。
-
概要
-
Extract
-
Replicat
-
表統計とエラー
-
ツール
-
レポート・マップ(レガシー)
これらの各セクションには、使用可能なデータのタイプに応じたメニューとサブメニューが含まれています。
メニュー | 説明 | |
---|---|---|
概要 |
「Overview」セクションには、次の情報が含まれています。
|
|
Database |
メイン・メニュー(メイン・メニューには問合せ情報がすでに含まれています) |
|
Database Objects |
このサブメニュー・オプションには、次の情報が表示されます。
|
|
Database Details |
このサブメニューには、データベース関連の詳細な様々な接続とサービス、主なOracle GoldenGateパラメータ、および手動のデータベース・パラメータまたは変更されたデータベース・パラメータが含まれています。2番目の部分には、データベースのコンポーネント、ソフトウェアおよびパッチ・レベルに関する基本情報が表示されます。この情報は次の各セクションに分散されています。
|
|
Replication SQL Analysis |
このセクションには、このスクリプトの実行時のセッションからのOracle GoldenGate関連情報のすべてのログ、およびアクティブ・セッション履歴が表示されます。これには、待機、イベント、IO、競合およびSQLの詳細がすべて含まれています。 |
|
Objects Instantiation |
このサブメニューでは、Oracle GoldenGateのスキーマ・レベルと表レベルのサプリメンタル・ロギングの詳細を示します。
|
|
Extract |
メイン・メニュー |
|
Extract Details |
このサブメニューに含まれているExtractの詳細は、次のとおりです。
|
|
Extract Performance |
このサブメニューには、使用されているExtractのタイプに応じたExtractのパフォーマンスに関する情報が表示されます。ここには、次の詳細を含め、Extractの進行状況が表示されます。
|
|
Extract Logminer |
このサブメニューには、問題のデバッグに主に使用される情報が含まれています。 |
|
Replicat |
メイン・メニュー |
|
Replicat Performance |
Replicatのパフォーマンスには次の情報が表示されます。
|
|
CDR |
このサブメニューには、Replicatのエラー・ハンドラの詳細なログが示されます。 |
|
Apply Handler |
このサブメニューには、Replicat名、DDLハンドラおよびプリコミット・ハンドラに関する情報が含まれています。 |
|
Error Management |
メイン・メニュー |
|
Error Management Details | このサブメニューには、表ごとにソートされたOracle GoldenGate表の統計情報の詳細が含まれています。これには、サーバー名、ソース表の所有者、ソース表名、宛先表の所有者、宛先表名、合計操作数、挿入、更新、削除、挿入/更新/削除の衝突、REPERRORの破棄、REPERRORの無視、WAITの依存関係、CDR関連の更新などの情報が含まれています。 | |
Tools |
メイン・メニュー |
|
History |
このサブメニューは、実行した問合せのタイプによって異なり、サブスクライバの履歴、ExtractおよびReplicatの履歴が表示されます。 |
|
レポート・マップ |
メイン・メニュー(レガシー)。 これには、次のような詳細を含む、すべての問合せに関する情報が表示されます。
ハイパーリンクにより、適切な問合せに移動できます。 |
|
Hints/Description |
このサブメニューは、ヘルスチェック・レポートに記録されるすべてのアクティビティのマップです。 |
|
Alerts |
このサブメニューには、データベース、Extract、Replicatに関する一般的な結果からのアラートのログ、および一般的なシステム情報が含まれています。 |
|
Truncates |
このサブメニューには、 ノート: 問合せの元のサイズが上限を超えている場合は、V$ACTIVE_SESSSION_HISTORY の部分的な結果のみを表示できます。
|
|
Config |
このサブメニューでは、このページに表示される次のセクションにルールを追加できます。
|
|
JS Errors |
メイン・メニュー。このページには、このフレームワークのデバッグ情報が表示されます。
ノート: これは、エラーの場合のみ表示されます。 |