サポートと今すぐチャット
サポートとのチャット

SharePlex 11.4 - 管理者ガイド

このガイドについて このガイドで使用される表記規則 SharePlexの概要 SharePlexの実行 SharePlexの複数のインスタンスの実行 sp_ctrlでのコマンドの実行 SharePlexパラメータの設定 データレプリケーションの設定 コンテナデータベースとの間のレプリケーションの設定 名前付きキューの設定 分割レプリケーションの設定 変更履歴ターゲットへのレプリケーションの設定 レプリケーション戦略の設定 DDLレプリケーションの設定 エラー処理の設定 データトランスフォーメーションの設定 セキュリティ機能の設定 SharePlexユーザのセキュリティグループへの割り当て 本番システムでのレプリケーションの開始 SharePlexの監視 レプリケーションの問題の防止と解決 非同期データのrepair Captureプロセスの調整 Postプロセスの調整 Oracleフェールオーバー後のレプリケーションのリカバリ アクティブなレプリケーション環境に対する変更 Oracleアプリケーションのパッチまたはアップグレードの適用 ソースまたはターゲットのOracleデータのバックアップ トラブルシューティングのヒント 付録A: ピアツーピア図 付録B: SharePlex環境変数

データベースセットアップの問題の解決

Oracleのデータベースセットアップの問題の解決

このセクションは、SharePlexがシステムにインストールされたときにデータベース・セットアップ・ユーティリティを使用して作成されたSharePlexデータベースのアカウントと接続情報に関連する問題を診断するのに役立ちます。

注意: データベースの設定の詳細については、『SharePlexリファレンスガイド』の「データベース・セットアップ・ユーティリティ」を参照してください。

発生している問題がこのドキュメントに記載されていない場合は、SharePlexのナレッジベースを検索してください

https://support.quest.com

ナレッジベースには、フィルタリングオプションや、SharePlexの使用とトラブルシューティングに役立つその他のリソースへのリンクが含まれます。

Oracleのセットアップに関する問題

問題点 説明 ソリューション
ORACLE_SIDおよび/またはORACLE_HOMEが正しくない SharePlexがOracleとやりとりできない場合は、間違ったORACLE_SIDおよび/またはORACLE_HOMEを使用している可能性があります。
  1. ORACLE_SIDおよびORACLE_HOMEの見つけ方ページを参照して、オラクルの値を確認します。

  2. データベース・セットアップ・ユーティリティを再実行します。詳細については、『SharePlexインストールおよびセットアップガイド』の「データベース・セットアップ・ユーティリティ」を参照してください。
データベース権限の不足 データベース・セットアップ・ユーティリティが失敗する場合、実行したユーザが適切な権限を持っていない可能性があります。

詳細については、データベース・セットアップ・ユーティリティを参照してください。

ORACLE_SIDエントリとしてのアスタリスク oratabファイルでは、ORACLE_SIDの値の代わりに*アスタリスク記号が使用されている場合があります。 oratabファイルに有効なORACLE_SIDがあることを確認してから、データベースセットアップを再実行してください。
複数のoratabファイルSun Solaris

Solarisシステムでは、oratabファイルは通常/var/opt/oracleディレクトリにありますが、他のプラットフォームではoratabファイルが/etc ディレクトリに格納されているため、/etcディレクトリに2つ目のoratabが存在する場合があります。

2つ目のoratabファイルを移動、名前の変更、または削除してから、データベースセットアップを再度実行してみてください。
Oracleが実行されていない

データベース・セットアップ・ユーティリティを実行している間、Oracleが実行されており、インスタンスが開いている必要があります。このユーティリティはOracleにアクセスし、 SharePlexをユーザとして確立し、その内部テーブルをインストールします。

Oracleを起動し、インスタンスを開きます。
sp_copが実行中 データベース・セットアップ・ユーティリティの実行中は、SharePlex sp_copプロセスを実行することができません。 実行中の場合は、sp_ctrlshutdownコマンドを使用してシャットダウンします。SharePlex製品ディレクトリのbinサブディレクトリからsp_ctrlを実行します。
Oracleライブラリの場所が正しくない

UnixおよびLinuxシステムでは、SharePlexはOracleライブラリが$ORACLE_HOME/libまたは$ORACLE_HOME/lib32ディレクトリにあることを想定しています。環境によっては、Oracleライブラリの名前がSharePlexが想定しているものと異なっていたり、想定とは異なる場所にインストールされていたりしますその両方の場合もあります。このような場合に、データベース・セットアップ・ユーティリティを実行しようとすると、エラーメッセージが表示されます。

Oracleから適切なライブラリをインストールし、SharePlexを再起動します停止している場合SharePlexはそれ以降、正しいライブラリにリンクします。

ld.so.1: sqlplus: fatal: libsunmath.so.1: can't open file: errno=2” error UnixおよびLinuxシステムでは、このエラーは、リンクが適切な場所に存在するにもかかわらず、SharePlexlibsunmathライブラリおよびlibshareplexライブラリを見つけられないことを示します。

以下のいずれかの方法により解決できます。

  • /usr/libディレクトリに$ORACLE_HOME/lib/libsunmath.so.1のソフトリンクを作成します。または、
  • ECXpert/config/bdg.iniファイルの[DB_ENV]セクションに以下の行を追加します。

    LD_LIBRARYPATH=full oracle home path/lib

間違ったユーザID

UnixおよびLinuxシステムでデータベースセットアップを実行するには、Oracleソフトウェアのset-user-id-rwsr-s--xである必要があります。この権限により、Oracle以外のユーザがSQL*Plusにログインできるようになります。

set-user-idに正しい値を設定します。

設定ファイルの問題の解決

このセクションでは、設定ファイルの管理に関連する問題と解決策について説明します。「アクティベーションの問題の解決ページも参照してください。

発生している問題がこのドキュメントに記載されていない場合は、SharePlexのナレッジベースを検索してください

https://support.quest.com

ナレッジベースには、フィルタリングオプションや、SharePlexの使用とトラブルシューティングに役立つその他のリソースへのリンクが含まれます。

設定ファイルが誤って削除された

誤って削除された設定ファイルを復元できる可能性があるのは、その設定が以前にアクティブになっており、アクティベーションされてからdb_cleanspを実行していない場合です。

