0

テストスイートがソケット例外でランダムに失敗するという問題に直面しています


oracle.jdbc.driver.T4CStatement 1267 - Throwing SQLException: java.net.SocketException: Software caused connection abort: recv failed 

特定のテストケースのセットが特定の順序で実行されると、テストスイートはこの例外で失敗します。oracle jdbcドライバーログを有効にした後、上記のエラーログを取得しました。このエラーの原因となるクエリは、常に「DROPSEQUENCEクエリ」です。このクエリは実行フロー中に「n」回実行されるため、特別なことは何もありません。

ブログリンクの1つは、上記のエラーは、クライアントが予期する前にサーバー側のソケットが閉じられたためであると指摘しています。この点についてさらにトラブルシューティングするために、Oracle TNSListenerログ(listener.logファイル)を分析しようとしましたが、ログファイルにはソケットCONNECT関数呼び出しに関する情報しか含まれていないため、多くの情報を収集できませんでした。

  1. ブログのリンクに記載されているものに加えて、上記のエラーの考えられる原因は何でしょうか?

  2. ソケット通信に関するより詳細な情報を提供するようにOracleTNSListenerを構成するにはどうすればよいですか?たとえば、サーバーソケットのクローズイベントが発生したときのトレース情報。

誰かがこのエラーの考えられる原因を指摘したり、上記の2つのポイントに基づいてこの問題をさらにトラブルシューティングするのに役立つ情報を提供していただければ幸いです。

4

1 に答える 1

1

lsnrctl ユーティリティにアクセスできる場合は、トレース レベルを設定できます。

LSNRCTL> show trc_level
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx)(PORT=1521)))
LISTENER parameter "trc_level" set to off
The command completed successfully
LSNRCTL> set trc_level admin
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx)(PORT=1521)))
LISTENER parameter "trc_level" set to admin
The command completed successfully
LSNRCTL> show trc_level
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx)(PORT=1521)))
LISTENER parameter "trc_level" set to admin
The command completed successfully
LSNRCTL>

ドキュメントから、trc_level は次のいずれかです。

次のいずれかのトレース レベルを指定します。

  • トレース出力なしの場合はオフ
  • ユーザー トレース情報用のユーザー
  • 管理トレース情報については admin
  • Oracleサポート・サービスのトレース情報のサポート
于 2011-07-08T20:25:05.197 に答える