Ich habe ein Problem bei der Verbindung zu einer Oracle-Datenbank, es dauert eine lange Zeit (ca. ~ 5 Minuten) und es sendet die unten gezeigte Ausnahme. Die meiste Zeit, nach dem ersten Fehler, funktionieren die nächsten Verbindungen für denselben Prozess korrekt.Java OracleDB Verbindung dauert zu lange beim ersten Mal
Es ist eine RHEL 6 Maschine, mit zwei verschiedenen Netzwerkschnittstellen und IP-Adressen.
HINWEIS: Ich verwende keine URL wie: "jdbc: oracle: dünn: @xxxx: yyy, es ist eigentlich:" jdbc: oracle: dünn: @xxxx: yyyy: zzz. Die SID fehlt nicht, sorry dafür :(
Das ist ungefähr das, was ich isoliert habe:
bin/java -classpath ojdbc6_g.jar -Djavax.net.debug = all -Djava .util.logging.config.file = logging.properties
Class.forName ("oracle.jdbc.OracleDriver")
DriverManager.getConnection("jdbc:oracle:thin:@xxxx:yyyy", "aaaa", "bbbb")
Fehler Stacktrace:
java.sql.SQLRecoverableException: IO Error: Connection reset
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:533)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:557)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:233)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:29)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:556)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at test.jdbc.Main(Test.java:120)
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:248)
at oracle.net.ns.NetOutputStream.flush(NetOutputStream.java:227)
at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:309)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:257)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:182)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:99)
at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:121)
at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:77)
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1173)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:309)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:200)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOSESSKEY(T4CTTIoauthenticate.java:404)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:430)
... 35 more
Es gibt ein sehr ausführliches Protokoll von dem, was geschieht hier über: http://pastebin.com/MMFKU26z Die Linie, die hier stecken bleiben, sagt stellt die 5 Minuten Wartezeit
Ich denke, es ist mit den beiden Netzwerkschnittstellen verwandt. Ist es möglich, dass es zu dem falschen führt, die Zeit abläuft und dann die richtige verwendet? –
Ich denke auch, gibt es eine Möglichkeit, dies zu überprüfen? – iamedu