解決方法: イベントログを表示して、その設定ファイルのアクティベーションIDを確認します。SharePlexの変数データディレクトリのsaveサブディレクトリでconf.actidファイルを確認します。ここで、actidは、イベントログから取得したアクティベーションIDです。

設定ファイルのエラーの解決

エラーメッセージ 説明 ソリューション
The parameter for ‘create config’ must be a new file name. or... Destination file exists - file must not exist prior to operation.「create config」のパラメーターは新しいファイル名でなければなりません。または...宛先ファイルが存在しています – 操作前にファイルが存在していてはなりません。 この設定に付けた名前は、既に別の設定ファイル用に存在しています。 別の名前を使用してください。システムの設定のリストを表示するには、list configコマンドを使用します。
Couldn’t fork editor. or… Editor execution failed.エディタのフォークに失敗しました。または...エディタの実行に失敗しました。 SharePlexがデフォルトのテキストエディタを開けませんでした。 エディタがまだシステム上に存在することを確認してください。UnixとLinux上のデフォルトエディタはviです。デフォルトのテキストエディタを変更するには、「sp_ctrlのデフォルトエディタの設定ページを参照してください。
Destination file exists - file must not exist prior to operation.宛先ファイルが存在しています – 操作前にファイルが存在していてはなりません。 設定ファイルのコピー時に指定した名前は、このSharePlexインスタンスに既に存在しています。 別の名前を使用してください。システムの設定のリストを表示するには、list configコマンドを使用します。
Problems in reading or writing file used in edit -- command aborted.編集で使用するファイルの読み書き時に問題が発生し、コマンドが中断されました。 edit configコマンドが指定されたファイルを開けませんでした。 大文字と小文字を含めて編集しようとしているファイル名を確認し、ファイルが壊れていないかチェックします。
Destination file exists - file must not exist prior to operation.宛先ファイルが存在しています – 操作前にファイルが存在していてはなりません。 この設定に指定しようとしている新しい名前は、既に別のファイルで使用されています。 別の名前を使用してください。システムの設定のリストを表示するには、list configコマンドを使用します。
Invalid file name passed to command. or… File does not exist.コマンドに渡されたファイル名が無効です。または...ファイルが存在していません。 設定名のスペルを間違えたか、大文字と小文字を間違えた可能性があります。 大文字と小文字を含めて名前とスペルを確認し、もう一度入力します。システムの設定のリストを表示するには、list configコマンドを使用します。
File access denied - check file permissions.ファイルへのアクセスが拒否されました – ファイルの権限を確認してください。 コマンドを実行する権限がありません。 sp_ctrlauthlevelコマンドでご自身の認証レベルを表示し、その最小認証レベルを確認します。認証レベルを割り当てるのはSharePlex管理者です。詳細については、SharePlexのセキュリティグループについてを参照してください。

アクティベーションの問題の解決

このセクションでは、設定ファイルのアクティベーションに関連する可能性のある問題と解決策について説明します。

発生している問題がこのドキュメントに記載されていない場合は、SharePlexのナレッジベースを検索してください

https://support.quest.com

ナレッジベースには、フィルタリングオプションや、SharePlexの使用とトラブルシューティングに役立つその他のリソースへのリンクが含まれます。

注意: 多くの設定の問題は、新しいオブジェクトや変更されたオブジェクトを含む設定をアクティベーションしたり再アクティベーションしたりする前に、sp_ctrlverify configコマンドを使用することで防ぐことができます。verify configコマンドは、アクティベーションとレプリケーションの基本要件が満たされていることを確認するために設定をレビューします。詳細については、『SharePlexリファレンスガイド』を参照してください。

SharePlexで設定ファイルが見つからない

SharePlexでアクティベーションしたい設定ファイルが見つからない場合は、その場所を確認してください。アクティベーションに成功するためには、設定ファイルがSharePlexの変数データディレクトリのconfigサブディレクトリ内になければなりません。sp_ctrlcreate configコマンドは、そのディレクトリに設定ファイルを自動的に置きます。誰かが移動させた可能性もあります。

また、create configコマンドを使用せずに設定ファイルを作成した場合にも問題が発生します。これは、ファイルがオペレーティングシステムを使用して直接作成されたか、config.sqlまたはbuild_config.sqlスクリプトを使用して作成された場合に生じる可能性があります。その時点の作業ディレクトリがconfigサブディレクトリでなかった場合、またはファイルが別のディレクトリに保存されていた場合は、アクティベーションでそのファイルを見つけることができません。

解決策: 設定ファイルは、SharePlexの変数データディレクトリのconfigサブディレクトリ内になければなりません。

一部のオブジェクトがアクティベーションに失敗する

設定ファイルにリストされている1つまたは複数のオブジェクトをSharePlexがアクティベーションできない場合、他のオブジェクトのアクティベーションを続行し、ID_oconf##.logファイルに失敗したオブジェクトの名前を表示します。

以下は、個のオブジェクトがアクティベーションに失敗する理由です。

問題点 説明 ソリューション
無効なオブジェクト

SharePlexでサポートされていないオブジェクトを複製しようとしている可能性があります。

SharePlexがサポートするオブジェクトと操作については、このリリースに付属の『SharePlexリリースノート』を参照してください。

無効なターゲットシステム

SharePlexがルーティング情報を取得できませんでした。

ターゲットの名前を確認し、ルーティングマップ内のシンタックスエラーを修正します。インスタンス名を指定するデータベースもあれば、実際のデータベース名を指定するデータベースもあります。

ルーティングの方法については、以下を参照してください。

ルーティングシンタックスを修正した後、影響を受ける設定を再度アクティベーションします。

シンタックスエラーとスペルミス

名前のスペルミス、所有者名なしで指定されたオブジェクト名、また設定の指定におけるその他の不適切なシンタックスは、オブジェクトのアクティベーションに失敗する原因となります。

verify configコマンドを実行してエラーを表示します。設定のシンタックスについては、「データをレプリケートするためのSharePlexの設定
OracleSharePlexテーブルをロックできない

アクティベーションで設定ファイルのテーブルをロックできない場合は、そのテーブルのアクティベーションに失敗します。

SharePlexのデータベースユーザにテーブルをロックする権限を割り当てます。

アクティベーションの完全な失敗

設定のアクティベーション全体に失敗する原因はいくつかあります。設定のアクティベーションの問題に関する一般的なエラーメッセージは以下の通りです。

