Amazon Relational Database Service (Amazon RDS) for Oracle DB インスタンスに接続しようとすると、"javasqlSQLException: ソケットから読み取るデータがありません" というエラーが発生します。
解決策
javasqlSQLException: ソケットから読み取るデータがありませんというエラーが発生します。これは、Oracle サーバーとクライアント JDBC ドライバーの間の接続に問題があることが原因です。
これらの接続障害の最も一般的な原因と解決策を次に示します。
ネットワークの中断により接続が突然停止した
インスタンスの alert.log ファイルで、アプリケーション側から接続がタイムアウトしたときに記録される TNS タイムアウトエラーを確認します。
RDS インスタンスのアラートログアクセスに関する詳細については、「Amazon RDS for Oracle のデータベースログファイル」を参照してください。
サーバー側の Oracle でエラーが発生し、接続が停止した
alert.log ファイルで、ORA-0600 または ORA-07445 を確認します。Oracle での特定のエラーに関するトレースダンプを収集します。Oracle サポートが、これらのエラーに対して既知の修正を提供しているかどうかを確認してください。
クライアントとサーバーの接続がアクティブではない
SQLNET.EXPIRE_TIME パラメータを指定された間隔に設定して、クライアントとサーバーの接続がアクティブであることを確認するプローブを送信します。
詳細については、Oracle のウェブサイトで「SQLNET.EXPIRE_TIME」を参照してください。
RDS for Oracle インスタンスが使用できないか、JDBC クライアントが Oracle サーバーへの既存の接続を使用しようとしたときに再起動された
RDS インスタンスのイベントを取得します。次に、JDBC クライアントから接続が確立されたときに、インスタンスが再起動または停止されたかどうかを確認します。
RDS for Oracle インスタンスへの接続に使用している JDBC ドライバーに互換性がない
JDBC ドライバーのバージョンが DB インスタンスと互換性があることを確認します。互換性のある JDBC ドライバのリストについては、Oracle のウェブサイトで「Oracle Fusion ミドルウェアがサポートするシステム構成」を参照してください。JDBC ドライバーに互換性がない場合は、まずソースコード内の最新の JAR ファイルをダウンロードします。次に、データベースへの接続を作成するクラスをコンパイルするときに、このファイルをクラスパスに含めます。
詳細については、「JDBC ドライバーのダウンロード」を参照してください。
クライアント側のメモリコンポーネントが原因でタイムアウトが発生する
Oracle Data Integrator のクライアント側に、望ましくないタイムアウトの原因となるメモリコンポーネントがないかどうかを確認します。クライアント側で、これらのコンポーネントに正しい値を設定してください。
関連情報
ODI マッピングまたは統合インターフェイスで、ソケットから読み込むデータがないというエラーが発生する (Oracle のウェブサイト)
Java マシンと ODI で使用する JDBC ドライバーとの互換性マトリクス (Oracle のウェブサイト)
ODI で Java オプション (メモリヒープの制限、Java 以外のライブラリの場所など) を定義する方法 (Oracle のウェブサイト)