it-swarm.com.de

Fehler beim Zurücksetzen der Oracle 11g-Verbindung

Beim Versuch, eine Verbindung zu Oracle 11g unter Red Hat Linux (64-Bit) mit Thin-Jdbc-Treibern herzustellen, wird der folgende Fehler angezeigt. Ich würde mich sehr freuen, wenn jemand mehr Licht auf die Problembehandlung werfen könnte. 

 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)
9
John C

Sie haben keine Details zu dem Problem angegeben, z. B. was geändert wurde. Ist das eine neue Konfiguration für Sie oder hat es plötzlich aufgehört zu arbeiten? Wissen Sie, ob Sie genügend Verbindungen zur Verfügung haben? Geschieht dies bei jeder Verbindung oder ist es zeitweilig?

Da der Fehler während des Anmeldevorgangs auftritt, gibt es einige Möglichkeiten:

  1. Netzwerkfehler
  2. Sie haben die maximale Anzahl an Verbindungen ausgeschöpft, sodass Oracle Sie auflegt.
  3. Firewall-Einschränkungen
  4. Ein Problem mit dem Datenbankserver oder dem Listener. Die Verarbeitung Ihrer Sitzung könnte nach dem Öffnen abstürzen.

Überprüfen Sie im folgenden stackoverflow-Thread, wie Sie die Anzahl der aktiven Verbindungen und die max. Ich würde einen Fehler "ORA-00018: Maximale Anzahl von Sitzungen überschritten" erwarten, wenn dies das Problem wäre, daher kann dies nicht der Fall sein. Aber es lohnt sich zu überprüfen.

Wie kann ich die maximale Anzahl zulässiger Verbindungen zu einer Oracle-Datenbank prüfen?

4
Brandon

Wir hatten etwas sehr Ähnliches, ein Programm von einem 32-Bit-Betriebssystem auf ein 64-Bit-Betriebssystem verschoben und eine Reihe von gleichzeitigen Prozessen würde den IO-Fehler werfen: Verbindungsrücksetzung.

Stolperte über das, was es reparierte:

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

Fügen Sie im Allgemeinen den Parameter -Djava.security.egd = file:/dev /./ urandom hinzu, und es ist gut zu gehen :)

14
DotMasta

Ich hatte ein ähnliches Problem mit dem Import von Sqoop Oracle und ich habe den von diesem Link vorgeschlagenen Fix implementiert.

Diese Einstellung half, das Problem zu lösen:

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

und ich habe den Wert der Konfigurationseigenschaft mapred-site.xml wie folgt geändert:

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

Dies ist ein wenig sqoop-spezifisch, aber ich denke, dass Sie die JVM-Option -Djava.security.egd=file:///dev/urandom" Festlegen können, um das Problem zu lösen.

7
akshat thakar

Da der Stack keine ORAs anzeigt, liegen Netzwerkprobleme vor.

2
Michael-O

Hatte das gleiche Problem - unter Linux (manchmal) fehlgeschlagen, arbeitete unter Windows (immer). 

Lesen Sie auf diesen Websites den Grund (und die Lösung): 

0
user2474291

Eine andere Sache, die zu diesem Problem geführt hat, war, dass die Einstellungen inHOSTNAMEfalsch waren. Mein Verbindungsversuch wurde aufgehängt an:

"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)

Stellen Sie also sicher, dass Sie einen Eintrag für Ihren Hostnamen in /etc/hosts/ haben.

Wenn Sie einen hostname-Befehl wie folgt ausgeben:

$ hostname
my.server.com

Sie benötigen eine Zeile in Ihrem /etc/hosts:

127.0.0.1 my my.server.com
0