Chat now with support
Chat with Support

SharePlex 8.6.6 - リファレンス・ガイド

このガイドについて このガイドで使用されている表記規則 SharePlex コマンド SharePlex パラメータ SharePlex ユーティリティ 付録 B:SharePlex 環境変数

cancel

cancel コマンドは、実行中の comparerepaircopy または append コマンドジョブをキャンセルするために使用します。

ジョブをキャンセルするには、ジョブ ID を指定する必要があります。ジョブ ID は、compare、repair、copy または append ジョブから、開始するコマンドを発行したときに返されます。

sp_ctrl> repair using 1elliot

repairing 7 of 7 objects

repair started; job id 408

または、job status コマンドを発行して、最後にストリームされたジョブ ID を取得することもできます。

sp_ctrl> job status

Job ID:408

PID:11527

Host: prodsys

Started:22-FEB-15 18:08:09

Job Type:Repair

ステータス:Processing - 0 objects completed

使用法:

サポートされるターゲット: Oracle
権限レベル: Operator (2)
発行先: ソースシステム
関連コマンド: comparerepaircopyappend

構文

基本コマンド リモートオプション
cancel job_id

[ on host |

on host:portnumber |

on login/password@host |

on login/password@host:portnumber ]

構文の説明

コンポーネント 説明
jobID

キャンセルするジョブの ID。

例:

sp_ctrl>cancel 407

リモートオプション

一連のオプションによって、リモートマシンに対するコマンドの発行や、ログイン名、パスワード、ポート番号、またはこれらの項目の組み合わせを含むコマンドのスクリプト化も可能になります。

オプション 説明
on host

リモートシステム(現在の sp_ctrl セッションを実行しているシステム以外のシステム)でコマンドを実行します。リモートシステムのログイン資格情報を要求するプロンプトが表示されます。使用する場合は、コマンド構文の最後のコンポーネントにする必要があります。

例: sp_ctrl(sysB)>status on SysA

on host:portnumber

リモートログインおよびポート番号を指定する必要がある場合に、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後のコンポーネントにする必要があります。

例: sp_ctrl(sysB)>status on SysA:8304

on login/password@host

リモートログイン、パスワード、およびホスト名を指定する必要がある場合に、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後のコンポーネントにする必要があります。

例:sp_ctrl(sysB)>status on john/spot5489@SysA

on login/password@host:portnumber

リモートログイン、パスワード、ホスト名、およびポート番号を指定する必要がある場合に、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後のコンポーネントにする必要があります。

例: sp_ctrl(sysB)>status on john/spot5489@SysA:8304

clear history

clean history コマンドを使用して、古い compare、repair、copy、および append コマンドジョブから情報とログを削除します。

これらのジョブは、ソースシステムおよびターゲットシステムでログファイルを生成します。デフォルトでは、SP_SYS_JOB_HISTORY_RETENTION パラメータで設定した値よりジョブが古い場合に、ジョブ情報とログファイルがクリーンアップされます。clear history コマンドを使って、必要に応じて、特定のジョブまたはテーブル、または特定の経過時間に属するすべてのジョブのジョブ情報とログを削除できます。

使用法:

サポートされるターゲット: Oracle
権限レベル: Operator (2)
発行先: ソースシステム
関連コマンド: comparerepaircopyappend

構文

基本コマンド コマンドオプション リモートオプション

clear history

{ all |

source_owner.source_table |

age days |

jobID }

[for o.source_sid]

[ on host |

on host:portnumber |

on login/password@host |

on login/password@host:portnumber ]

構文の説明

コンポーネント 説明
all

すべてのジョブを削除します。

例:

sp_ctrl(sysA)> clear history all

source_owner.source_table

特定のテーブルの履歴を削除します。

例:

sp_ctrl(sysA)> clear history clear history user2.employee

age days

指定日数よりも古いジョブ履歴を削除します。

例:

sp_ctrl(sysA)> clear history age 10

jobID 指定したジョブ ID(job status コマンドで取得)の履歴を削除します。
for o.source_sid

オプション。アクティブ設定がない場合、または複数のアクティブ設定がある場合に、clear history コマンドを使用するために用いられます。どちらの場合でも、for オプションを使ってソース SID を使用する必要があります。

例:

sp_ctrl(sysA)>clear history all for o.source_sid1

リモートオプション

一連のオプションによって、リモートマシンに対するコマンドの発行や、ログイン名、パスワード、ポート番号、またはこれらの項目の組み合わせを含むコマンドのスクリプト化も可能になります。

オプション 説明
on host

リモートシステム(現在の sp_ctrl セッションを実行しているシステム以外のシステム)でコマンドを実行します。リモートシステムのログイン資格情報を要求するプロンプトが表示されます。使用する場合は、コマンド構文の最後のコンポーネントにする必要があります。

例: sp_ctrl(sysB)>status on SysA

on host:portnumber

リモートログインおよびポート番号を指定する必要がある場合に、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後のコンポーネントにする必要があります。

例: sp_ctrl(sysB)>status on SysA:8304

on login/password@host

リモートログイン、パスワード、およびホスト名を指定する必要がある場合に、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後のコンポーネントにする必要があります。

例:sp_ctrl(sysB)>status on john/spot5489@SysA

on login/password@host:portnumber

リモートログイン、パスワード、ホスト名、およびポート番号を指定する必要がある場合に、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後のコンポーネントにする必要があります。

例: sp_ctrl(sysB)>status on john/spot5489@SysA:8304

clear status

clear status コマンドは、古い警告メッセージを Status Database から削除するために使用します。このコマンドを使用するには:

  1. クリアできるメッセージを見つけるには、show statusdb detail コマンドを発行します。クリアできるメッセージは、Clear 列が Yes になっています。
  2. すべてのメッセージをクリアしたくない場合は、クリアするものそれぞれのステータス ID を書き取ってください。
  3. 各ステータス ID に対して clear status コマンドを発行するか、all 引数を使用するとクリアできるメッセージが一度にすべて削除できます。

