我尝试使用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错误:管道已被切断。 在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) 在java.sql.DriverManager.getConnection(DriverManager.java:664) 在java.sql.DriverManager.getConnection(DriverManager.java:247) 在main.main(main.java:30) 引起:java.net.SocketException:管道被切断了。 at java.net.SocketOutputStream.socketWrite0(Native Method) 在java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109) 在java.net.SocketOutputStream.write(SocketOutputStream.java:153) 在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) 在oracle.net.ns.NetInputStream.read(NetInputStream.java:249) 在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) 在oracle.jdbc.driver.T4
CConnection.connect(T4CConnection.java:1607) 在oracle.jdbc.driver.T4
CConnection.logon(T4CConnection.java:496) ......还有6个
什么是:java.sql.SQLRecoverableException:IO错误:管道已被切断意味着什么? 请帮我解决这个错误。
提前致谢。
答案 0 :(得分:0)
什么是:java.sql.SQLRecoverableException:IO错误:管道已被切断意味着什么?
这个问题的答案在JavaDoc中给出:
如果应用程序执行某些恢复步骤并重试整个事务,或者在分布式事务(事务分支)的情况下,先前失败的操作可能成功的情况下抛出SQLException的子类。恢复操作至少必须包括关闭当前连接并获取新连接。 (Source JavaDoc)
主要问题可能是您使用的是错误的Oracle JDBC驱动程序名称。调用正确的驱动程序名称:
oracle.jdbc.OracleDriver
所以用这个替换oracle.jdbc.driver.OracleDriver
。
连接网址应如下所示:
jdbc:oracle:thin:@IP_ADDRESS:1521/SERVCE_NAME
Here您将找到有关如何使用JDBC驱动程序的更多详细信息。