Bad configuration file設定ファイルが不良です

The Oracle sid SID specified in the config file is invalid.設定ファイルで指定されたOracle sid SIDが無効です。

以下は、アクティベーションの失敗の原因と解決策です。

問題点 説明 ソリューション
パスワードの問題

SharePlexでソースデータベースへの接続に問題があり、SharePlexのアカウントが存在することが分かっている場合は、誰かがパスワードを変更したかどうかを調べます。

接続情報を更新します。詳細については、SharePlexデータベースアカウントの変更を参照してください。
非アクティベーションとアクティベーションの間隔が短すぎる

まれに、非アクティベーションの直後に設定をアクティベーションすると、アクティベーションに失敗することがあります。

1つの設定を非アクティベーションした後に新しい設定をアクティベーションする前に、イベントログに以下のメッセージが表示されるまで待ちます。Notice: sp_ordr (for o.ora10 queue o.ora10) Deactivated.注: sp_ordr (for o.ora10 queue o.ora10) が非アクティベーションされました。

データソースの指定がない

データソースの指定が間違っているか不完全です。以下のようなエラーが返されます。

The datasource specified in the config file is invalid. 設定ファイルで指定されたデータソースが無効です。

以下のように指定します。

Datasource:o.SIDでのルーチンのリスト

Oracle間違ったORACLE_SID Datasource:o.SID行で間違ったORACLE_SIDが指定されています。

設定ファイルを編集して、正しいORACLE_SIDを指定します。

ORACLE_SIDおよびORACLE_HOMEの見つけ方ページを参照してください。

Oracle不十分なプロセス設定

Oracle Error 20 (ORA-00020 maximum number of processes (string) exceeded)Oracleエラー20ORA-00020プロセス文字列の最大数を超えましたがアクティベーション失敗の原因である場合、これは、Oracleがソースシステムのリソースを使い果たし、1つまたは複数のスレッドがログオンできないためです。

OracleのPROCESSESパラメーターを大きくするか、使用しているアクティベーションスレッドの数を減らします。スレッド数は、activate configコマンドのthreadsオプションで制御します。

OracleORA-00942: テーブルまたはビューが存在しない

SharePlexがデータ辞書にアクセスできません。

init.oraファイルのO7_DICTIONARY_ACCESSIBILITYパラメーターがTRUEに設定されていることを確認します。デフォルト。パラメーターを変更した場合は、データベースを再起動する必要があります。
reconcileコマンドの完了に時間がかかる

これは、Oracleソースのアクティベーションと調整に適用されます。ソースデータベースのアクティビティが少ないときにreconcileコマンドを実行すると、状況によってはコマンドプロセスが停滞することがあります。この状況は、ソースシステムからデータが継続して届くことにreconcileコマンドが依存しているために生じます。ホットバックアップまたはコピーの実施以降、ソースシステムで複製されたアクティビティがない場合、調整プロセスはソースのアクティビティが再開するまで待機します。これは正常な動作です。

一般的なアクティベーションエラー

以下は、設定をアクティブする際に表示される可能性のある一般的なエラーメッセージです。

ACTIVATE CONFIGエラーメッセージ 原因 ソリューション
line n, source object name (T_HFL_1) not of form OWNER.TABLEn行目、ソースオブジェクト名T_HFL_1がOWNER.TABLE形式ではありません 設定ファイルにリストされた1つまたは複数のオブジェクトに所有者名がない可能性があります。 オブジェクト名はownername.objectnameのように指定します。
syntax error in line n.n行目にシンタックスエラーがあります。 設定ファイルの指定された行にシンタックスエラーがあります。 間違ったシンタックスを修正します。詳細については、データをレプリケートするためのSharePlexの設定を参照してください。
line n, bad routing spec (o.ora10)n 行目、不正なルーティングの指定o.ora10 ルーティングマップにシンタックスエラーがあります。 ルーティングマップが正しく記載されていることを確認してください。詳細については、設定ファイル内のルーティング指定を参照してください。
File does not exist.ファイルが存在しません。 SharePlexが設定ファイルを見つけられません。 list configコマンドを実行します。アクティベーションするファイルがリストにない場合、そのファイルが変数データディレクトリのconfigサブディレクトリにない可能性があります。ファイルを見つけてそのディレクトリに移動し、activate configコマンドを再度実行します。
Attempt to run sp_conf when sp_conf is already activesp_confが既にアクティブなときにsp_confを実行しようとしています 設定は既に有効化されています。 不要です。
Login parameters not set...ログインパラメーターが設定されていません... SharePlexのアカウントと内部テーブルがソースデータベースに存在しません。 データベース・セットアップ・ユーティリティを実行します。詳細については、『SharePlexリファレンスガイド』の「データベース・セットアップ・ユーティリティ」を参照してください。
WARNING, not all objects activated successfully. Check activation log.警告、一部のオブジェクトが正常にアクティベーションされませんでした。アクティベーションログを確認してください。 1つ以上のテーブルがアクティベーションに失敗しました。 詳細については、一部のオブジェクトがアクティベーションに失敗するを参照してください。
Deactivate/flush a nonactive datasource非アクティブなデータソースの非アクティベーション/フラッシュ アクティブでない設定を非アクティベーションしようとしています。 これが非アクティベーションしたい設定である場合は、アクションは必要ありません。設定のリストを表示するには、list configコマンドを使用します。
(Oracle) Currently involved in transaction.現在トランザクションに使用されています 設定ファイル内のオブジェクトがロックされています。 他のプロセスがオブジェクトをロックしている場合、SharePlexはOracleテーブルをロックして分析することができません。ロックがソーストランザクションのアクティビティによるものである場合は、データベースがそれほどビジーでない時間帯にアクティベーションしてみてください。

レプリケーションの問題の解決

レプリケーションの問題の解決

このセクションでは、データのレプリケーション中に発生する可能性のある一般的な問題について説明します。

発生している問題がこのドキュメントに記載されていない場合は、SharePlexのナレッジベースを検索してください

https://support.quest.com

ナレッジベースには、フィルタリングオプションや、SharePlexの使用とトラブルシューティングに役立つその他のリソースへのリンクが含まれます。

一般的な問題

問題点 説明 ソリューション
ネットワークの問題