SharePlex は、クリアされたメッセージを識別するメッセージを Event Log に追加します。

このコマンドは、デフォルトシステムの Status Database からメッセージをクリアします。別のシステム上の Status Databas からメッセージをクリアするには、[on host] オプションを使用します。

注: 一部のメッセージはクリアできません。

使用法:

サポートされるターゲット: すべて
権限レベル: Operator (2)
発行先: ソースまたはターゲットシステム
関連コマンド: show statusdb

構文

基本コマンド リモートオプション
clear status {statusID| all}

[ on host |

on host:portnumber |

on login/password@host |

on login/password@host:portnumber ]

構文の説明

コンポーネント 説明
statusID

削除する個別のメッセージに SharePlex が割り当てた ID(show statusdb コマンドを使用して取得)。

例:

sp_ctrl(sysA)>clear status 20

all

この引数を使用すると、クリア可能なすべてのメッセージが削除されます。

例:

sp_ctrl(sysA)>clear status all

リモートオプション

一連のオプションによって、リモートマシンに対するコマンドの発行や、ログイン名、パスワード、ポート番号、またはこれらの項目の組み合わせを含むコマンドのスクリプト化も可能になります。

オプション 説明
on host

リモートシステム(現在の sp_ctrl セッションを実行しているシステム以外のシステム)でコマンドを実行します。リモートシステムのログイン資格情報を要求するプロンプトが表示されます。使用する場合は、コマンド構文の最後のコンポーネントにする必要があります。

例: sp_ctrl(sysB)>status on SysA

on host:portnumber

リモートログインおよびポート番号を指定する必要がある場合に、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後のコンポーネントにする必要があります。

例: sp_ctrl(sysB)>status on SysA:8304

on login/password@host

リモートログイン、パスワード、およびホスト名を指定する必要がある場合に、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後のコンポーネントにする必要があります。

例:sp_ctrl(sysB)>status on john/spot5489@SysA

on login/password@host:portnumber

リモートログイン、パスワード、ホスト名、およびポート番号を指定する必要がある場合に、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後のコンポーネントにする必要があります。

例: sp_ctrl(sysB)>status on john/spot5489@SysA:8304

compare / compare using

compare および compare using コマンド(総称して比較コマンド)を使用して、ターゲットテーブルがソーステーブルと同期していることを確認します。

  • compare コマンドは、ワイルドカードを使用して、特定のスキーマ内の個々のソーステーブルとターゲットテーブルまたは任意の数のテーブルを比較します。個々のテーブルを比較するときは、列ベースのフィルタリングを使用して、比較対象として選択されている行を制御できます。
  • compare using コマンドは、アクティブ設定にリストされているすべてのテーブル、またはアクティブ設定の中のテーブルのサブセットを含む別のファイルを比較します。

比較を実行した後、repair または repair using を実行して、非同期行を修復できます。

注: 実行中の比較または修復は、どんな方法でもソーステーブルに影響しません。SharePlex は、読み取りの一貫性のクエリのためだけにデータベースにログインし、ソーステーブルのロックは短時間です。SharePlex は処理中にターゲットテーブルを短時間ロックしますが、ユーザーはロックについてほとんど、またはまったく気付かずにそれらのテーブルにアクセスを継続できます。

サポートされる操作

SharePlex は、DML 操作(INSERT、UPDATE、DELETE)によって引き起こされたターゲットテーブル内の非同期行を検出して修復できます。特定のデータ型とオブジェクトの比較および修復のサポートの詳細については、『SharePlex リリースノート』を参照してください。

サポートされていない

  • SharePlex は、次の比較および修復をサポートしていません(スキップします)。

    • VARRAY 内部の UDT。他の UDT がサポートされています。
    • シーケンス。
    • トランスフォーメーションが使用されたテーブル。
    • ソースとターゲットサーバー間でデータを渡すために使用されるパススルーサーバーが使用されるネットワーク設定。
    • ソースおよびターゲット(ソース上の CLOB、ターゲット上の BINARY、またはその逆)に異なるストレージを持つ XMLtype。Like to like compare/repair がサポートされています。
    • VARRAY 型は SDO_GEOMETRY または ST_GEOMETRY の内部にはありません
  • カスケードレプリケーション環境では、比較および修復はサポートされていません。
  • 比較または修復するテーブルには DDL を実行しないでください。比較では、SharePlex がサポートする状態を含め、DDL 操作によって引き起こされた非同期状態を検出しません。DDL によってテーブル定義が変更された場合、比較処理によって作成された SELECT 文が無効化され、比較が必要な行が取得されます。次のエラーは、DDL が発生したことを示します。

    Oracle Error:ORA-01466: unable to read data - table definition has changed

    DDL によって引き起こされた非同期状態を修正すれば、repair コマンドを使用して行のデータを再同期できます。

  • 255 文字を超える比較および修復コマンド文字列は、サポートされていません。これはオペレーティングシステムの制限です。この制限を回避するには、ソースシステムで edit コマンドを使用します。テキストファイル内にコマンド文字列を入力して、コマンドにより自動的にファイルを実行させることができます。

compare および compare using でサポートされるデータ型についての追加情報は、『SharePlex リリースノート』を参照してください。

