シン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)
変更点など、問題の詳細は含まれていませんか?これは新しい構成ですか、それとも突然機能しなくなりましたか?十分な接続が利用可能かどうか知っていますか?これはすべての接続で発生しますか、それとも断続的ですか?
ログオンプロセス中にエラーが発生していることを考えると、いくつかの可能性があります。
アクティブな接続の数と最大接続を確認する方法については、次のstackoverflowスレッドを確認してください。問題が発生した場合は、「ORA-00018:セッションの最大数を超えました」というエラーが発生すると予想されるため、問題ではない可能性があります。しかし、チェックする価値があります。
非常によく似たものがあり、32ビットから64ビットOSにプログラムを移動しました。多数の同時プロセスがIOエラー:接続リセットをスローします。
これを偶然見つけて修正しました:
https://community.Oracle.com/message/3701989
基本的に-Djava.security.egd = file:/ dev /./ urandomパラメーターを追加し、それで問題ありません:)
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"
は問題の解決に役立ちます。
スタックはORAを示していないため、根本的なネットワークの問題があります。
この問題を引き起こしている他の原因は、[〜#〜] 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
同じ問題がありました-Linux(時々)で失敗し、Windows(常に)で動作しました。
これらのサイトの理由(および解決策)についてお読みください。