ネットワーク要因によって、ターゲットシステムへのデータ転送が遅すぎたり、まったく転送されなかったりする場合があります。

すべてのExportプロセスとImportのプロセスが実行されていることを確認し、ネットワーク管理者に、ネットワークに速度低下の原因がないかを確認してもらいます。
パラメータ設定

SharePlexパラメータの中には、デフォルトの設定から変更すると、レプリケーションのパフォーマンスが低下するものがあります。

パフォーマンス低下の原因がパラメータ設定にあるかどうかを調べるには、list param modifiedコマンドを実行して、デフォルト設定以外のパラメータを表示します。『 SharePlexリファレンスガイド』でこれらのパラメータのドキュメントを確認して、特定の設定がレプリケーションの速度に影響を及ぼしていないかどうかを判断します。

OracleのCapture関連の問題

Captureが停止している場合は、sp_ctrl statusコマンドを発行して、権限のあるSharePlexユーザによって意図的に停止されたかどうかを確認します。意図的に停止された場合は、理由を特定し、停止が長時間に及ばないことを確認します。

Captureが予期せず減速したり停止したりするその他の理由は次の通りです。

問題点 説明 ソリューション
過度の連鎖

Oracleは1つの行に対して複数のブロックを読み込む必要があるため、過度の連鎖はソースデータベースのパフォーマンスを低下させます。過度の連鎖がターゲットシステムでのPostパフォーマンスを低下させるのは、データベース内のブロックの断片化により、PostがSQLステートメントを適用できる速度が低下するからです。

連鎖したテーブルを再編成します。
効果的でないREDOログ設定

Captureが処理し終わる前にREDOログがラップすると、Captureはアーカイブログを読み込みますが、これがレプリケーションの速度を低下させ、ディスク容量を消費する可能性があります。ほとんどの場合、SharePlexがアーカイブログの使用を回避できるようにREDOログを設定する必要があります。

ログの設定方法については、『SharePlexインストールおよびセットアップガイド』を参照してください。

SharePlexのプロセスの優先順位が低い

ホットバックアップやその他のOracle負荷が高い操作中に、Capture、Read、またはその両方が遅くなる場合は、システムのプロセス優先度設定を見て、SharePlexにさらにリソースを割り当てることができるかどうかを判断します。

SharePlexの優先度とOracleの優先度が一致することが理想的です。

キーが記録されない

レプリケーション内のテーブルでPK/UKロギングが有効になっていない場合、SharePlexは、更新および削除操作のキー値を取得するためにデータベースにクエリする必要があります。

PK/UKロギングを有効にします。

一時テーブルとFNDテーブル 一時テーブルが、レプリケーションのオーバーヘッドとパフォーマンス低下の原因となる非常に多くの変更を受け取ります。 レプリケーションから一時テーブルを削除します。
アーカイブログが利用できない

Captureがログラップを検出し、アーカイブログが利用できない場合、Captureは停止し、「Log wrap detectedログラップが検出されましたのエラーを返します。Captureは一定時間待機してから再開し、ログが復元されるまでこのプロセスを続行します。

Captureが最後に処理したものからアーカイブログを復元するか、SP_OCT_ARCH_LOCパラメータでSharePlexにその位置を示します。Captureが必要とするログを調べるには、show captureコマンドにdetailオプションを指定して使用します。詳細については、Oracleアーカイブログを復元する方法 を参照してください。

圧縮されたアーカイブログ

Captureは圧縮されたアーカイブログを読み取ることができません。

Captureが必要とする現在のログと、それ以降のすべてのログを解凍し、Captureが処理できるようにします。Captureが必要とするログを調べるには、show captureコマンドにdetailオプションを指定して使用します。

アーカイブログが予期せぬ場所に保存されている

必要なアーカイブログが見つからない場合、Captureは停止します。REDOログがラップされると、CaptureはOracleのアーカイブログリストからアーカイブを探し、そこにログがない場合、CaptureはSP_OCT_ARCH_LOCパラメータで指定された場所を探します。

アーカイブログを通常のOracleの場所以外に保存する場合は、このパラメータにアーカイブログを含むディレクトリのフルパス名が設定されていることを確認してください。

REDOログにアクセスできない

Captureは、ログを読み取れなかったり、見付けることができなかったりすると停止し、その後、再度ログの読み取りを試みます。

SharePlexがREDOログを読む権限がなくなるような権限の変更を誰かが行っていないかどうかを調べます。

変数データディレクトリにアクセスできない

変数データディレクトリのstateサブディレクトリの権限が制限されているためにSharePlexログに書き込めない場合、またはそのディレクトリに容量制限がある場合、Captureは停止します。

変数データディレクトリの権限と容量を確認してください。

OracleのPost関連の問題

Postプロセスが遅くなる原因は多数あります。PostがターゲットインスタンスにSQLステートメントを適用するために内部制御された許容可能な待ち時間を超えると、SharePlexoperation taking too long操作に時間がかかりすぎていますというメッセージを生成します。多くの場合、1つのテーブルだけでボトルネックの原因になります。show sqlコマンドまたはshow postコマンドを使用して、Postがどのテーブルを処理しているかを調べ、以下を確認します。

問題点 説明 ソリューション
フルテーブルスキャン

ターゲットテーブルにキーがない場合、Postは、正しい行を見付けるためにフルテーブルスキャンを実行する必要があります。これによりPostプロセスが遅くなります。

以下のいずれかを実行します。
ターゲットテーブルのビットマップインデックス

ビットマップインデックスはクエリには有益ですが、Postによって適用されるDML操作の速度を低下させます。

レプリケーションのターゲットテーブルではビットマップインデックスの使用を避けるか、DMLアクティビティが頻繁に発生しないテーブルでのみ使用するようにしてください。

ディスクI/Oのボトルネック

ターゲットシステム上のディスクI/Oのボトルネックは、Postのパフォーマンス低下の一般的な原因です。Postは、Oracleがデータをコミットするのを待つために多くの時間を費やす可能性があります。ピアツーピアレプリケーションで、同じログデバイスから読み取るCaptureプロセスがある場合、この影響はさらに悪化します。

ディスクI/Oはデータベース環境の性質ですが、REDOログをより高速なハードドライブやソリッドステートドライブに配置することで、ボトルネックを減らすことができます。

バッファの取得数が多い