その他の条件

  • 比較または修復するテーブルは、アクティブな設定ファイルの一部である必要があります。
  • ソーステーブルのコミットされていないトランザクションにより、比較および修復プロセスが、読み取りの一貫性のために必要な短時間のロックをできなくなります。比較または修復を実行する前に、すべてのトランザクションがコミットされていることを確認します。
  • 複製の遅延により、比較および修復プロセスのパフォーマンスが低下します。ターゲット上の比較および修復プロセスを生成するソースからのメッセージは、複製されたデータとともにキューを通して送信されます。またデータバックログによって引き起こされる遅延によって、生成メッセージが遅延し、ソースプロセスの読み取りの一貫性が失われる可能性があります。可能な場合は、オフピーク時に比較と修復を実行します。

  • 複製または修復するテーブルは切り詰めないでください。比較コマンドは、開始時に各ソーステーブルのスナップショットを取ります。テーブルが切り詰められた場合、スナップショットの中のテーブルビューが切り詰められ、コマンドが無効な非同期状態を返すことがあります。

特別な使用事例

次のシナリオでは、比較を実行するときに特別な処理が必要です。

使用事例 サポートの比較
集約レプリケーション

集約レプリケーションは、ターゲットデータベースと Post プロセスが、ソースホストの ID を各行に追加するように設定されている場合にサポートされます。中央のターゲットテーブルの正しい行を比較または修復するには、targetwhere オプションを使用して、ソース ID 値の where 句を比較の基準とします。

たとえば、企業の Eastern 本社のデータベース内のテーブルを中央の企業データベースの正しい行と比較するには、Eastern データベースの「East」 のソース ID を使用して、その値の targetwhere 句を比較の基準とします。repair コマンドで同じ targetwhere 句を使用します。比較および修復プロセスは、ソース ID 値を使用して、Eastern データベースで有効な行のみを選択します。

重要!この設定をセットアップするには、『SharePlex 管理ガイド』の「中央データストアを維持するための複製の設定」を参照してください。ソース ID を特定する以外の集約レプリケーションの実装で比較または修復コマンドを使用すると、ターゲット行が意図せず削除されることがあります。

ターゲット行を正確に選択できるようにするには、targetwhere オプションと where オプションを組み合わせる必要があります。

ピアトゥピアレプリケーション

ピアトゥピア設定では、どのシステムが信頼されるソースシステムで、どちらがセカンダリシステム、つまりターゲットシステムであるかを判断する必要があります。セカンダリシステムは、修復が実行されるシステムです。ピアトゥピア環境で比較または修復を実行する前に、次のステップに従います。

  1. セカンダリシステムでのユーザーアクセスを停止し、そのシステムからの複製された操作が信頼されるソースデータベースに post するのを待ちます。ユーザーはソースデータベースへのアクセスを継続できます。
  2. ソースおよびセカンダリシステムで qstatus コマンドを発行します。
  3. キューの中のメッセージが 10 個以下である場合は、ソースシステムから比較を実行します。
  4. 比較時に、sp_desvr および sp_declt の起動後に、ソースデータベースおよびセカンダリデータベースへのユーザーアクセスを許可できます。
  5. ユーザーをテーブルからロックせずに、ターゲットテーブルの選択した行を修復するには、where オプションを指定した repair コマンドを使用します。
キーなしのテーブル

比較および修復コマンドは、ソースおよびターゲットシステムに ORDER BY 句付きで SELECT 文を発行します。大規模なテーブルにプライマリキーまたは一意の NULL 以外のキーとインデックス(一意のインデックスが望ましい)がある場合は、順序付けが速くなります。それ以外の場合は、すべての列がキーとして使用されます。

一意の行識別子はないが、行を一意として識別できる列がテーブルに 1 つ以上ある場合は、orderby オプションを指定した compare コマンドを使用できます。このオプションを使用すると、SharePlex は、ソースシステム上の sp_desvr ログに、コマンドがそれらの列をキーとして使用したという通知を書き込みます。

追加のソース列またはターゲット列を持つテーブル

ソーステーブルまたはターゲットテーブルに追加の列が含まれていて、それらの列に並び替えの基準となる一意の値が含まれている場合は、 sourcewhere または targetwhere 句を指定した compare コマンドを使用します。「比較する行の制御」を参照してください。

比較の仕組み

比較は、DML 操作によって引き起こされたターゲットテーブル内の非同期状態を検出します。

  • 余分な行または消失した行
  • 値が一致しない行

ソースシステムで compare コマンドまたは compare using コマンドを実行すると、SharePlex は次のイベントを開始します。

  1. sp_cop プロセスが、ソースシステムで sp_desvr(サーバー)プロセスを起動します。
  2. sp_desvr プロセスが、sp_ctrl インターフェイスの制御および使用をユーザーに戻します。複製は、比較の進行中も継続されます。
  3. sp_desvr プロセスが、Post プロセスにメッセージを送信し、ターゲットシステムで sp_declt(クライアント)プロセスを開始します。
  4. サーバおよびクライアントのプロセスは、互いに直接通信を確立します。
  5. プロセスは、ソーステーブルとターゲットテーブルの行数を比較してサニティチェックを実行します。ソーステーブルとターゲットテーブルの間の行数の差が 20 パーセントより大きい場合、コマンドは終了します。サニティチェックは、ターゲットデータの再読み込みによって、テーブルの比較または修復時間の浪費を防ぐため、テーブルをより迅速に修正できます。copy または append コマンドを使用して、ターゲットデータを再度読み込むか、選択した別の方法を使用できます。このサニティチェックの値より優先される設定を行うには、compare コマンドに override オプションを指定して再発行します。
  6. 行数がサニティチェックに合格すると、テーブルは次のように比較されます。

    • compare コマンドが使用されている場合、sp_desvr はソース行を選択し、sp_declt はターゲット行を選択し、行を並び替えて比較します。
    • compare using コマンドが使用されている場合、sp_desvr プロセスは、ターゲットシステム上に多数の処理スレッドを作成します。SP_DEQ_THREADS パラメータの設定値によって、作成するスレッドの数を制御します。各スレッドは、sp_declt(クライアント)プロセスを 1 つ起動します。サーバおよびクライアントのプロセスは、互いに直接通信を確立します。処理の負荷は、クライアントプロセス間で分散されます。各ソーステーブルとターゲットテーブルの行が選択、並び替え、比較されます。
  7. 終了すると、プロセスはログファイルを書き込みます。結果は show compare コマンドで表示できます。

