12 XStream Inのトラブルシューティング

XStream In構成に関する問題を診断して修正できます。

12.1 XStream Inでの問題の診断

いくつかの異なる手法を使用してXStream Inでの問題を診断できます。

12.1.1 アラートの表示

アラートとは、潜在的に問題があったり、クリティカルのしきい値を超えた場合に発せられる警告のことです。

アラートには2つのタイプがあります。

  • ステートレス: 必ずしもシステムの状態と結び付かない単一イベントを示すアラート。たとえば、取得が特定のエラーで中断したことを示すアラートはステートレス・アラートです。

  • ステートフル: 特定のシステム状態に関連するアラート。ステートフル・アラートは、通常は数値に基づき、警告レベルとクリティカル・レベルでしきい値が定義されます。たとえば、警告レベルが85%でクリティカル・レベルが95%の現在のStreamsプール・メモリー使用率に関するアラートは、ステートフル・アラートです。

インバウンド・サーバーが中断すると、Oracleデータベースによってステートレス・アラートが生成されます。

Streamsプールのメモリー使用量がSTREAMS_POOL_USED_PCTメトリックで指定されている割合を超えた場合、Oracle DatabaseによってステートフルXStreamアラートが生成されます。このメトリックは、DBMS_SERVER_ALERTパッケージのSET_THRESHOLDプロシージャを使用して管理できます。

Oracle Enterprise Manager Cloud Controlでアラートを表示するか、次のデータ・ディクショナリ・ビューを問い合せることができます。

  • DBA_OUTSTANDING_ALERTSビューでは、現行のステートフル・アラートが記録されます。DBA_ALERT_HISTORYビューでは、クリアされたステートレス・アラートおよびステートフル・アラートが記録されます。たとえば、Streamsプールでのメモリー使用量が指定されたしきい値を超えると、DBA_OUTSTANDING_ALERTSビューにステートフル・アラートが記録されます。

  • DBA_ALERT_HISTORYデータ・ディクショナリ・ビューには、DBA_OUTSTANDING_ALERTSビューからクリアされたアラートが表示されます。たとえば、Streamsプールでのメモリー使用量が指定されたしきい値を下回ると、DBA_OUTSTANDING_ALERTSビューに記録されていたアラートがクリアされ、DBA_ALERT_HISTORYビューに移動します。

たとえば、現行のステートフル・アラートをリストするには、DBA_OUTSTANDING_ALERTSビューで次の問合せを実行します。

COLUMN REASON HEADING 'Reason for Alert' FORMAT A35
COLUMN SUGGESTED_ACTION HEADING 'Suggested Response' FORMAT A35
 
SELECT REASON, SUGGESTED_ACTION 
   FROM DBA_OUTSTANDING_ALERTS
   WHERE MODULE_ID LIKE '%XSTREAM%';

ステートレス・アラートと、クリアされたXStreamステートフル・アラートをリストするには、DBA_ALERT_HISTORYビューで次の問合せを実行します。

COLUMN REASON HEADING 'Reason for Alert' FORMAT A35
COLUMN SUGGESTED_ACTION HEADING 'Suggested Response' FORMAT A35
 
SELECT REASON, SUGGESTED_ACTION 
   FROM DBA_ALERT_HISTORY 
   WHERE MODULE_ID LIKE '%XSTREAM%';

関連項目:

12.1.2 トレース・ファイルとアラート・ログでの問題のチェック

インバウンド・サーバーに関するメッセージは、プロセスが実行されているデータベースのトレース・ファイルに記録されます。

これらのトレース・ファイル・メッセージはXStream In構成の問題を特定し、解決するのに役立ちます。

バックグラウンド・プロセスのすべてのトレース・ファイルは、自動診断リポジトリに書き込まれます。トレース・ファイル名はオペレーティング・システム固有ですが、通常、各ファイルにはそれを書き込むプロセスの名前が含まれます。

たとえば、一部のオペレーティング・システムでは、プロセスのトレース・ファイル名はsid_xxxx_iiiii.trcとなります。その意味は次のとおりです。

  • sidはデータベースのシステム識別子です

  • xxxxはプロセスの名前です

  • iiiiiはオペレーティング・システムのプロセス番号です

また、取得プロセスとアウトバウンド・サーバーの両方のwrite_alert_logパラメータをyに設定できます。このパラメータにy(デフォルト)を設定すると、取得プロセスまたはアウトバウンド・サーバーが停止した理由を示すメッセージがデータベースのアラート・ログに書き込まれます。

DBMS_XSTREAM_ADMパッケージのSET_PARAMETERプロシージャを使用してtrace_levelインバウンド・サーバー適用パラメータを設定すると、トレース・ファイル内の情報を制御できます。

インバウンド・サーバーは、APnnという名前を持つOracleバックグラウンド・プロセスです。ここで、nnには文字および数字が含まれることがあります。たとえば、一部のオペレーティング・システムでは、インバウンド・サーバーが実行されているデータベースのシステム識別子がhqdbで、インバウンド・サーバー番号が01であれば、そのインバウンド・サーバーのトレース・ファイル名はhqdb_AP01で始まります。

