我的简化代码(它表明连接因错误“IO 错误:套接字读取超时”而中断):
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
this.connection = DriverManager.getConnection("jdbc:oracle:thin:@", properties);
while(isStarted){
this.statement = this.connection.createStatement();
ResultSet result = this.statement.executeQuery("select sysdate from dual");
result.next();
System.out.println("Sysdate: " + result.getString(1));
result.close();
this.statement.close();
this.statement = null;
TimeUnit.SECONDS.sleep(4);
}
this.connection.close();
this.connection = null;
Run Code Online (Sandbox Code Playgroud)
4-5 小时后,我发现:
IO Error: Socket read timed out
java.sql.SQLRecoverableException: IO Error: Socket read timed out
at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:886)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1167)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1289)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1491)
at oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:406)
Run Code Online (Sandbox Code Playgroud)
原因是什么?如何解决这个问题呢?
小智 -1
我有同样的问题。检查您的服务并确保只有 OracleServiceXE 和 Oracle XETNSListener 正在运行。
您可以使用命令在cmd中交叉检查它
网络统计-ano | 找到“1521”
在结果中,最后一列显示 PID,它应该是唯一的。如果该命令没有返回结果,则您的侦听器未运行。
| 归档时间: |
|
| 查看次数: |
30113 次 |
| 最近记录: |