SQL ログファイルの管理

compare および repair コマンドは、非同期行の修復に必要な SQL をログファイルと同じ場所の SQL ファイルに書き込みます。compare コマンドのみが発行される場合、SharePlex はこれらの SQL 文を実行しません。repair コマンドが発行される場合、このコマンドは compare コマンドと同一の機能を実行しますが、SQL 文を実行して非同期行を修復する点が異なります。

SQL ログファイルの出力は抑制できます。このファイルを抑制する理由はいくつかあります。

  • データには機密情報が含まれています。SQL ログファイルはクリアテキストで書き込まれます。SQL ログファイルを作成しないことで、機密データがディスクに保存されず、保存データのセキュリティ要件(PCI コンプライアンス基準への対応に必要な要件など)を満たす可能性があります。
  • 比較または修復されたテーブルには、膨大な非同期行があります。このサイズのログファイルは、大量のディスク領域を消費することがあります。

SQL ログファイルを抑制するには、compare または repair コマンドで nosqllog オプションを使用します。

現在の SharePlex インスタンスの実行中に compare および repair のすべての実行で SQL ログファイルの出力を抑制するには、SP_SYS_SECURE_MODE 環境変数を 1 に設定します。この変数は SharePlex を起動する前に設定する必要があります。sp_cop プロセスを実行中の場合は、この変数の設定後にプロセスを再起動する必要があります。この環境変数が設定された状態で sp_cop を実行すると、compare および repair コマンドはデータを SQL ファイルに記録せず、Post プロセスはデータを SharePlex エラーログに記録しません。

詳細については、次を参照: SharePlex 変数

複数のプロセスの実行

すべての compare および repair コマンドを使用すると、複数のプロセスを同時に実行できます。

  • 複数の compare および repair コマンドは同時に動作して、ソースおよびターゲットテーブルのペアをそれぞれ処理できます。また、1 つのコマンドで Oracle ワイルドカードを使用して、複数のテーブルのセットを指定することもできます。SharePlex が、ワイルドカードをサポートする方法の詳細については、『SharePlex 管理ガイド』の「ワイルドカードによる複数のオブジェクトの指定」を参照してください。
  • compare using および repair using コマンドは、ファイル全体で動作します。たとえば、設定ファイル全体のテーブルを比較または修復したり、1 つ以上の比較ファイルを作成したり、ターゲットテーブルのサブセットに影響を与えるファイルを修復したり、これらを同時に実行したりすることができます。手順については、コマンド構文を参照してください。

複製プロセス、比較および修復プロセスを含めて、最大で 20 個の SharePlex プロセスが、同時に post キューを使用できます。任意の時間に最大で 5 つの比較および修復プロセスを実行することをお勧めします。compare using および repair using コマンドを使用すると、プロセスごとにさらに多くのテーブルを比較することで、20 個というプロセス制限を回避できます。

制限に達したために比較または修復が失敗した場合、SharePlex はメッセージをイベントログに記録します。

:複数のコマンドをより簡単に実行するには、edit コマンドを使用して、以前のコマンドを編集して新しいコマンドを作成します。

設定のサブセットの比較

アクティブ設定ファイルのサブセットを、次の方法で比較できます。

  • 単一のスキーマに属する複製内のすべてのテーブルを比較するには、ワイルドカードを指定した compare コマンドを使用します。

    sp_ctrl> compare scott.%

  • 設定ファイル内のすべてのテーブルを比較するには、compare using コマンドを使用します。

    sp_ctrl> compare using myconfig

  • 複製内のすべてのテーブルを 1 つのターゲットルートと比較するには、at オプションを指定した compare using コマンドを使用します。

    sp_ctrl> compare using config.active at prodsys@o.ora112

  • 設定内のテーブルのカスタムサブセットを比較するには、それらを比較ファイル内で指定します。このファイルは、比較するソーステーブルのみをリストするプレーンテキストファイルです。ターゲットテーブルは、比較時に設定ファイルから取得されます。create config コマンドまたは copy config コマンドを使用して、比較ファイルを作成できます。このファイルには、設定ファイルではないことを明確に示す名前を付けてください。詳細については、コマンド構文を参照してください。

比較する行の制御

compare および repair コマンドには、処理のために選択された行をフィルタリングできる where オプションがあります。デフォルトでは、これらのコマンドはテーブルのすべての行に影響を与え、ソーステーブルに含まれていないターゲットテーブルの列は無視します。

  • ソーステーブルとターゲットテーブルの同じ名前の列に基づいて行をフィルタリングするには、where オプションを使用します。

  • 垂直分割レプリケーションを使用するテーブルに対しては、where オプションを使用します。ソース列とターゲット列は、別の名前にすることができます。ソース列の where の選択をベースにします。SharePlex は、設定ファイルから列マッピングを読み取り、ターゲットテーブルの正しい WHERE 句を作成します。
  • 1 つ以上の追加の列が、ソースまたはターゲットテーブルのいずれかに存在し、これらの行に行の一意性を決定する値が含まれている場合は、sourcewhere および targetwhere オプションを使用します。

    • ソーステーブルに追加の列が含まれている場合は、sourcewhere を使用します。
    • ターゲットテーブルに追加の列が含まれている場合は、targetwhere を使用します。

    このオプションを正しく使用するには

    • 追加の列に対してのみ、sourcewhere または targetwhere オプションを使用します。
    • ソースとターゲットの両方で同じ名前を持つ他の列には、標準の where オプションを使用します。

    • SharePlex は、where オプションと sourcewhere または targetwhere オプションを組み合わせて完全な WHERE 句を作成します。

    重要! 追加の行を持つターゲットテーブルに対して比較と修復の両方を実行する予定がある場合は、UPDATE および DELETE を比較するために、targetwhere のみを使用します。repair コマンドは、INSERT の正しい値を判別できません。この問題を回避するには、追加の列にデフォルト値を設定するか、挿入した行を手動で更新します。

