首页 文章

Java连接到OracleDB:java.sql.SQLRecoverableException:IO错误:管道已被切断

提问于
浏览
2

我尝试使用流程源使用java连接到Oracle DB(11g):

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;
    }

它在我的旧数据库上运行良好,但在新数据库上失败了

它无法获得连接,错误是:

java.sql.SQLRecoverableException:IO错误:管道已被切断 . 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 )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)引起:java.net.SocketException:管道已被切断 . 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)oracle.net.ns.NetOutputStream.flush(NetOutputStream.java:215)位于oracle.net.ns的oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:302) . 位于oracle.net.n上的oracle.net.ns.NetInputStream.read(NetInputStream.java:89)的oracle.net.ns.NetInputStream.read(NetInputStream.java:171)中的NetInputStream.read(NetInputStream.java:249) .T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:123)位于oracle.jdbc的oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:79)oracle.jdbc.driver.T4CMAREngineStream.unmarshalUB1(T4CMAREngineStream.java:429) . 在oracle.jdbc.driver.T4 CCo的oracle.jdbc.driver.T4C8TTIdty.doRPC(T4C8TTIdty.java:613)上的driver.T4C8TTIdty.receive(T4C8TTIdty.java:706) nnection.connect(T4CConnection.java:1607)at oracle.jdbc.driver.T4 CConnection.logon(T4CConnection.java:496)... 6更多

什么是:java.sql.SQLRecoverableException:IO错误:管道被切断了意味着什么?请帮我解决这个错误 .

提前致谢 .

1 回答

  • 0

    什么是:java.sql.SQLRecoverableException:IO错误:管道已被切断意味着什么?

    这个问题的答案在JavaDoc中给出:

    如果应用程序执行某些恢复步骤并重试整个事务,或者在分布式事务(事务分支)的情况下,先前失败的操作可能会成功,则抛出SQLException的子类 . 恢复操作至少必须包括关闭当前连接并获取新连接 . (来源JavaDoc)

    主要问题可能是您使用的是错误的Oracle JDBC驱动程序名称 . 调用正确的驱动程序名称:

    oracle.jdbc.OracleDriver
    

    所以用这个替换 oracle.jdbc.driver.OracleDriver .

    连接URL应如下所示:

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

    Here您将找到有关如何使用JDBC驱动程序的更多详细信息 .

相关问题