簡體   English   中英

Oracle 11g連接重置錯誤

[英]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"將幫助您解決問題。

你沒有包含問題的任何細節,比如改變了什么? 這是您的新配置還是突然停止工作? 你知道你有足夠的連接嗎? 這種情況是發生在每個連接上還是間歇性的?

考慮到登錄過程中發生的錯誤,有幾種可能性:

  1. 網絡故障
  2. 您已經耗盡了最多的連接數,因此Oracle會掛斷您。
  3. 防火牆限制
  4. 數據庫服務器或偵聽器的問題。 為您的會話提供服務的處理可能會在打開后崩潰。

檢查以下stackoverflow線程,了解如何檢查活動連接數和最大值。 如果這是問題,我會期望“ORA-00018:超出最大會話數”錯誤,因此可能不是。 但值得一試。

如何檢查允許連接到Oracle數據庫的最大數量?

由於堆棧未指示任何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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM