システムから設定ファイルを完全に削除するには、remove configコマンドを使用します。このコマンドは、確認のプロンプトを表示せず、設定ファイルの削除を元に戻すことはできません。アクティブな設定を削除することはできません。アクティブな設定を削除するには、まずその設定を非アクティブにします。
ヒント: 誤って削除された設定をリカバリできる可能性があるのは、その設定が以前にアクティブになっており、アクティベーションされてからora_cleanspを実行していない場合です。設定をリカバリするには、イベントログを表示して、その設定ファイルのアクティベーションIDを特定します。SharePlexの変数データディレクトリのsaveサブディレクトリで.conf.actidファイルを確認します。ここで、actidは、イベントログから取得したアクティベーションIDです。
サポート対象のソース: | Oracle |
サポート対象のターゲット: | すべて |
認証レベル: | オペレーター(2) |
発行対象: | ソースシステム |
関連コマンド: | deactivate config、list config、show config、view config |
基本コマンド | リモートオプション |
---|---|
remove config filename |
[ on host | on host:portnumber | on login/password@host | on login/password@host:portnumber ] |
コンポーネント | 説明 |
---|---|
filename |
削除する設定の名前。設定名では大文字と小文字が区別されます。 例: sp_ctrl(sysA)> remove config sales |
これらのオプションにより、リモートマシンにコマンドを発行したり、ログイン名、パスワード、ポート番号、またはそれらの組み合わせを含むコマンドをスクリプト化したりすることができます。
オプション | 説明 |
---|---|
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、repair、copy、appendコマンドは、ソースとターゲットの両方でログファイルを生成します。ジョブ情報とソース・ログ・ファイルは、ジョブがSP_SYS_JOB_HISTORY_RETENTIONより古い場合、またはclear historyコマンドが使用された場合にクリーンアップされます。データベースからのジョブ履歴の消去、またはターゲットからのログファイルの削除を行わずに、ソース上のログファイルを削除するには、remove logコマンドを使用します。
例:
sp_ctrl>remove log age 5
Logs removed
サポート対象のソース: | Oracle |
サポート対象のターゲット: | Oracle |
認証レベル: | オペレーター(2) |
発行対象: | ソースシステム |
関連コマンド: | compare、repair、copy、append |
基本コマンド | リモートオプション |
---|---|
remove log {all | age days | copy | compare} |
[ on host | on host:portnumber | on login/password@host | on login/password@host:portnumber ] |
コンポーネント | 説明 |
---|---|
all |
この引数を指定すると、すべてのログが削除されます。 例: sp_ctrl(sysA)>remove log all |
age days |
この引数を指定すると、指定した日数より古いログが削除されます。 例: sp_ctrl(sysA)>remove log age 10 |
copy |
この引数を指定すると、copyまたはappendコマンドのログが削除されます。 例: sp_ctrl(sysA)> remove log copy |
compare |
この引数を指定すると、compareおよび/またはrepairコマンドのログが削除されます。 例: sp_ctrl(sysA)> remove log |
これらのオプションにより、リモートマシンにコマンドを発行したり、ログイン名、パスワード、ポート番号、またはそれらの組み合わせを含むコマンドをスクリプト化したりすることができます。
オプション | 説明 |
---|---|
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 |
設定ファイルに別の名前を付けるには、rename configコマンドを使用します。システム上の設定ファイル間で固有の名前を使用します。
サポート対象のソース: | Oracle |
サポート対象のターゲット: | すべて |
認証レベル: | オペレーター(2) |
発行対象: | ソースシステム |
関連コマンド: | copy config、edit config、list config、view config |
基本コマンド | リモートオプション |
---|---|
rename config {filenameto newname |
[ on host | on host:portnumber | on login/password@host | on login/password@host:portnumber ] |
コンポーネント | 説明 |
---|---|
filename tonewname |
例: sp_ctrl(sysA)> rename config sales to sales2 |
これらのオプションにより、リモートマシンにコマンドを発行したり、ログイン名、パスワード、ポート番号、またはそれらの組み合わせを含むコマンドをスクリプト化したりすることができます。
オプション | 説明 |
---|---|
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 |
repairおよびrepair usingコマンド(repairコマンドと総称される)を使用して、ターゲットテーブル内の同期していない行をrepairします。
repairコマンドは、まずcompareを実行してrepairが必要な行を特定してからrepairを実行します。テーブルがどのようにcompareされるかについては、compare / compare usingを参照してください。
注意: 実行中のcompareまたはrepairは、ソーステーブルには一切影響を与えません。SharePlexは、読み取りの一貫性についてのクエリを実行するためだけにデータベースにログインし、ソーステーブルのロックは短時間です。SharePlexは、処理中にターゲットテーブルを短時間ロックしますが、ユーザはロックをほとんど意識することなくアクセスを継続できます。
SharePlexは、DML操作(INSERT、UPDATE、DELETE)によって発生した、ターゲットテーブル内の非同期行を検出し、repairすることができます。
SharePlex は、以下のcompareとrepairをサポートせずにスキップします。
高度なデータ型
TEXT
CHAR > 2,000
VARCHAR > 4000
サイズなしのVARCHAR
BYTEA
compareまたはrepair中のテーブルに対してDDLを実行しないでください。compareは、SharePlexがサポートするものも含め、DDL操作によって引き起こされる非同期状態を検出しません。DDLがテーブル定義を変更すると、compareする必要がある行を取得するためにcompareプロセスにより作成されたSELECTステートメントが無効になります。
DDLによって発生した非同期状態を修正したら、repairコマンドを使用して行のデータを再同期することができます。
compareおよびcompare usingでサポートされるデータ型の詳細については、『SharePlexリリースノート』を参照してください。
レプリケーションのレイテンシは、compareやrepairの処理のパフォーマンスを低下させる可能性があります。ターゲット上でcompareおよびrepairプロセスを生成するためにソースから送信されたメッセージは、複製されたデータと共にキューを通じて送信されます。データバックログによる遅延が生じると、生成メッセージの送信が遅れることにより、プロセスが読み取りの一貫性を失うことがあります。可能であれば、compareやrepairはピーク以外の時間帯に行います。
ビューをrepairするには、以下が真でなければなりません。
Compareプロセスのパフォーマンスを向上させるために、SharePlexはSP_DEQ_PARALLELISMパラメーターによる並列ヒントをサポートしています。このため、並列度、つまり起動するワーカープロセスの数を指定できます。
デフォルトでは、PostgreSQLデータベースオプティマイザはSQLステートメントに最適な問い合わせ実行計画を選択します。これは、並列ヒントで指定した並列度に直接関連していないこともあります。pg_hint_planにより、クエリを実行するたびに配列ヒントを使用して実行計画を調整することができます。SharePlexは、データベースにpg_hint_plan拡張機能がインストールまたは設定されている場合、内部でこれを利用します。
並列クエリを使用するための構文の例は以下の通りです。
pg_hint_plan拡張機能は並列ヒントをサポートしています。Parallel(table <# of workers> [soft|hard])
SharePlexはハードパースをサポートする並列ヒントを使用します。Parallel(table <# of workers> [hard])
注意: ワーカーの数は、データベースシステムのCPU VCoreより少なくなければなりません。
compareおよびrepairコマンドによって同期されたデータを維持するための推奨手順は、まずcompareまたはcompare usingコマンドを実行し、次にrepair statusコマンドで結果を表示することです。このコマンドは、非同期行とその考えられる原因を表示します。非同期状態の原因が修正されない限り、今回行をrepairしても、レプリケーションは再び非同期になります。問題が解決した後、repairまたはrepair usingコマンドを実行します。
repairまたはrepair usingコマンドは、予めcompareを行うことなく実行できます。このコマンドはまずcompareを行い、同期していない行を特定し、その行をrepairします。しかし、将来的な非同期状態を防ぐには、非同期状態の根本的な原因を解決しなければなりません。
非同期状態の原因と解決策については、
ターゲットテーブルをrepairする最適なタイミングは、テーブルのサイズ、問題の原因、非同期行の範囲、ユーザをロックアウトできる時間の長さによって異なります。repairを開始する前に、以下を考慮してください。
テーブルをすぐにrepairしなければならないが、ロックやレプリケーションのレイテンシを許容できない場合、whereオプションを使用して、特定の行に限定してrepairすることができます。別の方法としてkeyオプションを使用することもできますが、このオプションを使用すると、非同期行を見逃してしまう可能性があります。
以下のシナリオでは、compareを実行する際に特別な処理が必要となります。
使用例 | サポートcompare |
---|---|
統合レプリケーション |
中央データベース内のターゲットテーブルは、どのソースデータベースよりも行数が多く、ソースデータベースよりも列数が多いことがよくあります。このような環境でrepairコマンドを使用する場合は、特別な配慮が必要です。 repair usingコマンド 統合レプリケーションは、repair usingコマンドではサポートされていません。repair usingコマンドでは、ソーステーブルに存在しないターゲット行が不要に削除されます。 回避策として、統合レプリケーションに関係するテーブルを除外した設定のサブセットを作成し、代わりにサブセット設定をrepairします。repairコマンドを使用すると、統合レプリケーションに関与するテーブルをrepairできます。 repairコマンド 統合レプリケーションは、ターゲットデータベースとPostプロセスがソースホストのIDを各行に追加するように設定されている場合にサポートされます。中央のターゲットテーブルの正しい行をcompareまたはrepairするには、targetwhereオプションを使用し、ソースID値をwhere句の基準にします。 例えば、ある企業の東部本社のデータベースのテーブルと、中央の企業データベースの正しい行をcompareするには、東部データベースのソースIDに「East」を使用し、その値をtargetwhere句の基準にすることができます。repairコマンドで同じtargetwhere句を使用します。compareプロセスおよびrepairプロセスは、ソースID値を使用して、東部データベースに有効な行のみを選択します。 ソースIDを特定する統合レプリケーション以外の実装でcompareコマンドやrepairコマンドを使用すると、ターゲット行が不要に削除される可能性があります。この設定の詳細については、『SharePlex管理ガイド』を参照してください。 ターゲット行が正確に選択されるように、targetwhereオプションと標準のwhereオプションを組み合わせる必要があるかもしれません。 |
ピアツーピアレプリケーション |
ピアツーピア構成では、どのシステムを信頼できるソースシステムとし、どのシステムをセカンダリシステム、つまりターゲットシステムとするかを決めなければなりません。セカンダリシステムは、repairが行われるシステムです。ピアツーピア環境でcompareやrepairを実行する前に、以下の手順に従ってください。
|
キーのないテーブル |
compareおよびrepairコマンドは、ソースおよびターゲットシステム上でORDER BY句付きのSELECTステートメントを発行します。大規模なテーブルにプライマリキーまたはNULL以外の一意キーとインデックス(一意のインデックスが望ましい)を持つ場合、順序付けはより速くなります。それ以外の場合は、すべての列がキーとして使用されます。 一意の行識別子はないが、一意の行として識別できる列がテーブルに1つ以上ある場合、orderbyオプションを指定してcompareコマンドを使用できます。このオプションを使用すると、SharePlexは、ソースシステム上のsp_desvrログに、コマンドがこれらの列をキーとして使用したという通知を出力します。 |
ソーステーブルよりも列の数が多いターゲットテーブル |
repairおよびrepair usingコマンドは、ソーステーブルに含まれていないターゲット列を無視します。repairでは以下のことを行います。
|
UNIQUE制約を持つテーブル |
UNIQUE制約で定義された列では、repair、またはrepair usingコマンドによって一意制約違反エラーが返されることがあります。次の例では、ソーステーブルとターゲットテーブルがそれぞれ2列ずつになっています。最初の列は主キーで、2番目の列にはUNIQUE制約があります。
SharePlexがターゲットテーブルの1行目をrepairしてソースと一致させようとすると、2列目のUNIQUE制約がエラーを返します。これは、値「ABC」が既に2行目に存在するためです。ターゲットテーブルの2行目でも、「XYZ」が既に1行目に存在するため、同じことが起こります。回避策は以下の通りです。
|
LOB列を持つテーブル |
いずれかのターゲットテーブルにLOB列があるとrepairにかかる時間が長くなります。より高速なrepairを行うには、SP_DEQ_SKIP_LOBパラメーターを0に設定して、compareとrepairでLOB列がスキップされるようにします。詳細については、SP_DEQ_SKIP_LOB を参照してください。 |
XMLデータでのrepair操作 |
XMLデータに対してrepair操作を実行すると、「ORA-04036: PGA memory used by instance exceeds PGA_AGGREGATE_LIMIT(ORA-04036: インスタンスが使用するPGAメモリがPGA_AGGREGATE_LIMITを超えています)」エラーが表示されます。 回避策:
|
repair操作では、以下のようにDML操作によって発生した、ターゲットテーブルの非同期状態をrepairします。
repairおよびrepair usingコマンドは 、以下の修正SQLステートメントを発行します。
repairには常に、ターゲットテーブル内の非同期状態を特定するためのcompareが含まれます。repairまたはrepair usingコマンドを実行すると、SharePlexは以下の一連のイベントを開始します。
行の選択とrepairは次のように進行します。
ターゲットテーブルは、repairの順番になるとロックされ、その後ロックが解除されます。
SharePlexは 、repair SQLステートメントの適用時にデータベースエラーが発生すると、そのステートメントから先のrepairを停止し、直前に適用された有効なステートメントのみをコミットします。このように、テーブルは部分的にrepairされますが、まだ同期していない可能性があります。repair statusコマンドは、この状況を警告します。
compareおよびrepairコマンドは、すべての非同期行をrepairするために必要なSQLを、ログファイルと同じ場所にあるSQLファイルに書き込みます。compareコマンドのみが発行された場合、SharePlexはこれらのSQLステートメントを実行しません。repairコマンドを実行した場合、このコマンドは、非同期行をrepairするSQLステートメントを実行すること以外はcompareコマンドと同じように動作します。
SQLログファイルの出力を抑制することができます。このファイルを抑制する理由には以下のようなものがあります。
SQLログファイルを抑制するには、nosqllogオプションをcompareまたはrepairコマンドで使用します。
SharePlexの現在のインスタンスの実行中に、compareとrepairのすべての実行についてSQLログファイルの出力を抑制するには、SP_SYS_SECURE_MODE環境変数を1に設定します。この変数はSharePlexを起動する前に設定する必要があるため、sp_copプロセスが実行されている場合は、この変数を設定した後に再起動する必要があります。この環境変数を指定してsp_copを実行すると、compareコマンドとrepairコマンドによってSQLファイルにデータは保存されず、Post処理でもSharePlexのエラーログにデータは保存されません。
すべてのcompareおよびrepairコマンドでは、複数のプロセスを同時に実行することができます。複数のcompareおよびrepairコマンドを同時に実行し、それぞれがソーステーブルとターゲットテーブルのペアを処理することも、PostgreSQLのワイルドカードを使用して1つのコマンドで複数のテーブルセットを指定することもできます。SharePlexによるワイルドカードのサポートの詳細については、『SharePlex管理ガイド』を参照してください。
レプリケーションプロセスとcompareおよびrepairプロセスなど、最大で20のSharePlexプロセスでpostキューを同時に使用することができます。一度に最大で5つのcompareおよびrepairプロセスを実行できるようにすることをお勧めします。
制限に達したためにcompareやrepairに失敗した場合、SharePlexはイベントログにメッセージを記録します。
注意: editコマンドを使用し、以前のコマンドを編集して新しいコマンドを作成すれば、複数のコマンドをより簡単に実行できます。
アクティブな設定のサブセットは、以下の方法でrepairできます。
1つのスキーマに属するレプリケーション内の全ターゲットテーブルをrepairするには、以下のようにrepairコマンドにワイルドカードを指定します。
sp_ctrl> repair scott.%
設定ファイル内のすべてのターゲットテーブルをrepairするには、以下のようにrepair usingコマンドを使用します。
sp_ctrl>repair using myconfig
1つのターゲットルート内のすべてのターゲットテーブルをrepairするには、以下のようにatオプションを指定して、repair usingコマンドを使用します。
sp_ctrl>repair using config.active at prodsys@o.ora112
compareおよびrepairコマンドには、処理の対象として選択する行をフィルタリングできるwhereオプションがあります。デフォルトでは、これらのコマンドはテーブルのすべての行に影響し、ソーステーブルに含まれていないターゲットテーブルの列は無視されます。
whereオプションを使用すると、ソーステーブルとターゲットテーブルの同じ名前の列に基づいて行をフィルタリングすることができます。
ソーステーブルまたはターゲットテーブルに1つ以上の余分な列が存在し、それらの行に行の一意性を決定する値が含まれている場合は、sourcewhereおよびtargetwhereオプションを使用します。
このオプションを正しく使用するには:
ソースとターゲットの両方で同じ名前を持つ他の列には、標準のwhereオプションを使用します。
重要! 余分な行を持つターゲットテーブルに対してcompareとrepairの両方を実行する予定がある場合は、UPDATEとDELETEのcompare用にtargetwhereのみを使用してください。repairコマンドはINSERTの正しい値を決定できません。この問題を回避するには、余分な列にデフォルト値を設定するか、挿入された行を手動で更新します。
compareまたはrepairコマンドが発行されるたびに、ジョブIDがsp_ctrlディスプレイに表示されます。sp_ctrlディスプレイを利用できない場合は、compare statusコマンドを実行することでジョブIDを表示できます。
repairのステータスや結果を表示するには、sp_ctrlのrepair statusコマンドを使用します。
詳細については、repair statusを参照してください。
sp_xdesvrおよびsp_xdecltプロセスは、実行するシステム上にログファイルを書き込みます。SharePlexの変数データディレクトリのlogサブディレクトリにあるファイルを開きます。
sp_xdesvrプロセスが書き込むログの名前はxdesvr_<jobid>_r.<dbid>_p<process id>.logです。ここで、
sp_xdecltプロセスが書き込むファイル名は、xdeclt_<jobid>-<tableid>_r.<dbid>_p<processid>.logに.logまたは.sqlを付加したものです。ここで、
ログファイル名の例:
xdesvr_7_r.aparopka_p4970.log
xdeclt_7-1_r.aparopka_p25095.log
xdeclt_7-1_r.aparopka_p25095_01.sql
ディスク使用量を制御するために、ログは循環方式でエージングされます。現在のログがサイズの限界に達すると、SharePlexは新しいログファイルを生成します。新しいログは最大ログ数まで作成され、その後、SharePlexは最も古いログから上書きを開始します。
実行中のcompareまたはrepairジョブを停止するには、cancelコマンドを使用します。
sp_ctrl(sysA)>cancel JOBID
詳細については、「cancel」を参照してください。
SharePlex は、終了した各ジョブの履歴をソースシステムのデータベースに保持します。SP_SYS_JOB_HISTORY_RETENTIONパラメーターは、履歴の保持期間を制御します。
この履歴を必要に応じて消去するには、clear historyコマンドを使用します。SharePlexがジョブの履歴を削除すると、履歴の元となったログファイルも削除されます。
データベースのジョブ履歴を消去せずにソースシステムからログファイルを削除するには、remove logコマンドを使用します。このコマンドは、ターゲットシステムから古いログファイルを削除するためにも使用できます。
ログファイルのサイズを制御するには、SP_DEQ_LOG_FILESIZEパラメーターを設定します。
プロセスがSELECTクエリを実行するときにフェッチされる行のブロックのサイズを制御することができます。ブロックサイズは、SP_DEQ_MALLOCパラメーターで設定された値に基づいて計算されます。この値は、使用されるcompareスレッドの数で等分され、その後、すべての列のサイズを足した値に基づいて再計算されます。
サポート対象のソース: | Oracle |
サポート対象のターゲット: | Oracle |
認証レベル: | オペレーター(2) |
発行場所: | ソースシステム |
関連コマンド: | compare / compare using |
基本コマンド | コマンドオプション | リモートオプション |
---|---|---|
repair owner.source_table[.partition] |
[ at target_host@o.target_sid ] | [ for o.source_sid ] | [hint “hint”] | [ {include | exclude} "column_list" ] | [ insertonly ] | [ key ] | [ nosqllog ] | [ not "exception_list" ] | [ onepass ] | [ orderby "column_list” ] | [ parallelism degree ] | [ portport_number ] | [ sourcewhere “clause” ] | [ threads thread_count ] | [ targetwhere “clause” ] | [ to target_owner.target_table[.partition] ] | [ where “clause” ] |
[ on host | on host:portnumber | on login/password@host | on login/password@host:portnumber ] |
repair using filename |
[ key ] | [ onepass ] | [ port port_number ] | [ threads threads_count ] | [ parallelism degree ] |
[ on host | on host:portnumber | on login/password@host | on login/password@host:portnumber ] |
コンポーネント | 説明 |
---|---|
repair owner.source_table[.partition] |
基本コマンドは、すべてのソース行をすべてのターゲット行と共にrepairします。 owner.source_tableは、ソーステーブルの所有者と名前です。大文字と小文字を区別したり、名前の中にスペースを入れたりするには、二重引用符を使います。例えば、"HR".emp。 ワイルドカードのテーブル名(オーナー名は不可)がサポートされています。repairするためには、このコマンドのワイルドカードを満たすテーブルがアクティブレプリケーション設定に(明示的またはワイルドカードで)リストされていなければなりません。SharePlexがワイルドカードをどのように処理するかについては、『SharePlex管理ガイド』を参照してください。 例 sp_ctrl(sysA)>repair scott.emp |
repair using filename |
基本コマンドは、filenameにリストされているターゲットテーブル内の同期していない行をすべてrepairします。 filenameは、ターゲットをrepairするソーステーブルの名前が含まれているファイルの名前です。 例 sp_ctrl(sysA)>repair using sales |
コンポーネント | 説明 |
---|---|
at target_host@o.target_sid |
repairに有効 ソーステーブルが複数のターゲットシステムにレプリケートされる設定では、ターゲットテーブルの1つだけをrepairします。 target_hostはターゲットシステムの名前です。 target_sidはターゲットOracleインスタンスのORACLE_SIDです。 例 sp_ctrl(SysA)>repair scott.emp at prod@o.prodsid |
for o.SID |
repairに有効 ソーステーブルを含むOracleインスタンスを指定します。システム上の複数のOracleインスタンスに同じソーステーブルがある場合に使用します。 SIDは、ソースインスタンスのORACLE_SIDです。大文字と小文字は区別され、oratabファイルまたはV$PARAMETERテーブルに表示される通りに入力する必要があります。 このオプションを使用する場合は、必要なコマンド引数の後に記述する必要がありますが、他のオプションと共に任意の順序で記述できます。 例 sp_ctrl (SysA)>repair scott.emp for o.oraA |
hint "hint" |
repairに有効 SELECTステートメントにOracleヒントを含めます。ヒントはソースおよびターゲットシステム上で使用されます。 "hint"は2000文字以内のOracle標準のヒントです。ヒント全体を二重引用符で囲みます。ヒント文字列の先頭の/*+と末尾の*/を省略します。SharePlexによって追加されます。 このオプションを使用する場合は、必要なコマンド引数の後に記述する必要がありますが、他のオプションと共に任意の順序で記述できます。 例 sp_ctrl (SysA)>repair scott.emp where “file >001005” hint “emp(salary)” オペレーティングシステムのコマンドラインからrepairを実行する場合、引用符で囲まれた文字列は、以下のようにエスケープされた二重引用符で囲む必要があります。 /productdir/bin/sp_ctrl repair scott.emp hint “\“emp(salary)\”” |
{include | exclude} "(column_list)" |
repairに有効 repairする列をフィルタリングします。
(column_list)は、インクルードまたは除外する列のリストです。
注: repairされなかった列には、まだ同期していない行が残っている可能性があります。 例 sp_ctrl (SysA)>repair scott.emp exclude "color, weight" |
insertonly |
repairに有効 INSERTステートメントの場合にのみターゲットテーブルをrepairします。 例 sp_ctrl(SysA)>repair scott.emp insertonly |
key |
repairとrepair usingに有効 大きなテーブルのcompareとrepairを高速で実行します。このコマンドは、すべてのデータ値をcompareするのではなく、以下のうちの1つだけをcompareします。
キーまたはorderby列が一致しない場合、SharePlexは 、行全体を削除してrepairし、ソース値に基づいて再度挿入します。 重要! このオプションの使用には注意が必要です。キーの値が一致していても、キー以外の列の値が同期していない可能性があります。 このオプションを使用する場合は、必須コマンド引数の後に記述しなければなりません。他のオプションと共に任意の順序で表示できます。 このオプションは、SharePlexキー定義に基づくrepairには使用しないでください。SharePlexキー定義の詳細については、『SharePlex管理ガイド』を参照してください。 例 sp_ctrl (SysA)>repair scott.emp key sp_ctrl(sysA)>repair using sales key |
nosqllog |
SQLログファイルの出力を抑制します。このファイルには、同期していない行をrepairするために必要なSQLが含まれています。このファイルを出力しない理由には、以下のようなものがあります。
|
not “exception_list” |
repairに有効 テーブル指定にワイルドカードが含まれている場合に、repairしないテーブルの例外リストを指定します。 "exception_list"は、repairしないテーブル名のリストです。
例 sp_ctrl(SysA)>repair scott.% not (%temp%) |
onepass |
repairとrepair usingに有効 compareとrepairを同時に実行するには、このオプションを使用します。同期していない大きなテーブルに使用します。 通常、repairは2つのパスで実行されます。まずcompareを行い、次にrepairでターゲットテーブルをロックします。どちらのパスにも一貫したビューが必要です。onepassでは、compareクライアントが一貫性のあるビューマーカーを受け取るとすぐに、ターゲットテーブルがロックされ、repairされます。 例 sp_ctrl(SysA)>repair scott.emp onepass |
orderby "column_list" |
repairに有効 repairプロセスでcompareする行をソートする際に、ORDERBY句で使用する列を指定します。このオプションは、プライマリキーや一意キーを持たないテーブル上でrepairを実行できるようにします。 "column_list"は、ORDERBY句で使用する列の名前です。
例 sp_ctrl(SysA)>repair scott.emp where “file >001005” orderby “Last Name,Division” |
parallelismdegree |
repairとrepair usingに有効 SELECTステートメントに並列ヒントを追加します。degreeでは、並列度を設定します。 例 sp_ctrl(sysA)>repair scott.emp parallelism 4 sp_ctrl(sysA)>repair using sales parallelism 4 |
port port_number |
repairとrepair usingに有効 ソースまたはターゲットシステム上のSharePlexのバージョンが8.0より前の場合、下位互換性のために使用できます。 クライアントプロセスがサーバプロセスとの通信に使用する、ソースシステム上のポートを指定します。SharePlexの以前のバージョンでは、通信は双方向であり、クライアントからサーバへの通信には、デフォルトでランダムなポート番号が選択されます。このオプションは、ファイアウォールが要求するような特定のポート番号で、ランダムなポート選択を上書きします。 例 sp_ctrl(sysA)>compare scott.emp port 1234 |
sourcewhere “clause” |
repairに有効 ターゲットテーブルに列が存在しない場合に、ソーステーブル内の1つまたは複数の列を基にrepairを行います。
例#1: sp_ctrl(sysA)>repair scott.emp sourcewhere "file >001005" 例#2: 次の例は、sourcewhereおよびwhereオプションをどのように組み合わせて、望ましい結果を得るかを示しています。ソースrepairプロセスのみがsourcewhere句を使用しますが、ソースrepairプロセスとターゲットrepairプロセスの両方がwhere句を使用します。 sp_ctrl(SysA)>repair scott.emp sourcewhere “deptno = 200” where “mgr = ‘SMITH’” |
targetwhere "clause" |
repairに有効 ソーステーブルに列が存在しない場合に、ターゲットテーブル内の1つまたは複数の列を基にrepairを行います。
例#1: sp_ctrl(SysA)> repair scott.emp targetwhere “file >001005” 例#2: 次の例は、targetwhereおよびwhereオプションをどのように組み合わせれば、望ましい結果が得られるかを示しています。ターゲットrepairプロセスのみがtargetwhere句を使用しますが、ソースrepairプロセスとターゲットrepairプロセスの両方がwhere句を使用します。 sp_ctrl(SysA)>repair scott.emp where “deptno = 200” targetwhere “mgr = ‘SMITH’” repair |
threads thread_count |
repairとrepair usingに有効 repairプロセスが使用する処理スレッドの数を設定します。 例 sp_ctrl(sysA)>repair scott.emp threads 4 sp_ctrl(sysA)>repair using sales threads 4 |
to target_owner.target_table [.partition] |
repairに有効 ソーステーブルのターゲットの1つだけをrepairします。ソーステーブルが複数のターゲットシステムにレプリケートされ、ターゲットテーブルに異なる名前がある場合に使用します。 このオプションはターゲットパーティションを指定するためにも使用できます。 compare source_owner.source_table.[source_partition] to target_owner.target_table.[target_partition] 例 (パーティションのrepair) sp_ctrl(SysA)>repair scott.emp.east to scott.allemp.alleast |
where “clause” |
repairに有効 ソースシステムとターゲットシステムの両方で、SELECTステートメントにWHERE句を含めます。WHERE句は、特定の行をrepairするためのフィルタとして機能します。 “clause"には、サブクエリを含まない標準のWHERE句を指定します。
例 sp_ctrl (SysA)>repair 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 |
© ALL RIGHTS RESERVED. Terms of Use Privacy Cookie Preference Center