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 Inがインバウンド・サーバーを識別できない

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クライアント・アプリケーションにストリームされるはずのデータベースの変更が、適用ハンドラまたはクライアント・アプリケーションに到達しません。

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

問題: Streamで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 SupportではXStream Inの詳細なヘルプ情報を提供できます。

問題に対するその他の解決策は、http://support.oracle.comのMy Oracle Supportで確認できます。

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