この章では、Oracle GoldenGateコンポーネントのパフォーマンスを向上するための推奨事項について説明します。
この章の内容は次のとおりです。
データベースから効率的に取得するために必要なExtractグループは、通常1つのみです。ただし、データベースのサイズとタイプ、またはデータと操作のタイプによっては、1つ以上のExtractグループを構成に追加する必要がある場合があります。
同様に、Replicatを調整モードで使用する場合、ターゲット・データベースにデータを適用するために必要なReplicatグループは、通常1つのみです。(詳細は、14.7.2,項「調整Replicatモードについて」を参照してください。)ただし、Replicatを調整モードで使用する場合でも、複数のReplicatグループが必要な場合があります。Replicatをクラシック・モードで使用し、アプリケーションで大量のトランザクションが生成される場合、パラレルReplicatグループを使用する必要がある場合があります。
各Oracle GoldenGateコンポーネント(Extract、データ・ポンプ、証跡、Replicat)は独立したモジュールのため、必要に応じた組合せが可能です。複数の証跡とパラレルのExtractおよびReplicatプロセスを使用すると(データ・ポンプは使用しても使用しなくてもよい)、大量のトランザクションの処理、パフォーマンスの向上、ボトルネックの解消、レイテンシの削減または特定のデータの処理の分離を行えます。
図19-1に、処理速度を高め、ネットワーク帯域幅の問題を解決するようOracle GoldenGateを構成する方法をいくつか示します。
複数の処理グループを構成する前に、次の考慮事項に目を通し、望んだ結果が得られ、データ整合性が保てる構成であることを確認します。
すべてのワークロードが、複数のグループにパーティション化されても元のトランザクション原子性を維持できるというわけではありません。1つのグループのオブジェクトが他のいずれかのグループのオブジェクトに対して、トランザクションまたはそれ以外の依存関係を持つことがあるかどうかを判断する必要があります。たとえば、ワークロードが主キーを定期的に更新する表は、この方法で簡単にパーティション化することはできません。このモードでは、DDLレプリケーション(データベースに対してサポートされている場合)も、アクションが特定のレコードに基づいているような一部のSQLEXEC
またはEVENTACTIONS
機能の使用も、有効ではありません。
表に外部キー依存性や主キーの更新がない場合、複数プロセスを使用できます。関連するDMLを同じプロセス・ストリームに保持し、データ整合性を保ちます。
システムで実行できる同時ExtractおよびReplicatプロセス・グループの数は、使用可能なシステム・メモリー・サイズに応じて異なります。ExtractおよびReplicatの各プロセスでは、約25から55MBのメモリーが必要であり、トランザクションのサイズと同時トランザクション数によってはそれ以上のメモリーが必要です。
Oracle GoldenGate GGSCIコマンド・インタフェースでは、Oracle GoldenGate Managerのインスタンス当たり、最大で5,000の同時ExtractおよびReplicatグループがサポートされます。サポートされているレベルで、INFO
、STATUS
などのGGSCIコマンドですべてのグループを完全に制御および表示できます。サポートされているレベルを超えると、グループ情報は表示されず、エラーが発生する可能性があります。Oracle GoldenGateでは、環境を効果的に管理するために、ExtractおよびReplicatグループの数(合計)をデフォルト・レベルの300以下に保つことが推奨されます。グループの数は、MAXGROUPS
パラメータで制御されます。
注意: グループを作成する場合、相互に関係制約のある表を同じグループにします。 |
システムは、今後実行する各Oracle GoldenGate ExtractおよびReplicatプロセスのために、十分なスワップ領域を確保している必要があります。必要なスワップ領域を特定するには、次の手順を実行します。
1つのExtractまたはReplicatを起動します。
GGSCIを実行します。
レポート・ファイルを表示し、PROCESS VM AVAIL FROM OS (min)
行を探します。
必要に応じて、値を次の整数(GB)に切り上げます。たとえば、1.76GBの場合は2GBに切り上げます。
その値に、実行されるExtractおよびReplicatプロセスの数を掛けます。その結果が、必要となる可能性のあるスワップ領域の最大量です。
メモリーの管理方法の詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXのCACHEMGRパラメータに関する項を参照してください。
複数のプロセス・グループを使用して、通常の処理を妨げ、ターゲットでレイテンシを発生させるような表をサポートできます。例:
列のデータ型またはパラメータの指定によって、あるいはSQLプロシージャを実行するために、Extractでデータベースからフェッチを行う必要がある場合があります。データベースからデータをフェッチする必要がある場合、Extractのパフォーマンスに影響します。Extractのパラメータ・ファイルにSTATOPTIONS REPORTFETCH
パラメータが含まれている場合、STATS EXTRACT
コマンドでフェッチ統計を取得できます。トランザクションの整合性が保てるのであれば、それらの表を独自のExtractグループに分離できます。
クラシック・モードでは、Replicatプロセスがパフォーマンス・ボトルネックの原因となることがあります。それは、Replicatが単一スレッドのプロセスで、通常のSQLを使用して適用する操作が一度に1つであるためです。BATCHSQL
を有効にしても(Oracle GoldenGateリファレンスfor Windows and UNIXを参照)、Replicatで大規模または長時間実行トランザクション、大量で多数の変更列およびLOBデータが含まれる表の処理に時間がかかる場合があります。その場合、トランザクションの整合性が保てるのであれば、それらの表を独自のReplicatグループに分離できます。
この項には、1つのExtractグループを複数のReplicatグループと組み合せる構成を作成する手順を示します。複数のReplicatプロセスで1つの証跡を読み取ることはできます(ディスクの競合を避けるため、3個以下)が、各Replicatを独自の証跡および対応するプロセスと対にすることをお薦めします。
コマンドとパラメータの構文については、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
変更同期の構成手順の詳細は、第14章「オンライン変更同期の構成」を参照してください。
注意: この構成には、Extractデータ・ポンプが含まれます。 |
ソースでADD EXTRACT
コマンドを使用して、プライマリExtractグループを作成します。
ソースでADD EXTTRAIL
コマンドを使用して、作成するReplicatグループと同じ数のローカル証跡を指定します。すべての証跡をプライマリExtractグループに関連付ける必要があります。
ソースで、データ・ポンプExtractグループを作成します。
ソースでADD RMTTRAIL
コマンドを使用して、作成するReplicatグループと同じ数のリモート証跡を指定します。すべての証跡をデータ・ポンプExtractグループに関連付ける必要があります。
ソースでEDIT PARAMS
コマンドを使用して、データベース環境に必要なパラメータを含むExtractパラメータ・ファイルをプライマリExtract用に1つ、データ・ポンプ用に1つ作成します。Extractを構成する際、次のようにします。
ソース表を異なるTABLE
パラメータに分割します。
各TABLE
文を異なる証跡にリンクします。これは、証跡を指定するEXTTRAIL
またはRMTTRAIL
パラメータの後にこの証跡と関連付けるTABLE
文を配置することで行います。
ターゲットで、Replicatチェックポイント表を作成します。手順については、14.3項「チェックポイント表の作成」を参照してください。すべてのReplicatグループで同じチェックポイント表を使用できます。
ターゲットでADD REPLICAT
コマンドを使用して、作成した各証跡に対するReplicatグループを作成します。ADD REPLICATのEXTTRAIL
引数を使用して、Replicatグループを適切な証跡にリンクします。
ターゲットでEDIT PARAMS
コマンドを使用して、データベース環境に必要なパラメータを含むReplicatパラメータ・ファイルを各Replicatグループ用に作成します。特定のReplicatグループに対するすべてのMAP
文では、そのグループにリンクされた証跡に含まれる同じオブジェクトを指定する必要があります。
ターゲット・システムのManagerのパラメータ・ファイルで、PURGEOLDEXTRACTS
パラメータを使用して、証跡からのファイルの消去を制御します。
複数のExtractグループは独自の証跡に書き込みます。各証跡は、専用のReplicatグループによって読み取られます。
コマンドとパラメータの構文については、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
変更同期の構成手順の詳細は、第14章「オンライン変更同期の構成」を参照してください。
注意: この構成には、データ・ポンプが含まれます。 |
ソースでADD EXTRACT
コマンドを使用して、プライマリExtractグループを作成します。
ソースでADD EXTTRAIL
コマンドを使用して、作成した各Extractグループに対するローカル証跡を指定します。
ソースで、作成した各ローカル証跡を読み取るデータ・ポンプExtractグループを作成します。
ソースでADD RMTTRAIL
コマンドを使用して、作成した各データ・ポンプに対するリモート証跡を指定します。
ソースでEDIT PARAMS
コマンドを使用して、各プライマリExtractグループおよび各データ・ポンプExtractグループに対するExtractパラメータ・ファイルを作成します。
ターゲットで、Replicatチェックポイント表を作成します。手順については、14.3項「チェックポイント表の作成」を参照してください。すべてのReplicatグループで同じチェックポイント表を使用できます。
ターゲットでADD REPLICAT
コマンドを使用して、各証跡に対するReplicatグループを作成します。ADD REPLICAT
のEXTTRAIL
引数を使用して、グループを証跡にリンクします。
ターゲットでEDIT PARAMS
コマンドを使用して、各Replicatグループに対するReplicatパラメータ・ファイルを作成します。特定のReplicatグループに対するすべてのMAP
文では、そのグループにリンクされた証跡に含まれる同じオブジェクトを指定する必要があります。
ソース・システムおよびターゲット・システムのManagerのパラメータ・ファイルで、PURGEOLDEXTRACTS
パラメータを使用して、証跡からのファイルの消去を制御します。
@RANGE
関数を使用して、表の行を複数のOracle GoldenGateプロセスで分割できます。これを使用して大規模でアクセスの多い表のスループットを向上でき、データをセットに分割して異なる宛先に分散させることもできます。各範囲をTABLE
またはMAP
文のFILTER
句に指定します。
@RANGE
は安全でスケーラブルです。同じ行は同じプロセス・グループによって必ず処理されることが保証されるため、データ整合性が保たれます。
Replicatを使用するよりも、プライマリExtractまたはデータ・ポンプを使用して範囲を計算する方が効率的な場合があります。範囲を計算するには、Replicatが証跡全体をフィルタし、範囲の指定を満たすデータを見つける必要があります。ただし、ビジネス・ケースに応じて、このフィルタリングをどこで行うかを判断します。
ネットワーク間のデータの転送が非効率であると、Extractプロセスの遅延やターゲットでのレイテンシが生じます。これを修正しないと、最終的にはプロセスの障害が生じることがあります。
最初に新しいOracle GoldenGate構成を開始する際には、次のことを行います。
ExtractおよびReplicatで許容可能とみなされる遅延およびスループット・ボリュームのベンチマークを確立します。それぞれが実行するタスクの種類により、通常、ExtractはReplicatより高速であることに注意してください。時間の経過とともに、この違いが通常であるか、チューニングやトラブルシューティングが必要であるかがわかるようになります。
ベンチマークと比較して、定期的なスケジュールを設定して、遅延およびボリュームについてこれらのプロセスを監視します。ときどき急に発生する遅延ではなく、一定または増加中の遅延を探します。継続的な過度の遅延は、Oracle GoldenGate構成のいずれかの場所でボトルネックがあることを示します。これは、Oracle GoldenGateでチューニングが必要であること、またはエラー状態が存在することを示す重大な最初の指標です。
ボリューム統計を表示するには、STATS EXTRACT
またはSTATS REPLICAT
コマンドを使用します。遅延統計を表示するには、LAG EXTRACT
またはLAG REPLICAT
コマンドを使用します。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
Oracle GoldenGateのスループットに影響するネットワーク・ボトルネックを検出するには、次の手順に従います。
次のコマンドを発行して、最新の10個のExtractチェックポイントを表示します。ソース・システムでデータ・ポンプExtractを使用している場合、プライマリExtractに対して、またデータ・ポンプに対してもコマンドを発行します。
INFO EXTRACT group
, SHOWCH 10
Write Checkpoint
統計を探します。これが、Extractが証跡に書き込む場所です。
Write Checkpoint #1 GGS Log Trail Current Checkpoint (current write position): Sequence #: 2 RBA: 2142224 Timestamp: 2011-01-09 14:16:50.567638 Extract Trail: ./dirdat/eh
プライマリExtractとデータ・ポンプの両方に対して、次を行います。
1つか2つより多いチェックポイントがあるかどうかを確認します。最大で10個あります。
最大の増分番号を持つWrite Checkpoint
n
見出し(たとえばWrite Checkpoint #8
)を探し、Sequence
、RBA
およびTimestamp
の値をメモします。これが、最新のチェックポイントです。
メモした情報を参照し、次の検証を行います。
プライマリExtractは一連のチェックポイントを生成していますか。または最初のチェックポイントのみを生成していますか。
データ・ポンプが使用中の場合、それは一連のチェックポイントを生成していますか。または1つのチェックポイントのみを生成していますか。
プライマリおよびデータ・ポンプのExtractプロセスに対して、再度INFO EXTRACT
を発行します。
最新の書込みチェックポイントは増加していますか。前回のINFO EXTRACT
コマンド以降、値が増加した場合、表示する最新のSequence
、RBA
およびTimestamp
の値を探します。
次のコマンドを発行して、Replicatプロセスのステータスを表示します。
SEND REPLICAT group
, STATUS
ステータスは、Replicatが、遅延(処理するデータを待機中)、データの処理中、または証跡の最後(EOF)であるかどうかを示します。
Replicatのステータスが遅延モードまたは証跡ファイルの最後であり、次のいずれかがtrueである場合、ネットワーク・ボトルネックが存在します。
プライマリExtractのみを使用していて、その書込みチェックポイントが増加していないか、増加が非常に遅い場合。このExtractプロセスはネットワーク全体のデータを送信する役割を持つため、最終的に、抽出されたデータのバックログを格納するメモリーを使い果して異常終了します。
データ・ポンプを使用していて、その書込みチェックポイントが増加していないが、プライマリExtractの書込みチェックポイントは増加している場合。この場合、プライマリExtractはローカル証跡に書き込むことができますが、データ・ポンプはリモート証跡に書き込むことができません。抽出されたデータのバックログを格納するメモリーを使い果すと、データ・ポンプは異常終了します。プライマリExtractは、証跡順序の最後のファイルに到達するまで実行され、チェックポイントを作成できなくなるため異常終了します。
注意: ネットワークが停止している場合でも、Replicatは、証跡の残りのデータのすべてをターゲットに適用するまで、通常の方法で処理を行います。最終的に、証跡ファイルの最後に到達したことが報告されます。 |
並列のデータ・ポンプを使用すると、ネットワーク構成のプロセスごとに課せられている帯域幅の制限を回避できます。並列のデータ・ポンプを使用して、同じターゲット・システムや別のターゲット・システムにデータを送信できます。また、データ・ポンプはプライマリExtractからTCP/IPの役割を除去し、そのローカル証跡によりフォルト・トレランスが提供されます。
RMTHOST
パラメータの圧縮オプションを使用して、データを圧縮してからネットワーク全体に送信します。圧縮によるメリットと、圧縮を実行するのに必要なCPUリソースを比較検討します。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
RMTHOST
パラメータのTCPBUFSIZE
オプションを使用して、Extractが保持するTCPソケット・バッファのサイズを制御します。バッファ・サイズを増やすと、ターゲット・システムにより大きなパケットを送信できます。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
ネットワークに最適なバッファ・サイズを決定するためのガイドラインとして、次の手順を使用します。
コマンド・シェルからping
コマンドを実行し、次の例に示すような平均ラウンド・トリップ時間(RTT)を取得します。
C:\home\ggs>ping ggsoftware.com Pinging ggsoftware.com [192.168.116.171] with 32 bytes of data: Reply from 192.168.116.171: bytes=32 time=31ms TTL=56 Reply from 192.168.116.171: bytes=32 time=61ms TTL=56 Reply from 192.168.116.171: bytes=32 time=32ms TTL=56 Reply from 192.168.116.171: bytes=32 time=34ms TTL=56 Ping statistics for 192.168.116.171: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 31ms, Maximum = 61ms, Average = 39ms
この値にネットワーク帯域幅を掛けます。たとえば、平均RTTが0.08秒で帯域幅が100MB/秒の場合の最適なバッファ・サイズは次のようになります。
0.08 second * 100 megabits per second = 8 megabits
この結果を8で割り、バイト数を決定します(8ビットから1バイトに変換します)。例:
8 megabits / 8 = 1 megabyte per second
TCPBUFSIZE
で必要な単位はバイトなので、この値を1000000に設定します。
Windows以外のシステムの最大ソケット・バッファ・サイズは、通常デフォルトで制限されています。Oracle GoldenGateがTCPBUFSIZE
で構成するバッファ・サイズを増やすことができるように、システム管理者にソースおよびターゲット・システムのデフォルト値を増やすように依頼してください。
I/Oアクティビティによって、ExtractとReplicatの両方にボトルネックが発生することがあります。
標準Extractでは、証跡へのディスク書込みおよびデータソースからのディスク読取りが生成されます。
データ・ポンプおよびReplicatでは、ローカル証跡からのディスク読取りが生成されます。
各プロセスは、定期的なスケジュールで、リカバリ・チェックポイントをそのチェックポイント・ファイルに書き込みます。
証跡ファイルを含むディスク・サブシステムでI/O待機が発生している場合、実行可能な最速のディスク・コントローラにその証跡を配置します。
RAID構成を確認します。Oracle GoldenGateはデータを順次書き込むため、I/Oの速度が低下しこれらのタイプのファイルには不要なチェックサムを使用するRAID 5よりも、RAID 0+1 (ストライピングおよびミラーリング)をお薦めします。
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のオーバーヘッドを低減できます。
注意: これらのパラメータの値を増やすと、パフォーマンスは向上しますが、プロセスが失敗したときに再処理が必要なデータ量も増加します。これは、ソースとターゲット間のレイテンシ全体に影響を及ぼします。一部のテストは、リカバリとパフォーマンスとの間の最適なバランスを決定するのに役立ちます。 |
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リファレンスfor Windows and UNIXを参照してください。
大量のデータ・フィルタリングまたはデータ変換によって、処理のオーバーヘッドが追加されます。システム上の他のプロセスにおけるこのオーバーヘッドの影響を最小限にするための推奨事項を、次に示します。
プライマリExtractをデータのフィルタおよび変換に使用しないでください。データ取得専用にします。これにより、パフォーマンスは向上し、それらのアクティビティによって生じるプロセスの障害に対して脆弱ではなくなります。目的は、プライマリExtractプロセスが実行中であり、トランザクション・ボリュームに対応していることを確認することです。
フィルタリングおよび変換を実行するために、Replicatまたはデータ・ポンプを使用します。次のいずれかの構成を考慮します。
システムがオーバーヘッドを許容できる場合、ソースでデータ・ポンプを使用します。この構成は、使用されるネットワーク帯域幅が少ないため、フィルタリングされるデータのボリュームが大きい場合に適しています。フィルタリングされたデータのみがターゲットに送信され、これはセキュリティの考慮事項にも役立ちます。
中間システムでデータ・ポンプを使用します。この構成はソース・システムおよびターゲット・システムにオーバーヘッドがない状態を保持しますが、フィルタリングされていないデータがソース・システムから中間システムに送信されるため、ネットワーク帯域幅が多く使用されます。
システムがオーバーヘッドを許容できる場合、および大量のフィルタリングされていないデータを送信するのに十分なネットワーク帯域幅がある場合、ターゲットでデータ・ポンプまたはReplicatを使用します。
システム・リソースに制限がある場合、最も適切ではない選択肢は、ExtractとReplicat間でフィルタリングと変換の操作を分けることです。
Replicatは標準SQLを使用するため、そのパフォーマンスは、ターゲット・データベースのパフォーマンスおよび適用されるSQLのタイプ(挿入、または更新や削除)に依存します。ただし、特定の手順を実行して、Replicatの効率を最大限にすることができます。
調整Replicat構成で、主キーへの更新などのバリア・トランザクションにより、データベースへのコミット数が増加し、ReplicatのGROUPTRANSOPS
機能のメリットが妨げられます。調整Replicatのワークロード全体でバリア・トランザクションの数が多い場合、多数のスレッドを使用すると、実際にReplicatのパフォーマンスが低下します。
多数のバリア・トランザクションが予想される場合に高いパフォーマンスを維持するために、次を実行できます。
グループ内のアクティブなスレッド数を減らします。これにより、Replicatが実行する全体のコミット数が削減されます。
バリア・トランザクションの大部分を占める表、およびそれと依存関係がある任意の表を、スレッド数が少ない別の調整Replicatグループに移動します。バリア・トランザクションに妨げられずに並列パフォーマンスを維持するように、より多数のスレッドを持つ元のReplicatグループに最小限のバリア・トランザクションがある表を保持します。
(Oracle RAC)新しいReplicat構成で、Replicatチェックポイント表のPCTFREE
属性を増やすことができます。ただし、最初にReplicatを起動する前にこれを実行する必要があります。PCTFREE
の推奨値は90です。
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リファレンスfor Windows and UNIXを参照してください。
ターゲット表に主キー、一意キーまたは一意索引がない場合、Replicatはすべての列を使用してWHERE
句を構築します。これは本質的に完全な表スキャンです。
行選択をより効率的に行うには、TABLE
文およびMAP
文のKEYCOLS
句を使用して、1つ以上の列を一意と識別します。Replicatは指定された列をキーとして使用します。次の例は、TABLE
文のKEYCOLS
句を示しています。
TABLE hr.emp, KEYCOLS (FIRST_NAME, LAST_NAME, DOB, ID_NO);
使用方法のガイドラインおよび構文は、Oracle GoldenGateリファレンスfor Windows and UNIX
のTABLEパラメータおよびMAPパラメータに関する項を参照してください。
ソース・データベースの大規模なトランザクションをターゲット・データベースで処理できない場合、ReplicatパラメータMAXTRANSOPS
を使用して、一連の小さいトランザクションに分割できます。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
注意: MAXTRANSOPS は、Oracleデータベース・システムの統合Replicatには無効です。 |
Replicatプロセスは、キャッシュされたSQL文およびSQLEXEC
操作のためにカーソルを保持します。十分なカーソルがないと、Replicatはより多くの文をエージングする必要があります。デフォルトでは、ReplicatはMAXSQLSTATEMENTS
パラメータで許可されているのと同じ数のカーソルを保持します。このパラメータの値を増やす必要がある場合があります。その場合、データベースで許可されているオープン・カーソルの最大数も調整する必要があります。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
ブロックの断片化を過度に行うと、ReplicatがSQL文を適用する速度が通常より遅くなります。過度に断片化された表を再編成し、Replicatを停止および起動して、新しいオブジェクトIDを登録します。
TRANSACTIONTIMEOUT
パラメータでは、コミットされていないReplicatターゲット・トランザクションによる、ターゲット・データベースのロックおよびリソースの無駄な消費を防止します。Replicatが既存のアプリケーション・タイムアウト、およびターゲットのその他のデータベース要件内で動作できるように、このパラメータの値を変更できます。
TRANSACTIONTIMEOUT
では、Replicatがターゲット・トランザクション内の最後のソース・トランザクションのトランザクション終了レコードを受信していない場合に、ターゲット・トランザクションをオープンしておくことができる時間を制限します。デフォルトでは、Replicatは複数のソース・トランザクションを1つのターゲット・トランザクションにグループ化してパフォーマンスを向上させますが、ソース・トランザクションの一部のみのコミットは行わず、最後のレコードが到着するまで無制限に待ちます。ReplicatパラメータのGROUPTRANSOPS
では、グループ化されるターゲット・トランザクションの最小サイズを制御します。
次のイベントは、長期化してTRANSACTIONTIMEOUT
をトリガーする場合があります。
ネットワークの問題によって、証跡データがターゲット・システムに転送されない。
いずれかのシステムのディスク容量が不足し、証跡データが書き込まれない。
Collectorの異常終了(ほとんど発生しないイベントです)。
トランザクションのレコードの書き込み中のExtractの異常終了または停止。
Extractデータ・ポンプの異常終了または停止。
停電やシステムのクラッシュなど、ソース・システムの障害。
詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。