バッファの取得数が多いSQLステートメントがあるテーブルを見直します。インデックスに対するバッファの取得は、インデックスのサイズとそれが一意のインデックスかどうかに応じて、2~4つにとどめる必要があります。

バッファの取得数が4つより多い場合は、インデックスの再構築が必要な可能性があります。設定ファイルを再アクティベーションすることなく、インデックスを再構築することができます。
Oracleの書き込みレートのボトルネック

デフォルトでは、1つのバッファライターがすべてのダーティなOracleブロックをディスクに書き込みます。バッファライタープロセスが書き込みのために起動するたびに、共有メモリの一部がロックされ、事実上、データブロックを変更しているまたは読み込んでいるプロセスPostプロセスを含むがブロックされます。

これが恒常的な問題である場合、ライターの数を増やすことを検討してください。データベースのドキュメントを参照してください。

トランザクションサイズが小さい

通常、Postは各COMMITを受信した後に内部的な読み取り/リリースを実行します。これは、チェックポイントのリカバリプロセスの一環として、キューからそのデータを削除することを意味します。小規模なトランザクションの場合、これはターゲットシステム上で過剰なI/Oを発生させ、Postプロセスを遅らせる可能性があります。

ほとんどのトランザクションが小規模な場合は、Post SP_OPO_READRELEASE_INTERVALパラメータの値を変更してみてください。このパラメータの詳細については、『SharePlexリファレンスガイド』を参照してください。

シーケンスがキャッシュされない

レプリケーション内のシーケンスがキャッシュされない場合、レプリケーションのボリュームが不必要に増加します。

シーケンスをキャッシュします。レプリケートされたシーケンスがキーの一部である場合、それらのキーを含むテーブルをレプリケートし、レプリケーション設定からシーケンスを削除します。これでパフォーマンスが大幅に向上するはずです。

ulimitが低い

以下のようなエラーが表示される場合、ターゲットシステムのシステムファイル記述子の設定を増やす必要があります。

Error 07-24-08 12:11:40.360226 8693 12345 Poster error: /var/quest/ vardir/log/event_log: Too many open files (posting from ora102, queue prodsys, to ora10b)エラー07-24-08 12:11:40.360226 8693 12345ポスターエラー: /var/quest/ vardir/log/event_log: 開いているファイルが多すぎますora102、キューprodsyspostingからora10bへのポスト

ソリューション: ulimitをできるだけ最適値の1024に近い値に設定します。

ulimitは、以下のように、システムのハードリミット、またはセッションベースのソフトリミットのいずれかとして設定できます。

  • ハードリミットの設定:推奨ハードリミットを変更するには、rootユーザとシステムの再起動が必要ですが、値はSharePlexをサポートするための適切なレベルに固定されたままです。サポートについては、システム管理者にご相談ください。
  • ソフトリミットの設定: ソフトリミットの設定は、それが設定されたsp_copセッションの間のみ有効であり、その後はデフォルト値に戻ります。この値は、ハードリミットより低く、SharePlexでは低すぎる可能性があります。
compareプロセスのロック

repairコマンドは、repairプロセスの間、修復が必要なすべての行をロックします。または、1000行以上の非同期の行がある場合はテーブル全体をロックします。このため、Postが修復中のテーブルにデータを適用しようとすると、Postがブロックされる可能性があります。

repairプロセスが終了するまでPostを待機させたくない場合は、compareプロセスを強制終了させることができます。repairプロセスによるロックの問題を避けるため、ピーク時以外の時間帯に修復を行うことを検討してください。

CaptureとPostの速度の違い

SharePlexは、REDOログからレコードを読み込んで処理する方が、標準的なSQLステートメントでこれらの操作をターゲットデータベースにポストするよりも高速に行えます。

詳細については、Postプロセスの調整を参照してください。

アーカイブログディレクトリが満杯

Postが停止しているように見え、正常にシャットダウンされないが、イベントログにsp_opst_mt - operation taking too longsp_opst_mt - 操作に時間がかかりすぎていますというエラーしかない場合、ターゲットシステム上のアーカイブログディレクトリが一杯になっている可能性があります。その場合、Oracleは新しいログを作成できず、処理を中断します。PostはOracleを待っているため停止します。

古いアーカイブログの一部を別のデバイスに移動するか、削除して新しいアーカイブログのためのスペースを確保します。

コミット削減の問題

コミット削減が機能していない場合は、コミット後に有効なメッセージが利用できるほどレコードが迅速にディスパッチされていないことが原因である可能性があります。コミットメッセージの後に有効なメッセージが見つかった場合は、Postはコミットをスキップすることができます。それ以外の場合、Postはコミットを発行します。

これが問題かどうかを調べる1つの方法は、Postプロセスを完全に停止し、レプリケーションを通じて大量の小規模トランザクションを実行してから、Postプロセスを開始します。コミット削減が確認できない場合は、この問題を原因から除外できます。

Postが停止した

Postが停止した場合は、sp_ctrlstatusコマンドを実行して原因を探ります。

idleステータスは、postキューにポストするデータがないことを意味します。

stopped by userステータスは、SharePlexユーザがPostプロセスを停止したことを意味します。どのユーザが停止したかを調べるには、イベントログでユーザが発行したコマンドを確認します。

stopped due to errorステータスは、レプリケーションエラーまたはデータベースエラーによってPostが停止したことを意味します。

以下は、Postが予期せず停止する原因として考えられるものです。

問題点 説明 ソリューション
修正可能なデータベースエラー

修正可能なデータベースエラーが発生した場合にPostが停止することで、データが非同期になるリスクなしにユーザが問題を修正できるようになります。エラーと不良なSQLステートメントは、ターゲットシステム上の変数データディレクトリのlogサブディレクトリにあるdatabaseID_errlog.sqlファイルに記録されます。

ログファイル内の情報に基づいて問題を修正し、再度Postを開始します。Postは停止した時点から再開されます。

修正不可能なデータベースエラー

非同期状態など、修正できないデータベースエラーもあります。この場合、SharePlexはエラーをイベントログに記録し、エラーとSQLステートメントをdatabaseID_errlog.sqlファイルに書き込み、処理を続行します。ただし、修正不可能なエラーによってPostが停止することもあります。

