[英]Oracle 11g connection reset error
在使用瘦jdbc驅動程序嘗試連接到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)
我們有一些非常相似的東西,將程序從32位移動到64位操作系統和許多並發進程會引發IO錯誤:連接重置。
偶然發現它修復了它:
https://community.oracle.com/message/3701989
基本上添加-Djava.security.egd = file:/ dev /./ urandom參數,這很好:)
我遇到了與Sqoop Oracle導入類似的問題,我已經實現了此鏈接建議的修復
此設置有助於解決問題:
-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"
將幫助您解決問題。
你沒有包含問題的任何細節,比如改變了什么? 這是您的新配置還是突然停止工作? 你知道你有足夠的連接嗎? 這種情況是發生在每個連接上還是間歇性的?
考慮到登錄過程中發生的錯誤,有幾種可能性:
檢查以下stackoverflow線程,了解如何檢查活動連接數和最大值。 如果這是問題,我會期望“ORA-00018:超出最大會話數”錯誤,因此可能不是。 但值得一試。
由於堆棧未指示任何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上工作(總是)。
了解這些網站上的原因(和解決方案):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.