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%';
関連項目:
-
アラートおよびメトリックしきい値の管理の詳細は、Oracle Database 2日でパフォーマンス・チューニング・ガイドを参照
-
アラートの詳細と、新規アラートの生成時に通知を受信するための
ALERT_QUE
キューのサブスクライブの詳細は、Oracle Database管理者ガイドを参照 -
DBMS_SERVER_ALERT
パッケージの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照
12.1.2 トレース・ファイルとアラート・ログでの問題のチェック
インバウンド・サーバーに関するメッセージは、プロセスが実行されているデータベースのトレース・ファイルに記録されます。
これらのトレース・ファイル・メッセージはXStream In構成の問題を特定し、解決するのに役立ちます。
バックグラウンド・プロセスのすべてのトレース・ファイルは、自動診断リポジトリに書き込まれます。トレース・ファイル名はオペレーティング・システム固有ですが、通常、各ファイルにはそれを書き込むプロセスの名前が含まれます。
たとえば、一部のオペレーティング・システムでは、プロセスのトレース・ファイル名はsid_xxxx_iiiii
.trc
となります。その意味は次のとおりです。
-
sid
はデータベースのシステム識別子です -
xxxx
はプロセスの名前です -
iiiii
はオペレーティング・システムのプロセス番号です
また、取得プロセスとアウトバウンド・サーバーの両方のwrite_alert_log
パラメータをy
に設定できます。このパラメータにy
(デフォルト)を設定すると、取得プロセスまたはアウトバウンド・サーバーが停止した理由を示すメッセージがデータベースのアラート・ログに書き込まれます。
DBMS_XSTREAM_ADM
パッケージのSET_PARAMETER
プロシージャを使用してtrace_level
インバウンド・サーバー適用パラメータを設定すると、トレース・ファイル内の情報を制御できます。
インバウンド・サーバーは、AP
nn
という名前を持つOracleバックグラウンド・プロセスです。ここで、nn
には文字および数字が含まれることがあります。たとえば、一部のオペレーティング・システムでは、インバウンド・サーバーが実行されているデータベースのシステム識別子がhqdb
で、インバウンド・サーバー番号が01
であれば、そのインバウンド・サーバーのトレース・ファイル名はhqdb_AP01
で始まります。
インバウンド・サーバーでは、他のプロセスも使用されます。インバウンド・サーバーに関する情報は、これらのプロセスの1つ以上のトレース・ファイルに記録される場合があります。リーダー・サーバーと適用サーバーのプロセス名はAS
nn
であり、nn
には文字および番号が含まれます。したがって、一部のオペレーティング・システムでは、インバウンド・サーバーが実行されているデータベースのシステム識別子がhqdb
であり、プロセス番号が01
であれば、インバウンド・サーバーで使用されるプロセスに関する情報を含むトレース・ファイルの名前はhqdb_AS01
で始まります。
関連項目:
-
トレース・ファイルおよびアラート・ログの詳細と、それらの名前および場所の詳細は、Oracle Database管理者ガイドを参照
-
trace_level
適用パラメータの設定の詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照 -
トレース・ファイルの名前および場所の詳細は、オペレーティング・システム固有のOracleドキュメントを参照
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
エラーは、インバウンド・サーバーによって使用されるキューに対する複数のサブスクライバがあることを示しています。サブスクライバには、インバウンド・サーバー、アウトバウンド・サーバー、適用プロセス、伝播が含まれることがあります。
インバウンド・サーバーのキューに対する複数のサブスクライバがあるかどうかを確認するには、次の手順を実行します。
-
インバウンド・サーバー・データベースにXStream管理者として接続します。
SQL*Plusでのデータベースへの接続の詳細は、Oracle Database管理者ガイドを参照してください。
-
次の問合せを実行します。
SELECT OWNER, QUEUE_NAME, CONSUMER_NAME, ADDRESS FROM DBA_QUEUE_SUBSCRIBERS;
出力をインバウンド・サーバーのキューに制限するために、問合せに
WHERE
句を追加できます。
解決策
問題を解決する手段は、次のとおりです。
-
問合せがインバウンド・サーバーのキューに対する複数のサブスクライバを戻す場合、サブスクライバを再構成して、インバウンド・サーバーが唯一のサブスクライバになるようにします。
関連項目:
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コンポーネントを修正します。
-
関連項目:
-
ストリームを介したLCRの追跡の詳細は、Oracle Streams概要および管理を参照
-
message_tracking_frequency
適用パラメータの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照 -
Oracle GoldenGateの詳細は、Oracle GoldenGateのドキュメントを参照してください
12.3 XStream Inに関する追加ヘルプを取得する方法
Oracleサポートでは、XStream Inに関する追加ヘルプを提供できます。
問題に対する他の解決策は、http://support.oracle.com
のMy Oracle Supportを確認してください。
Oracleサポートの詳細は、http://www.oracle.com/support/contact.html
を参照してください。