エラーは修正できないもののPostの処理を続行したい場合は、databasemsglistファイルにエラーをリストし、SP_OPO_CONT_ON_ERRまたは SP_OPX_CONT_ON_ERRパラメータを1に設定します。これにより、SharePlexはこれらのエラーを無視してPostを続行するようになります。詳細については、DMLエラー発生時のPostの続行を参照してください。

ターゲットテーブルのロック

ターゲットテーブルがロックされている場合、PostプロセスはSQLステートメントを適用できず、エラーメッセージを生成します。このメッセージは、ユーザ、アプリケーション、またはジョブがテーブルにアクセスしており、非同期状態を引き起こしている可能性があることを意味します。または、Oracleターゲットの場合、repairコマンドがテーブルをロックしたことを意味します。

テーブルがロックされた原因を突き止め、アクセスの問題を解決しますrepairコマンドによる場合を除く。テーブルに対してDMLが実行された場合は、データを再同期する必要があるかもしれません。詳細については、ソーステーブルとターゲットテーブルを再同期する方法を参照してください。

名前付きexportキューがある場合の設定の非アクティベーション

名前付きexportキューを使用していて、設定を非アクティブにした場合、Postがキューから残りのデータをポストせずに、以下のエラーで停止することがあります。

sp_opst_mt (for o.qa920-o.qa920 queue q5) 15007 - Can't open poster queue que_NOEXIST: Queue does not exist.sp_opst_mt (for o.qa920-o.qa920 queue q5) 15007 - ポスターキューque_NOEXISTを開けません: キューが存在しません。

Postを開始し、レプリケーションを完了するには、SharePlexをシャットダウンし、再度起動します。

キュー名が長すぎる

キュー名が長すぎると、Postが停止します。

設定ファイルで名前付きキューに割り当てられている名前が15文字以下であることを確認してください。

Oracle新しいテーブルが追加されない

Oracleソースの場合、アクティベーション後に作成されたテーブルは自動的にレプリケーションに追加されます。

自動追加機能はパラメータによって制御されます。適切なパラメータが設定されていることを確認してください。詳細については、Oracle DDLレプリケーションの制御を参照してください。

Oracleオープンカーソルがなくなった

以下のエラーが表示された場合、Postの数が利用可能なオープンカーソルの数を超えています。

Warning: sp_opst_mt (for o.oracle-o.oracle queue oracle) Post has opened number cursors. No more available cursors! Exiting警告: sp_opst_mt (for o.oracle-o.oracle queue oracle) Postが複数のカーソルを開きました。もう利用可能なカーソルがありません! 終了します

Postには、ターゲットデータベースに対して一定数のオープンカーソルが必要です。

以下のSQLステートメントを使用して、現在のデータベースのOPEN_CURSORS値を表示します。

select value from V$PARAMETER where name = 'open_cursors' ;

SharePlexの適切なOPEN_CURSORS値を決定するには、「オープンカーソルの調整ページを参照してください。

その他の問題とソリューション

問題点 説明 ソリューション
SharePlexがマシン名を解決できない UnixやLinuxシステム間でマシン名を解決できないことがあります。 レプリケーションネットワーク内のすべてのサーバUnixとLinuxのIPアドレスと名前を、すべてのUnixとLinuxマシンの/etc/hostsファイルに追加します。
sp_copがCPU時間を使いすぎている SharePlexがオーバーヘッドアクティビティを頻繁に実行しすぎている可能性があります。

SP_COP_IDLETIMEパラメータを使用して、sp_copのアイドル時間を増やします。詳細については、『SharePlexリファレンスガイド』のパラメータのドキュメントを参照してください。

ソーステーブルの破損

ソーステーブルが破損している場合、またはレプリケートされたデータをターゲットデータベースにポストしたくない別の理由がある場合、テーブルをアクティブな設定から削除したり、他のオブジェクトのポストに影響を与えたりすることなく、そのテーブルのポストを防ぐことができます。

1つ以上のテーブルのポストを無効にするには、SP_OPO_DISABLE_OBJECT_NUMまたはSP_OPX_DISABLE_OBJECT_NUMパラメータを使用します。このパラメータの設定により、指定したオブジェクトIDのDML操作とDDL操作の両方のポストを無効にすることができます。このパラメータは、デフォルトでは無効になっています。ターゲットテーブルへのポストを再開する準備ができたら、パラメータを0にリセットしてパラメータを無効に戻します。詳細については、『 SharePlexリファレンスガイド』のパラメータのドキュメントを参照してください。

一部の列しかレプリケートされない 垂直分割レプリケーション用に設定されたテーブルがあり、そのテーブル名がワイルドカードも満たしている場合、垂直分割された特定のリストの方がワイルドカード化されたリストより優先されます。垂直分割は、同じテーブルのフルテーブルレプリケーションでは使用できません。 指定された列のレプリケーションが必要な場合は、アクションは必要ありません。詳細については、垂直分割レプリケーションの設定を参照してください。
コンフリクト解決でコンパイルエラーが発生する コンフリクト解決ルーチンでコンパイルに問題が発生した場合は、所有者と同じ名前のテーブルがあるかどうかを確認してください。PL/SQLの既知の問題により、SharePlexのコンフリクト解決ロジックは、所有者と同じ名前を持つテーブルのPL/SQLをコンパイルできません。Oracleは、この問題は修正しないと表明しています。詳細については、Oracle TAR 2577886.996を参照してください。 この問題はレプリケーションには影響しません。SharePlexは、所有者とテーブル名が同一のテーブルのデータをレプリケートします。

一般的なレプリケーションエラー

以下の表は、レプリケーション中に発生する可能性のある一般的なエラーメッセージについて説明しています。

