OracleからOracleへのレプリケーション中にcompareまたはrepairコマンドを実行する場合は、その前に以下のガイドラインを確認してください。
PostgreSQLからPostgreSQLへのレプリケーション中にcompareまたはrepairコマンドを実行する場合は、その前に以下のガイドラインを確認してください。
テーブル行のサイズ(各列のデータの合計)が大きい場合は、SELECTクエリを呼び出す呼び出しプロセスにPostgreSQLデータベースがテーブルデータをポストするため、より大きいメモリ容量を必要とする可能性が高くなります。compareまたはrepairコマンドを実行する前に、十分なメモリがあることを確認してください。サイズは、SP_DEQ_THREADSパラメーターまたはコマンド構文内のthreadsオプションの設定、および一度に処理されるテーブル数と各スレッドに割り当てられるメモリを決定するSP_DEQ_MALLOCの値によって異なります。SP_DEQ_MALLOCパラメーターに割り当てられた値は、実行中のスレッド数で分割されます。
compareおよびrepairパラメーター:
以下は、変更されることが多いcompareとrepairのパラメーターです。必要な場合を除き、値を大きくしないでください。これらのパラメーターの詳細については、『SharePlexリファレンスガイド』の文書を参照してください。
パラメーター | 説明 |
---|---|
SP_DEQ_MALLOC |
このパラメーターはフェッチのバッチサイズを制御します。バッチサイズは、SharePlexがcompareのために一度に選択する行数を制御します。バッチサイズが大きいほど処理速度は向上しますが、より多くのメモリを必要とします。この値は、使用するcompareスレッドの数で等分され、次に、すべての列のサイズを足した値に基づいてバッチサイズが再計算されます。 |
SP_DEQ_PARRALLISM |
このパラメーターは、select文のDegree of Parallelismのヒントを管理します。コマンドのparallelismオプションは、この設定をオーバーライドします。 |
SP_DEQ_PART_TABLE_UPDATE | このパラメーターは、行の移動が可能かどうかによって、Oracleパーティションテーブルでのrepairコマンドの動作を制御します。 |
SP_DEQ_PG_DECLARE_FETCH_SIZE |
このパラメーターは、ドライバが1回のフェッチで結果セットを返そうとするか、複数のフェッチにまたがって返そうとするかを決定します。 このパラメーターはPostgreSQLデータベースにのみ適用されます。 |
SP_DEQ_READ_BUFFER_SIZE | このパラメーターは、フェッチされたLONGおよびLOBデータを保持するバッファのサイズを制御し、利用可能なシステムメモリに基づいて調整することができます。 |
SP_DEQ_ROW_LOCK_THRESHOLD | このパラメーターは、WHEREオプションが使用されているときにSharePlexが行レベルのロックとテーブルレベルのロックのどちらを使用するかを制御するしきい値を設定します。 |
SP_DEQ_SKIP_LOB |
このパラメーターは、compare/repair処理にLOBが含まれるかどうかを決定します。
このパラメーターはソースシステムで設定します。 |
SP_DEQ_TIMEOUT | このパラメーターは、キューのバックログのしきい値を設定します。バックログが多いと、ソースとターゲットのcompare/repairプロセス間の接続の確立に遅延が生じます。バックログがこの値以上になると、ソースに対して発行されたcompareまたはrepairコマンドはすべて終了し、エラーを返します。このような場合は、システムの処理量が比較的少ないときにcompareやrepairを行うことを検討してください。 |
compareおよびrepairコマンドによって同期されたデータを維持するための推奨手順は、まずcompareまたはcompare usingコマンドを実行し、次にrepair statusコマンドで結果を表示することです。このコマンドは、非同期行とその考えられる原因を表示します。非同期状態の原因が修正されない限り、今回行をrepairしても、レプリケーションは再び非同期になります。問題が解決した後、repairまたはrepair usingコマンドを実行します。
repairまたはrepair usingコマンドは、予めcompareを行うことなく実行できます。このコマンドはまずcompareを行い、同期していない行を特定し、その行をrepairします。しかし、将来的な非同期状態を防ぐには、非同期状態の根本的な原因を解決しなければなりません。
非同期状態の原因と解決策については、を参照してください。
compareのステータスや結果を表示するには、sp_ctrlのcompare statusコマンドを使用します。
repairのステータスや結果を表示するには、sp_ctrlのrepair statusコマンドを使用します。
ターゲットテーブルをrepairする最適なタイミングは、テーブルのサイズ、問題の原因、非同期行の範囲、ユーザをロックアウトできる時間の長さによって異なります。repairを開始する前に、以下を考慮してください。
テーブルをすぐにrepairしなければならないが、ロックやレプリケーションのレイテンシを許容できない場合、whereオプションを使用して、特定の行に限定してrepairすることができます。別の方法としてkeyオプションを使用することもできますが、このオプションを使用すると、非同期行を見逃してしまう可能性があります。
compareコマンドとrepairコマンドの追加情報と構文については、『SharePlexリファレンスガイド』のコマンドの文書を参照してください。
この章では、Oracleソースデータベースにより生成されるREDOの量にCaptureが遅れを取らないように、Captureプロセスのパフォーマンスを向上させる方法を説明します。
ソースデータベースでPK/UKロギングを有効にしている場合(より多くのSharePlex機能と高速処理をサポートするために推奨)、SP_OCT_ENABLE_LOBMAPパラメーターの設定を確認してください。 このパラメーターは、行の外のLOB列を含むテーブルをレプリケートする際にSharePlexがLOBマップを使用するかどうかを制御します。LOBマップは、PK/UKロギングが有効でない場合に、CaptureプロセスでのLOBIDと行のマッピングに使用されます。LOBマッピングはデフォルトで有効になっています。これらのマッピングはSHAREPLEX_LOBMAPテーブルに格納されます。Captureがマッピングを維持して参照する必要があるため、多数のLOB操作を伴うトランザクションではCaptureの処理速度が低下する可能性があります。データベースでPK/UKロギングが有効になっている場合、このパラメーターを0に設定することでLOBマッピングを無効にすることができます。
アクティブなレプリケーション中にLOBマッピングを無効にするには:
SP_OCT_ENABLE_LOBMAPを0に設定します。
sp_ctrl> set param SP_OCT_ENABLE_LOBMAP 0
Captureを停止します。
sp_ctrl> stop capture
Captureを再開します。
sp_ctrl> start capture
© ALL RIGHTS RESERVED. Terms of Use Privacy Cookie Preference Center