12 XStream Inのトラブルシューティング
XStream In構成に関する問題を診断して修正できます。
- XStream Inでの問題の診断
いくつかの異なる手法を使用してXStream Inでの問題を診断できます。 - XStream Inでの問題と解決策
XStream Inに関する一般的な問題の解決策を実装できます。 - XStream Inの詳細なヘルプを求める方法
Oracle Supportを使用して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インバウンド・サーバーをトラブルシューティングできます。
- XStream Inがインバウンド・サーバーを識別できない
XStream In構成がインバウンド・サーバーを識別できない場合、インバウンド・サーバーのキューに複数のサブスクライバがある可能性があります。 - インバウンド・サーバーでORA-03135エラーが発生する
インバウンド・サーバーとXStreamクライアント・アプリケーションの間の接続が切断された場合は、クライアント・アプリケーションを再起動します。 - XStream In構成で変更がクライアント・アプリケーションに到達しない
XStream In構成で、適用ハンドラまたは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
エラーは、インバウンド・サーバーによって使用されるキューに複数のサブスクライバがあることを示しています。サブスクライバには、インバウンド・サーバー、アウトバウンド・サーバー、適用プロセス、伝播などがあります。
インバウンド・サーバーのキューへの複数のサブスクライバがあるかどうかを確認する手順:
-
インバウンド・サーバー・データベースに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クライアント・アプリケーションにストリームされるはずのデータベースの変更が、適用ハンドラまたはクライアント・アプリケーションに到達しません。
次の項では、考えられる問題とそれらの解決策について説明します。
問題: 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コンポーネントを修正してください。
-
関連項目:
-
ストリームを介したLCRの追跡の詳細は、Oracle Streams概要および管理を参照してください。
-
message_tracking_frequency
適用パラメータの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください。 -
Oracle GoldenGateの詳細は、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
を参照してください。