インバウンド・サーバーでは、他のプロセスも使用されます。インバウンド・サーバーに関する情報は、これらのプロセスの1つ以上のトレース・ファイルに記録される場合があります。リーダー・サーバーと適用サーバーのプロセス名はASnnであり、nnには文字および番号が含まれます。したがって、一部のオペレーティング・システムでは、インバウンド・サーバーが実行されているデータベースのシステム識別子がhqdbであり、プロセス番号が01であれば、インバウンド・サーバーで使用されるプロセスに関する情報を含むトレース・ファイルの名前はhqdb_AS01で始まります。

関連項目:

12.2 XStream Inの問題と解決策

XStream Inに関する一般的な問題の解決策を実装できます。

一般的には、Oracle Streams適用プロセスをトラブルシューティングするのと同じ方法で、XStreamインバウンド・サーバーをトラブルシューティングできます。

関連項目:

詳細は、Oracle Streams概要および管理を参照

12.2.1 XStreamでインバウンド・サーバーを識別できない

XStream In構成でインバウンド・サーバーを識別できない場合、インバウンド・サーバーのキューに対する複数のサブスクライバがある可能性があります。

XStream In構成でインバウンド・サーバーを識別できない場合、次のエラーが返されます。

ORA-26840: STREAMS unable to identify an apply for the source database "%s"

次の項では、考えられる問題とその解決策について説明します。

問題: インバウンド・サーバーのキューに対する複数のサブスクライバ

ORA-26840エラーは、インバウンド・サーバーによって使用されるキューに対する複数のサブスクライバがあることを示しています。サブスクライバには、インバウンド・サーバー、アウトバウンド・サーバー、適用プロセス、伝播が含まれることがあります。

インバウンド・サーバーのキューに対する複数のサブスクライバがあるかどうかを確認するには、次の手順を実行します。

  1. インバウンド・サーバー・データベースにXStream管理者として接続します。

    SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。

  2. 次の問合せを実行します。

    SELECT OWNER, QUEUE_NAME, CONSUMER_NAME, ADDRESS 
      FROM DBA_QUEUE_SUBSCRIBERS;
    

    出力をインバウンド・サーバーのキューに制限するために、問合せにWHERE句を追加できます。

解決策

問題を解決する手段は、次のとおりです。

  • 問合せがインバウンド・サーバーのキューに対する複数のサブスクライバを戻す場合、サブスクライバを再構成して、インバウンド・サーバーが唯一のサブスクライバになるようにします。

関連項目:

XStream Inの構成

12.2.2 インバウンド・サーバーでORA-03135エラーが発生する

インバウンド・サーバーとXStreamクライアント・アプリケーション間の接続が切断された場合、クライアント・アプリケーションを再起動します。

インバウンド・サーバーで次のエラーが発生します。

ORA-03135: connection lost contact

問題: インバウンド・サーバーとクライアント・アプリケーション間の接続が切断される

ORA-03135エラーで、インバウンド・サーバーとXStreamクライアント・アプリケーション間の接続が切断されたことが示されます。

解決策

問題を解決する手段は、次のとおりです。

  • XStreamクライアント・アプリケーションを再起動します。

12.2.3 変更がXStream Inのクライアント・アプリケーションに到達できない

XStream In構成で、適用ハンドラまたはXStreamクライアント・アプリケーションにストリームされるはずのデータベースの変更が、適用ハンドラまたはクライアント・アプリケーションに到達しません。

次の項では、考えられる問題および解決策を説明します。

問題: LCRがストリームでブロックされる

LCRがインバウンド・サーバーに到達した後にブロックされることがあります。たとえば、インバウンド・サーバーにエラーが発生し、トランザクションをエラー・キューに移動している場合や、別の問題が発生している可能性があります。

ストリームでLCRを追跡するには、次のいずれかの方法を使用します。

  • message_tracking_frequency適用パラメータを1または他の比較的低い値に設定する

    この方法の使用時にLCRの追跡を無効にするには、message_tracking_frequency適用パラメータをNULLに設定するか、セッションを終了します。

  • DBMS_XSTREAM_ADMパッケージのSET_MESSAGE_TRACKINGプロシージャを実行する

    この方法の使用時にLCRの追跡を無効にするには、SET_MESSAGE_TRACKINGプロシージャでtracking_labelパラメータをNULLに設定するか、セッションを終了します。

これらの方法のいずれかを使用した後は、V$XSTREAM_MESSAGE_TRACKINGビューを使用して、ストリームでLCRの進捗を監視します。Oracle GoldenGateを使用してLCRを処理する場合は、V$GOLDENGATE_MESSAGE_TRACKINGビューを使用して、Oracle GoldenGateコンポーネントを介してLCRの進捗を監視できます。ストリームでLCRを追跡することによって、LCRがブロックされている場所を判断できます。

解決策

問題を修正するには、次の手順を実行します。

  • LCRがブロックされる理由に基づいて適切なアクションを実行します。たとえば、次の処理でこの問題を修正できることがあります。

    • インバウンド・サーバーでエラーが発生している場合は、エラーの原因となっている問題を修正します。

    • 適用ハンドラでLCRが正しく処理されていない場合、適用ハンドラを修正します。

    • Oracle GoldenGateコンポーネントでLCRが正しく処理されていない場合、Oracle GoldenGateコンポーネントを修正します。

関連項目:

12.3 XStream Inに関する追加ヘルプを取得する方法

Oracleサポートでは、XStream Inに関する追加ヘルプを提供できます。

問題に対する他の解決策は、http://support.oracle.comのMy Oracle Supportを確認してください。

Oracleサポートの詳細は、http://www.oracle.com/support/contact.htmlを参照してください。