プロセスの識別

comparison または repair コマンドが発行されるたびに、ジョブ ID が sp_ctrl ディスプレイに表示されます。sp_ctrl ディスプレイを利用できない場合は、compare status コマンドを実行してジョブ ID を表示できます。

sp_ctrl でのステータスと結果の表示

比較のステータスまたは結果を表示するには、sp_ctrlcompare status コマンドを使用します。

  • この基本コマンドでは、最後に開始された比較ジョブの処理ステータス、およびまだ実行中のその他の比較ジョブが表示されます。
  • その他のオプションを利用して、履歴が存在しているすべての比較ジョブのサマリーステータス、または比較ジョブの詳細情報を表示することもできます。

詳細については、「compare status」を参照してください。

警告およびエラーの表示

sp_desvr および sp_declt プロセスは、実行するシステムにログファイルを書き込みます。ログは、SharePlex 変数データディレクトリの log サブディレクトリに保存されます。

sp_desvr プロセスによって書き込まれるログの名前は desvr_JobID_SID_pProcessID.log です。ここで、

  • JobID は、SharePlex が割り当てたジョブ ID です。
  • SID は、ソーステーブルが存在する Oracle インスタンスの、ORACLE_SID です。
  • ProcessID は、sp_desvr プロセスのプロセス ID です。

sp_declt プロセスによって書き込まれるファイルの名前には、declt_JobIDTableID_SID_SourceHost_pProcessID.log または .sql のいずれかが付けられます。ここで、

  • JobID は、ジョブに SharePlex が割り当てたジョブ ID です。
  • TableID は、ジョブ内のテーブルに対して SharePlex が割り当てたテーブル ID です。
  • SID は、ソーステーブルが存在する Oracle インスタンスの、ORACLE_SID です。
  • SourceHost は、ソースホストの名前または IP アドレスです。
  • ProcessID は、sp_declt プロセスのプロセス ID です。

ログファイル名の例

desvr_606_ora112_p14610.log

declt_606-1_ora112_prodsys_p6528.log

declt_606-1_ora112_prodsys_p6528.sql

ディスク使用量を制御するために、ログは循環的にエージングされます。SharePlex は、現在のログが設定されたサイズの制限に達すると、新しいログファイルを生成します。新しいログが最大数のログまで作成されると、SharePlex は最も古いログの上書きを開始します。

注: compare using コマンドについては、ログファイルが複数になることはほとんどありません。

compare ジョブのキャンセル

実行中の comparison または repair ジョブを停止するには、cancel コマンドを使用します。

sp_ctrl(sysA)>cancel JOBID

詳細については、「cancel」を参照してください。

比較履歴とログの管理

SharePlex は、ソースシステム上のデータベース内で完了した各ジョブの履歴を保持します。SP_SYS_JOB_HISTORY_RETENTION パラメータは、履歴が保持される期間を制御します。

必要に応じて、この履歴を消去するには、clear history コマンドを使用します。SharePlex によってジョブの履歴が削除されると、履歴のソースであったログファイルも削除されます。

データベースからジョブ履歴を消去せずに、ソースシステムからログファイルを削除するには、remove log コマンドを使用します。また、このコマンドを使用して、ターゲットシステムから古いログファイルを削除することもできます。

ログファイルのサイズを制御するには、SP_DEQ_LOG_FILESIZE パラメータを設定します。

すべての操作タイプに 1 つのファイルだけを使用するのではなく、INSERT、UPDATE、および DELETE 操作用に個別の SQL ファイルを作成するには、log split オプションを使用します。

バッチサイズの制御

プロセスが SELECT クエリを作成するときにフェッチされる行ブロックのサイズを制御できます。ブロックサイズは、SP_DEQ_MALLOC パラメータで設定した値に基づいて 計算されます。この値は、使用する比較スレッドの数で均等に分割され、次に、加算されたすべての列サイズに基づいて再計算されます。

非同期行の修復

比較で見つかった非同期行を修復するには、repair または repair using コマンドを使用します。「repair / repair using」を参照してください。

使用法:

サポートされるターゲット: Oracle
権限レベル: Operator (2)
発行先: ソースシステム
関連コマンド: repair / repair using

構文

コマンド コマンドオプション リモートオプション
compare owner.source_table[.partition]

[ at target_host@o.target_sid ] |

[ for o.source_sid ] |

[ hinthint” ] |

[ {include | exclude} "column_list" ] |

[ key ] |

[ log rowdata ] |

[ log split ] |

[ nolock ] |

[ nosqllog ] |

[ not "exception_list" ] |

