11

Thin jdbc ドライバーを使用して Red Hat Linux、64 ビットで 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)
4

6 に答える 6

15

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

これに出くわして修正しました:

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

基本的に -Djava.security.egd=file:/dev/./urandom パラメーターを追加してください:)

于 2014-02-04T04:31:40.830 に答える
7

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

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

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

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

Oracleデータベースへの許可された接続の最大数を確認するにはどうすればよいですか?

于 2013-03-17T19:45:13.077 に答える
2

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

于 2013-03-17T19:35:06.647 に答える
1

この問題を引き起こしていた他のことは、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
于 2014-10-06T11:54:50.930 に答える