web-dev-qa-db-ja.com

Oracle 11g接続リセットエラー

シンjdbcドライバーを使用して64ビットのRed Hat Linux上のOracle 11gに接続しようとすると、以下のエラーが表示されます。誰もがこれをトラブルシューティングする方法にもっと光を投げることができれば非常に感謝します。

 Caused by: Java.net.SocketException: Connection reset
    at Java.net.SocketOutputStream.socketWrite(SocketOutputStream.Java:113)
    at Java.net.SocketOutputStream.write(SocketOutputStream.Java:153)
    at Oracle.net.ns.DataPacket.send(DataPacket.Java:199)
    at Oracle.net.ns.NetOutputStream.flush(NetOutputStream.Java:211)
    at Oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.Java:227)
    at Oracle.net.ns.NetInputStream.read(NetInputStream.Java:175)
    at Oracle.net.ns.NetInputStream.read(NetInputStream.Java:100)
    at Oracle.net.ns.NetInputStream.read(NetInputStream.Java:85)
    at Oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.Java:123)
    at Oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.Java:79)
    at Oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.Java:1122)
    at Oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.Java:1099)
    at Oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.Java:288)
    at Oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.Java:191)
    at Oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.Java:366)
    at Oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.Java:752)
    at Oracle.jdbc.driver.T4CConnection.logon(T4CConnection.Java:366)
10
John C

変更点など、問題の詳細は含まれていませんか?これは新しい構成ですか、それとも突然機能しなくなりましたか?十分な接続が利用可能かどうか知っていますか?これはすべての接続で発生しますか、それとも断続的ですか?

ログオンプロセス中にエラーが発生していることを考えると、いくつかの可能性があります。

  1. ネットワーク障害
  2. 接続の最大数を使い果たしたため、Oracleがハングアップしました。
  3. ファイアウォールの制限
  4. データベースサーバーまたはリスナーに問題があります。セッションを提供する処理は、開かれた後にクラッシュする可能性があります。

アクティブな接続の数と最大接続を確認する方法については、次のstackoverflowスレッドを確認してください。問題が発生した場合は、「ORA-00018:セッションの最大数を超えました」というエラーが発生すると予想されるため、問題ではない可能性があります。しかし、チェックする価値があります。

Oracleデータベースへの許可された接続の最大数を確認する方法

6
Brandon

非常によく似たものがあり、32ビットから64ビットOSにプログラムを移動しました。多数の同時プロセスがIOエラー:接続リセットをスローします。

これを偶然見つけて修正しました:

https://community.Oracle.com/message/3701989

基本的に-Djava.security.egd = file:/ dev /./ urandomパラメーターを追加し、それで問題ありません:)

15
DotMasta

Sqoop Oracleインポートで同様の問題に直面し、これによって提案された修正を実装しました link

この設定は問題の解決に役立ちました:

-Dmapred.child.Java.opts="-Djava.security.egd=file:///dev/urandom"

mapred-site.xml構成プロパティ名の値を次のように変更しました:

mapreduce.admin.map.child.Java.opts -Djava.security.egd=file:///dev/urandom

これは少しsqoop固有ですが、JVMオプションを設定すると思います-Djava.security.egd=file:///dev/urandom"は問題の解決に役立ちます。

7
akshat thakar

スタックはORAを示していないため、根本的なネットワークの問題があります。

2
Michael-O

この問題を引き起こしている他の原因は、[〜#〜] hostname [〜#〜]の設定が間違っていることでした。私の接続試行は次の場所で停止しました:

"main" prio=10 tid=0x00007f7cc8009000 nid=0x2f3a runnable [0x00007f7cce69e000]
   Java.lang.Thread.State: RUNNABLE
        at Java.net.Inet4AddressImpl.getLocalHostName(Native Method)
        at Java.net.InetAddress.getLocalHost(InetAddress.Java:1444)
        at Sun.security.provider.SeedGenerator$1.run(SeedGenerator.Java:176)
        at Sun.security.provider.SeedGenerator$1.run(SeedGenerator.Java:162)
        at Java.security.AccessController.doPrivileged(Native Method)

したがって、/etc/hosts/にホスト名のエントリがあることを確認してください。

次のようなhostnameコマンドを発行すると、

$ hostname
my.server.com

/etc/hostsに行が必要です:

127.0.0.1 my my.server.com
1

同じ問題がありました-Linux(時々)で失敗し、Windows(常に)で動作しました。

これらのサイトの理由(および解決策)についてお読みください。

0
user2474291