[ orderby "column_list” ] |

[ override ] |

[ parallelism degree ] |

[ port port_number ] |

[ quickcheck ] |

[ sourcewhereclause” ] |

[ threads thread_count ] |

[ targetwhereclause” ] |

[ to target_owner.target_table[.partition] ] |

[ whereclause” ]

[ on host |

on host:portnumber |

on login/password@host |

on login/password@host:portnumber ]

compare using filename

[key] |

[log rowdata] |

[log split] |

[parallelism degree] |

[port port_number] |

[quickcheck] |

[threads threads_count]

[ on host |

on host:portnumber |

on login/password@host |

on login/password@host:portnumber ]

構文の説明

必要なコマンドコンポーネント

コンポーネント 説明
compare owner.source_table[.partition]

基本コマンドは、すべてのソース行をすべてのターゲット行と比較します。

owner.source_table は、ソーステーブルの所有者および名前です。“HR”.emp のように、大文字小文字の区別を強制したり、名前の中にスペースを使用したりする場合は、二重引用符を使用します。

ワイルドカードを使用したテーブル名(所有者名ではありません)がサポートされています。比較するには、このコマンドでワイルドカードを満たすテーブルを、アクティブな複製設定で(明示的にまたはワイルドカードで)リストする必要があります。SharePlex がワイルドカードを処理する方法の詳細については、『SharePlex 管理ガイド』の「ワイルドカードによる複数のオブジェクトの指定」を参照してください。

例:

sp_ctrl(sysA)>compare scott.emp

sp_ctrl(sysA)>compare scott.emp.west

compare using filename

基本コマンドは、すべてのソース行を、filename にリストされているテーブルのすべてのターゲット行と比較します。

filename は、比較するソーステーブルの名前を含むファイルの名前です。

例:

sp_ctrl(sysA)>compare using sales

オプションのコマンドコンポーネント

コンポーネント 説明
at target_host@o.target_sid

Compare コマンドに有効

ソーステーブルとそのターゲットの 1 つのみを比較します。ソーステーブルが複数のターゲットシステムに複製されるときに使用します。

target_host はターゲットシステムの名前です。

target_sid は、ターゲット Oracle インスタンスの ORACLE_SID です。

例:

sp_ctrl(SysA)>compare scott.emp at prod@o.prodsid

for o.SID

Compare コマンドに有効

ソーステーブルを含む Oracle インスタンスを指定します。同じソーステーブルがシステム上の複数の Oracle インスタンスにある場合に使用します。

SID はソースインスタンスの ORACLE_SID です。SID には大文字と小文字の区別があり、oratab ファイル、V$PARAMETER テーブル、または Windows レジストリの表示内容と同じように入力する必要があります。

使用するときは、このオプションは必須コマンド引数の後につける必要がありますが、他のオプションと任意の順序でつけることができます。

例:

sp_ctrl (SysA)>compare scott.emp for o.oraA

hint "hint"

Compare コマンドに有効

SELECT 文に Oracle ヒントが含まれています。ヒントは、ソースおよびターゲットシステムで使用します。

hint” は、標準の Oracle ヒント(2000 文字以内)です。ヒント全体を二重引用符で囲みます。ヒント文字列の、冒頭の /*+ および末尾の */ は省略されます。ヒント文字列は、SharePlex で追加されます。

使用するときは、このオプションは必須コマンド引数の後につける必要がありますが、他のオプションと任意の順序でつけることができます。

例:

sp_ctrl (SysA)>compare scott.emp where “file >001005” hint “emp(salary)”

オペレーティングシステムのコマンドラインから比較を実行する場合、引用文字列には次のように追加のエスケープ用二重引用符を付加する必要があります。

/productdir/bin/sp_ctrl compare scott.emp hint “\“emp(salary)\””

{include | exclude} "(column_list"

Compare コマンドに有効

比較する列をフィルタリングします。

  • include を使用して、比較する列を指定します。他の列は比較されません。すべてのキー列を include 句に含める必要があります。
  • exclude を使用して、exclude で指定された列を除くすべての列を比較します。キー列を除外しないでください。

(column_list) は、含める列または除外する列のリストです。

  • 各名前はコンマで区切ります。列の名前にスペースが含まれていない限り、リスト内でスペースを使用することはできません。
  • 列リストは二重引用符で囲みます。
  • 任意の順序で列をリストします。並べ替えは昇順に実行されます。
  • 列名には、大文字と小文字の区別がありません。
  • このオプションを使用する場合は、コマンドの必須引数の後に付ける必要がありますが、他のオプションと任意の順序で付けることができます。

注意: 比較されなかった列には、まだ非同期の行が存在する可能性があります。

例:

sp_ctrl (SysA)>compare scott.emp exclude "color, weight"

key

compare および compare using コマンドに有効

大規模テーブルの高速比較を実行します。このコマンドは、すべてのデータ値を比較するわけではありません。次のいずれかを比較します。

  • PRIMARY キーまたは NULL 以外の UNIQUE キー列のみ。

    または

  • orderby オプションで指定された列。テーブルにキーがない場合は、このオプションを使用します。

重要: キーまたは orderby の値が一致しても、他の列の値が一致しないときは、テーブルは非同期のままになります。

使用する場合、このオプションは必要なコマンド引数の後に指定する必要があります。このオプションは、他のオプションとどの順序でつけても構いません。

比較を SharePlex のキー定義に基づけるためには、このオプションは使用しないでください。SharePlex のキー定義の詳細については、『SharePlex 管理ガイド』の「一意のキーの定義」を参照してください。

例:

sp_ctrl (SysA)>compare scott.emp key

sp_ctrl(sysA)>compare using sales key

log rowdata

compare および compare using コマンドに有効

ハッシュ値ではなく実際の行データを記録する SQL ファイルを生成するようにクライアントプロセスに指示します。ファイルはターゲットシステム上で生成されます。比較するテーブルに LONG、LOB および VARRAY がある場合は、log rowdata を使用しないでください。これらのデータ型のいずれかの値が非常に大きい場合は、SharePlex は実際のデータを記録できないことがあります。

重要! この SQL ファイルの目的は、比較されたデータのビューを提供することです。ターゲットテーブルの修復には使用しないでください。コマンドが実行されたときにキャプチャされたデータ値は、現在のデータベース内のデータ値とは異なる場合があります。repair コマンドを使用して、非同期行を修復します。

例:

sp_ctrl(sysA)>compare scott.emp log rowdata

sp_ctrl(sysA)>compare using sales log rowdata

log split

compare および compare using コマンドに有効

操作タイプに基づいて、INSERT 用、UPDATE 用、DELETE 用の 3 つの異なるファイルに SQL ファイルを分割するようにクライアントプロセスに指示します。

例:

sp_ctrl(sysA)>compare scott.emp log split

sp_ctrl(sysA)>compare using sales log split

nolock

Compare コマンドに有効

修復を含む実行の比較フェーズ中に、比較プロセスがターゲットテーブルをロックすることを防ぎます。通常、比較中には SharePlex はターゲットテーブルを一時的にロックして読込み一貫性ビューを取得し、すぐにロックを解除しますが、修復中には SharePlex は常にターゲットテーブルをロックします。

SharePlex は、修復中にソーステーブルを一時的にロックして、読込み一貫性ビューを取得します。

例:

sp_ctrl(sysA)>compare scott.emp nolock

sp_ctrl(sysA)>compare using sales nolock

nosqllog

SQL ログファイルの出力を抑制します。このファイルには、非同期行の修復に必要な SQL が含まれています。このファイルを出力しない理由には、次のものがあります。

  • データには機密情報が含まれています。SQL ログファイルはクリアテキストで書き込まれます。SQL ログファイルを作成しないことで、機密データがディスクに保存されず、保存データのセキュリティ要件(PCI コンプライアンス基準への対応に必要な要件など)を満たす可能性があります。
  • 比較または修復されたテーブルには、膨大な非同期行があります。このサイズのログファイルは、大量のディスク領域を消費することがあります。
notexception_list

Compare コマンドに有効

テーブル指定にワイルドカードが含まれている場合、比較しないテーブルの例外リストを指定します。

exception_list” は、比較しないテーブル名のリストです。

  • owner.tablename のフォーマットを使用します。
  • 各名前はコンマで区切ります。リストにはスペースは使用できません。
  • リストは二重引用符で囲みます。
  • 任意の順序でテーブルをリストします。
  • このオプションを使用する場合は、コマンドの必須引数の後に付ける必要がありますが、他のオプションと任意の順序で付けることができます。

例:

sp_ctrl(SysA)>compare scott.% not (%temp%)

orderbycolumn_list

Compare コマンドに有効

比較する行を並び替えるときに、ORDERBY 句で使用する比較プロセスの列を指定します。このオプションを使用すると、プライマリキーまたは一意のキーを持たないテーブルに対して比較を実行できます。

column_list” は、ORDERBY 句で使用する列の名前です。

  • 各名前はコンマで区切ります。列の名前にスペースが含まれていない限り、リスト内でスペースを使用することはできません。
  • 列リストは二重引用符で囲みます。
  • 任意の順序で列をリストします。並べ替えは昇順に実行されます。
  • 列名には、大文字と小文字の区別がありません。
  • このオプションを使用する場合は、コマンドの必須引数の後に付ける必要がありますが、他のオプションと任意の順序で付けることができます。

例:

sp_ctrl(SysA)>compare scott.emp where “file >001005” orderby “Last Name,Division”

オペレーティングシステムのコマンドラインから比較を実行する場合、引用文字列には追加のエスケープ用二重引用符を付加する必要があります。

/productdir/bin/sp_ctrl compare scott.emp orderby “\“Last Name,Division\””

override

compare および compare using コマンドに有効

サニティチェックを優先し、大幅に非同期状態になるテーブルの比較を可能にします。大幅に非同期状態のテーブルを比較する代わりに、copy コマンドを使用してターゲットテーブルを再読み込みすることもできます(「copy/append」を参照してください)。サニティチェックの詳細については、「比較の仕組み」を参照してください。

例:

sp_ctrl(sysA)>compare scott.emp override

sp_ctrl(sysA)>compare using sales override

port port_number

compare および compare using コマンドに有効

ソースまたはターゲットシステムの SharePlex のバージョンが 8.0 より前の場合、下位互換性のために使用できます。

サーバプロセスとの通信に使用するクライアントプロセスのソースシステム上のポートを指定します。以前のバージョンの SharePlex では、通信は双方向で、クライアントとサーバ間の通信では、ランダムなポート番号がデフォルトで選択されていました。このオプションは、ランダムなポート選択を、ファイアウォールで必要とされるような特定のポート番号で上書きします。

例:

sp_ctrl(sysA)>compare scott.emp port 1234

quickcheck

compare および compare using コマンドに有効

初期チェックを実行して、非同期状態の行があるかどうかを確認します。非同期行を検出すると、即座にプロセスは停止します。これ以降、情報は返されません。非同期行の情報は、compare SQL ファイルに記録されません。

このオプションを、key オプションまたは where オプションと一緒に使用しないでください。

このオプションは、LONG 列をサポートしていません。

例:

sp_ctrl(sysA)>compare scott.emp quickcheck

sp_ctrl(sysA)>compare using sales quickcheck

parallelism degree

compare および compare using コマンドに有効

SELECT 文に並列ヒントを追加します。degree では、並列処理の次数を設定します。

例:

sp_ctrl(sysA)>compare scott.emp parallelism 4

sp_ctrl(sysA)>compare using sales parallelism 4

sourcewhereclause

Compare コマンドに有効

これらの列がターゲットテーブルに存在しない場合、ソーステーブルの 1 つ以上の列の比較をベースにします。

  • clause を二重引用符で囲み、テーブルを完全修飾名(scott.emp など)で参照します。
  • 大文字小文字の区別を強制したり、テーブル名の中にスペースを使用したりする場合は、二重引用符を使用します。
  • 日付は、'YYYYSMMDDHH24MISS' のフォーマットにする必要があります。日付をこのフォーマットに変換するには、Oracle の TO_DATE 関数を使用します。たとえば、c1 が DATE 列である場合、WHERE 句 "c1 > '10-SEP-2001'" は無効ですが、"c1 > to_date('10- SEP-2001', 'DD-MON-YYYY')" は有効です。
  • オペレーティングシステムのコマンドラインから比較を実行する場合、引用文字列には次のように追加のエスケープ用二重引用符を付加する必要があります。

    sp_ctrl> compare scott.emp sourcewhere “\“file >001005\””

  • 使用するときは、このオプションは必須コマンド引数の後につける必要がありますが、他のオプションと任意の順序でつけることができます。

Example #1:

sp_ctrl(sysA)>compare scott.emp sourcewhere “file >001005”

Example #2:

次の例は、sourcewherewhere のオプションを組み合わせて目的の結果を得る方法を示しています。ソース比較プロセスのみが sourcewhere 句を使用しますが、ソースとターゲットの比較プロセスは両方とも where 句を使用します。

sp_ctrl(SysA)>compare scott.emp sourcewhere “deptno = 200” where “mgr = ‘SMITH’”

targetwhere "clause"

Compare コマンドに有効

これらの列がソーステーブルに存在しない場合、ターゲットテーブルの 1 つ以上の列の比較をベースにします。

  • clause を二重引用符で囲み、テーブルを完全修飾名(scott.emp など)で参照します。
  • 大文字小文字の区別を強制したり、テーブル名の中にスペースを使用したりする場合は、二重引用符を使用します。
  • 日付は、'YYYYSMMDDHH24MISS' のフォーマットにする必要があります。日付をこのフォーマットに変換するには、Oracle の TO_DATE 関数を使用します。たとえば、c1 が DATE 列である場合、WHERE 句 "c1 > '10-SEP-2001'" は無効ですが、"c1 > to_date('10- SEP-2001', 'DD-MON-YYYY')" は有効です。
  • オペレーティングシステムのコマンドラインから比較を実行する場合、引用文字列には追加のエスケープ用二重引用符を付加する必要があります。

    /productdir/bin/sp_ctrl compare scott.emp targetwhere “\“file >001005\””

  • 使用するときは、このオプションは必須コマンド引数の後につける必要がありますが、他のオプションと任意の順序でつけることができます。

Example #1:

sp_ctrl(SysA)> compare scott.emp targetwhere “file >001005”

Example #2:

次の例は、sourcewherewhere のオプションを組み合わせて目的の結果を得る方法を示しています。ターゲット比較プロセスのみが targetwhere 句を使用しますが、ソースとターゲットの比較プロセスは両方とも where 句を使用します。

sp_ctrl(SysA)>compare scott.emp where “deptno = 200” targetwhere “mgr = ‘SMITH’” repair

threads thread_count

compare および compare using コマンドに有効

比較プロセスで使用される処理スレッドの数を設定します。

例:

sp_ctrl(sysA)>compare scott.emp threads 4

sp_ctrl(sysA)>compare using sales threads 4

to target_owner.target_table[.partition]

Compare コマンドに有効

ソーステーブルとそのターゲットの 1 つのみを比較します。ソーステーブルが複数のターゲットシステムに複製され、ターゲットテーブルの名前が異なる場合に使用します。

このオプションを使ってターゲットパーティションを指定することもできます。

例:

(パーティションの比較)

sp_ctrl(SysA)>compare scott.emp to scott.allemp.east

whereclause

Compare コマンドに有効

ソースおよびターゲットシステムの両方の SELECT 文に、WHERE 句を含めます。WHERE 句は、特定の行を比較するフィルタとして機能します。

clause” には、サブクエリを含まない標準の WHERE 句を指定します。

  • clause を二重引用符で囲み、テーブルを完全修飾名(scott.emp など)で参照します。
  • 大文字小文字の区別を強制したり、テーブル名の中にスペースを使用したりする場合は、二重引用符を使用します。
  • 日付は、'YYYYSMMDDHH24MISS' のフォーマットにする必要があります。日付をこのフォーマットに変換するには、Oracle の TO_DATE 関数を使用します。たとえば、c1 が DATE 列である場合、WHERE 句 "c1 > '10-SEP-2001'" は無効ですが、"c1 > to_date('10- SEP-2001', 'DD-MON-YYYY')" は有効です。
  • 使用するときは、このオプションは必須コマンド引数の後につける必要がありますが、他のオプションと任意の順序でつけることができます。

例:

sp_ctrl (SysA)>compare scott.emp where “region=4”

リモートオプション

一連のオプションによって、リモートマシンに対するコマンドの発行や、ログイン名、パスワード、ポート番号、またはこれらの項目の組み合わせを含むコマンドのスクリプト化も可能になります。

オプション 説明
on host

リモートシステム(現在の sp_ctrl セッションを実行しているシステム以外のシステム)でコマンドを実行します。リモートシステムのログイン資格情報を要求するプロンプトが表示されます。使用する場合は、コマンド構文の最後のコンポーネントにする必要があります。

例: sp_ctrl(sysB)>status on SysA

on host:portnumber

リモートログインおよびポート番号を指定する必要がある場合に、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後のコンポーネントにする必要があります。

例: sp_ctrl(sysB)>status on SysA:8304

on login/password@host

リモートログイン、パスワード、およびホスト名を指定する必要がある場合に、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後のコンポーネントにする必要があります。

例:sp_ctrl(sysB)>status on john/spot5489@SysA

on login/password@host:portnumber

リモートログイン、パスワード、ホスト名、およびポート番号を指定する必要がある場合に、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後のコンポーネントにする必要があります。

例: sp_ctrl(sysB)>status on john/spot5489@SysA:8304

Related Documents

The document was helpful.

Select Rating

I easily found the information I needed.

Select Rating