sp_copエラーメッセージ 原因 ソリューション
sp_cop cannot setup; memory segment n in use.sp_copはセットアップできません。メモリセグメントnが使用中です。 sp_copを最後にシャットダウンしたとき、キューにアクセスするプロセスがまだ実行中でした。 これらのプロセスを強制終了します。SharePlexプロセスはsp_ で始まります。すべてが強制終了されると、sp_copが開始されるはずです。
Error: sp_cop can't setup shared memory statistics capability - exiting Error: sp_cop(shs) Cannot delete previous memory segment 303. Please check to see if any SharePlex processes are running (ps -ef | grep sp_). If there are some processes running then kill them and restart sp_cop.エラー: sp_copは共有メモリ統計機能をセットアップできません。 - 終了。エラー: sp_cop(shs) 以前のメモリセグメント303を削除できません。SharePlexプロセスが実行中かどうかを確認してくださいps -ef | grep sp_。実行中のプロセスがある場合は、強制終了してsp_copを再起動します。 同じ変数データディレクトリを指すSharePlexsp_copプロセスが既に1つ以上存在します。 SharePlexの複数のセッションを実行するには、それぞれ別個の変数データディレクトリを使用する必要があります。詳細については、SharePlexの複数のインスタンスの実行を参照してください。
Captureエラーメッセージ    
Capture time limit (300 sec) exceeded.Captureの時間制限300秒を超えました。 Captureがレコードを処理していません。REDOログに問題がある可能性があります。特定の秒数が経過してもCaptureがレコードを処理できない場合、Captureは停止してレコードをログに記録し、このメッセージを返します。 考えられる原因については、「OracleのCapture関連の問題ページを参照してください。問題の原因を特定できない場合は、ログラップが発生する前に、Questサポートに連絡してください。
(Oracle) Log wrap detectedログラップが検出されました REDOログがラップされ、Captureがアーカイブログを見付けることができません。 アーカイブログが利用できる場合は、アーカイブログを解凍してアーカイブ・ログ・ディレクトリに復元します。SharePlexは、まずOracleアーカイブ・ログ・リストでアーカイブログを検索し、次にSP_OCT_ARCH_LOCパラメータによって指定された場所でアーカイブログを検索します。このパラメータには、常に正しいアーカイブ・ログ・ディレクトリを設定する必要があります。アーカイブログに圧縮を使用する場合は、SharePlexの処理が終了するまで圧縮しないでください。どれがSharePlexの現在のログであるかを確認するには、ソースシステムでsp_ctrl で[detail]オプションを指定して、show captureコマンドを実行します。現在のログより前に生成されたログも圧縮できます。このエラーは、アーカイブされたログが破損している場合にも発生することに注意してください。
Postのエラーメッセージ    
operation taking too long.操作に時間がかかりすぎています。 ターゲットインスタンスへのSQLステートメントの適用に、内部的に許容される時間より長い時間がかかっています。 詳細については、OracleのPost関連の問題を参照してください。
Rowid not found行IDが見つかりません SharePlexがターゲットデータベースで更新する正しい行を見付けることができません。 ターゲット上の行を削除した可能性のあるトリガ、プロセス、ユーザがないか確認します。詳細については、同期の問題の解決を参照してください。
Database not available.データベースを利用できません。 Postがターゲットデータベースにログインできません。 データベースが稼働していることを確認し、SharePlexデータベースアカウントのパスワードが変更されていないかどうかを調べます。
Oracle関連のエラーメッセージ    
Can’t access OBJ$TableOBJ$テーブルにアクセスできない SharePlexがデータ辞書にアクセスできません。レプリケートするためにはデータ辞書にアクセスする必要があります。 O7_DICTIONARY_ACCESSIBILITYというOracleチューニングパラメータをチェックし、TRUEデフォルトに設定されていることを確認してください。
Forward and backward operation counts do not match...前進と後退の動作カウントが一致しません... メッセージの順序が正しくない可能性があります。 OracleがSharePlexより前にシャットダウンされたかどうかを調べます。これは、SharePlexがエラーを返す原因となり、まれにキューを破損させることもあります。適切な手順は、SharePlexをシャットダウンしてからOracleをシャットダウンすることです。この問題の解決について支援が必要な場合は、Questサポートにお問い合わせください。
Error: sp_opst_mt (for o.blues920-o.ora9 queue bluesky) 15033 - Failed to execute SQL on table: QA.T_DEST_1: ORA-00001: unique constraint (.) violated.エラー: sp_opst_mt (for o.blues920-o.ora9 queue bluesky) 15033 - テーブルでSQLの実行に失敗しました: QA.T_DEST_1: ORA-00001: 一意制約 (.) に違反しました。 ソースシステムで一意制約に違反しました。この変更はREDOログに記録されましたが、Oracleがこれをロールバックしました。ロールバックはREDOログにも入力されました。SharePlexはターゲットで制約違反を検出します。 このメッセージは無視してください。Oracleが問題の操作をロールバックしたため、テーブルはまだ同期しています。これは、Oracleが違反を処理する方法により、避けられないエラーです。
SQLキャッシュのエラーメッセージ    
Warning: Too many concurrent transactions.警告: 同時トランザクションが多すぎます。SQLキャッシュ機能を無効にします。 SQLキャッシュサイズが1に設定されており、さらにカーソルが必要です。この場合、SharePlexはSQLキャッシュ機能を無効にします。 これが意図した設定であれば、アクションは必要ありません。詳細については、SQLキャッシュの調整を参照してください。

Warning: Running out of cursors. Number of cursors opened so far is number. Will attempt to decrease SQL Cache size.警告: カーソルが不足しています。これまでにオープンされたカーソルの数はnumberです。SQLキャッシュサイズの削減を試みます。

または...

Notice: Shrinking SQL Cache size to number per session.通知: SQLキャッシュサイズをセッションあたりの数まで縮小します。

Postが最大カーソル数を超えることを検出し、SQLキャッシュサイズを小さくしようとしています。 値が1になり、まだ十分な数のカーソルがない場合を除き、アクションは必要はありません。詳細については、SQLキャッシュの調整を参照してください。
SQL Cache disabled.SQLキャッシュが無効です。 SQLキャッシュ機能が無効になっています。 これが意図した設定であれば、アクションは必要ありません。詳細については、SQLキャッシュの調整を参照してください。
ヒントファイルのエラーメッセージOracleのみ    
15050 – hint file not foundヒントファイルが見つかりません

SharePlexは、使うかどうかに関係なく、hints.SIDファイルを探します。このファイルの保存場所は、SharePlex変数データディレクトリのdataサブディレクトリです。このファイルが移動または削除された場合、SharePlexはこのエラーメッセージを返します。

このメッセージを表示させないようにするには、変数データディレクトリのdataサブディレクトリに空のヒントファイルを作成し、このファイルにhints.SIDという名前を付けます。

15051 – missing column in the hint file (either table or index name)ヒントファイルに列がありませんテーブルまたはインデックス名

15052 – syntax error for tablename tablenameのシンタックスエラー

