2016-08-02 9 views
2

Ich bin versuchen, Java zu verwenden, um Oracle-DB (11 g) mit strömender Quelle zu verbinden:Java eine Verbindung zu OracleDB: java.sql.SQLRecoverableException: IO-Fehlern: Das Rohr geschnitten wurde

try { 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
     return; 
    } 

    Connection connection = null; 

    try { 
     connection = DriverManager.getConnection("jdbc:oracle:thin:@//IP_ADDRESS:1521/SERVCE_NAME", "USER", "PASS"); 
    } catch (SQLException e) { 

     e.printStackTrace(); 
     return; 
    } 

Es ist Arbeit gut auf meiner alten Datenbank, aber es ist auf neue Datenbank scheitert

es ist nicht die Verbindung bekommen, ist der Fehler:

java.sql.SQLRecoverableException: IO error: The pipe has been cut. at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:752) at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:247) at main.main(main.java:30) Caused by: java.net.SocketException: pipe has been cut. at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109) at java.net.SocketOutputStream.write(SocketOutputStream.java:153) at oracle.net.ns.DataPacket.send(DataPacket.java:209) at oracle.net.ns.NetOutputStream.flush(NetOutputStream.java:215) at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:302) at oracle.net.ns.NetInputStream.read(NetInputStream.java:249) at oracle.net.ns.NetInputStream.read(NetInputStream.java:171) at oracle.net.ns.NetInputStream.read(NetInputStream.java:89) at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:123) at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:79) at oracle.jdbc.driver.T4CMAREngineStream.unmarshalUB1(T4CMAREngineStream.java:429) at oracle.jdbc.driver.T4C8TTIdty.receive(T4C8TTIdty.java:706) at oracle.jdbc.driver.T4C8TTIdty.doRPC(T4C8TTIdty.java:613) at oracle.jdbc.driver.T4

CConnection.connect(T4CConnection.java:1607) at oracle.jdbc.driver.T4

CConnection.logon(T4CConnection.java:496) ... 6 more

Was ist: java.sql.SQLRecoverableException: IO-Fehler: das Rohr wurde Schnittmittel? Bitte helfen Sie mir, diesen Fehler zu vermeiden.

Vielen Dank im Voraus.

The subclass of SQLException thrown in situations where a previously failed operation might be able to succeed if the application performs some recovery steps and retries the entire transaction or in the case of a distributed transaction, the transaction branch. At a minimum, the recovery operation must include closing the current connection and getting a new connection. (Source JavaDoc )

für den Oracle-JDBC-Treiber sein, dass Sie verwenden einen falschen Namen Das Hauptproblem könnte:

Antwort

0

What is: java.sql.SQLRecoverableException: IO error: The pipe has been cut mean ?

Die Antwort auf diese Frage ist in der JavaDoc als gegeben. Der richtige Treiber Name wird genannt:

oracle.jdbc.OracleDriver 

mit diesem So ersetzen oracle.jdbc.driver.OracleDriver.

Und die Verbindungs-URL sollte wie sein folgt:

jdbc:oracle:thin:@IP_ADDRESS:1521/SERVCE_NAME 

Here Sie detailliertere Informationen finden, wie JDBC-Treiber zu verwenden.

+0

Vielen Dank für Ihre Antwort, ich habe es versucht, aber es ist der gleiche Fehler auftreten. –

+0

Von dem, was ich sehe, sollte es kein Problem geben, wenn Sie den Treiber und die Verbindungs-URL korrigiert haben. Sie können den Debugger verwenden, um herauszufinden, an welchem ​​Punkt Sie diese Ausnahme erhalten. – ujulu

+0

Leider kann ich keinen Zugriff auf DB von lokalen Computer (Eclipse); Ich muss JAR-Datei erstellen, um die Verbindung zu testen. Möglicherweise kommt der Fehler vom Remote-Server oder Datenbankserver; aber ich weiß nicht wo die Ursache ist. –