15053 – syntax error for indexnameindexnameのシンタックスエラー

ヒントファイルが適切に設定されていません。 詳細については、OracleのINDEXヒントの使用を参照してください。
15054 – source table’s object_id not found in object cache ソーステーブルのobject_idがオブジェクトキャッシュで見つかりませんでした ヒントファイルに、アクティブな設定にないソーステーブルが含まれています。ヒントファイル内のすべてのテーブルが、アクティブな設定にリストされている必要があります。 このテーブルが設定内にある場合、所有者名とテーブル名が設定と同じスペルでヒントファイルに記述されていることを確認してください。
15055 – more than n valid entries were entered into the hints file - ヒントファイルにn件を超える有効なエントリが入力されました ヒントファイルに入力できるのは、SP_OPO_HINTS_LIMITパラメータで設定された値と同じ数のテーブルとインデックスの組み合わせだけです。 一部のテーブルとインデックスの組み合わせを削除するか、SP_OPO_HINTS_LIMITの値を増やします。このパラメータの詳細については、『SharePlexリファレンスガイド』のPostパラメータのドキュメントを参照してください。
15056 – error allocation memory for hints ヒントのメモリ割り当てエラー これはシステムレベルのメモリの問題があることを示しています。ヒントファイル自体は大量のメモリを必要としません。 システムメモリが十分であると思われる場合は、Postプロセスを一旦停止し、再度開始してください。ヒントファイルを使用していない場合、このエラーは無視できます。
17000 – error opening hint fileヒントファイルを開くときにエラーが発生しました SharePlexがヒントファイルを開くことができません。 ファイルが破損していないかをチェックします。ファイルが有効である場合、Postプロセスに十分な読み取り権限があることを確認します。詳細については、OracleのINDEXヒントの使用を参照してください。
環境関連のエラーメッセージ    
sp_opst_mt: pid=num date/time src host/ sid=db01:N2PB /var/quest/vardir/log/ event_log: Too many open filessp_opst_mt: pid=num date/time src host/ sid=db01:N2PB /var/quest/vardir/log/ event_log: 開いているファイルが多すぎます システムファイル記述子の設定が1024ではありません。

ulimitを1024に設定します。

ulimitは、以下のように、システムのハードリミット、またはセッションベースのソフトリミットのいずれかとして設定できます。

  • ハードリミットの設定:推奨ハードリミットを変更するには、rootユーザとシステムの再起動が必要ですが、値はSharePlexをサポートするための適切なレベルに固定されたままです。サポートについては、システム管理者にご相談ください。
  • ソフトリミットの設定: ソフトリミットの設定は、それが設定されたsp_copセッションの間のみ有効であり、その後はデフォルト値に戻ります。この値は、ハードリミットより低く、SharePlexでは低すぎる可能性があります。
06/29/00 08:05 System call error: sp_ocap(que) (for o.QA11 queue o.QA11) No space left on device devname 06/29/00 08:05 Internal error: sp_ocap (for o.QA11 queue o.QA11) 10705 - writecommit failed que_BUFWRTERR: Error writing buffer to file 06/29/00 08:05 Process exited sp_ocap (for o.QA11 queue o.QA11) [pid = 8692] -exit(1)06/29/00 08:05 システムコールエラー: sp_ocap(que) (for o.QA11 queue o.QA11) デバイスdevnameに容量が残っていません 06/29/00 08:05 内部エラー: sp_ocap (for o.QA11 queue o. QA11) 10705 - writeecommit failed que_BUFWRTERR: ファイルのバッファ書き込みエラー 06/29/00 08:05 プロセスが終了しました。que_BUFWRTERR: ファイルへのバッファ書き込みエラー 06/29/00 08:05 プロセスが終了しました sp_ocap (for o.QA11 queue o.QA11) [pid = 8692] -exit(1) SharePlexがディスク上のキューの容量を使い切りました。 詳細については、ディスク容量不足を解消する方法を参照してください。
gethostbyname name failed - exiting名前のgethostbynameの失敗 - 終了

ローカルのhostsファイルが適切に設定されていません。

hostsファイルUnixおよびLinuxの/etc/hostsでホスト名が正しく指定されていません。このシステムがクラスタの一部でない場合は、ファイル内の名前を修正してください。このシステムがクラスタの一部である場合は、仮想IPアドレスをhostsファイルのホストエイリアスにマッピングする必要があります。クラスタ内でSharePlexを設定する方法については、『SharePlexインストールおよびセットアップガイド』を参照してください。

その他のエラーメッセージ    
Snapshot too oldスナップショットが古すぎます SharePlexで必要とされる読み取り一貫性ビューが使用できなくなりました。 ロールバックセグメントのサイズを増やします。
Parameter paramname does not exist in the paramdefaults file. Using hard coded default value. Please make sure that your param-defaults file is the correct version.paramnameパラメータがparamdefaultsファイルに存在しません。ハードコードされたデフォルト値を使用します。param-defaultsファイルが正しいバージョンであることを確認してください。

SharePlexは、参照する必要のあるパラメータを見付けることができません。実行中のSharePlexのバージョンより、param-defaultsファイルのバージョンが古いです。誰かがダウンロードしたパッチを使用してSharePlexバイナリを更新し、最新のparam-defaultファイルをインストールしていない可能性があります。

SharePlexを手動で更新する場合は、更新されたparam-defaultsファイルがないかどうかを必ず確認してください。

Invalid DATE format detected in record with rowid=rowid, on obj object_id. See capture log for detail.obj object_idのrowid=rowidのレコードで無効なDATE形式が検出されました。詳細については、captureログを参照してください。 ユーザまたはアプリケーションが無効な日付値をOracleデータベースに入力し、データベースの有効性チェックをバイパスしました。 データベースのチェックで検出されなかった場合にSharePlexが日付と時刻の形式を修正できるようにSP_OCT_DEF_パラメータを設定します。 『SharePlexリファレンスガイド』のSP_OCT_DEFパラメータのドキュメントを参照してください。
shs_SHMERR: an error occurred with shared memory.shs_SHMERR: 共有メモリでエラーが発生しました。 SharePlexsp_copをシャットダウンせずに、qviewユーティリティを実行しました。 SharePlexをシャットダウンして、qviewを再実行します。
関連ドキュメント

The document was helpful.

評価を選択

I easily found the information I needed.

評価を選択