IO错误:套接字读取超时。原因是什么?

时间:2014-06-03 09:12:47

标签: java oracle jdbc

我的简化代码(表明连接中断错误“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;
我赶了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)

原因是什么?如何解决这个问题?

1 个答案:

答案 0 :(得分:-1)

我遇到了同样的问题。检查您的服务,并确保只有OracleServiceXE和Oracle XETNSListener正在运行。

您可以使用命令

在cmd中对其进行交叉检查
  

netstat -ano |找到" 1521"

在结果中,最后一列显示PID,它应该是唯一的。如果该命令未返回任何结果,则表示您的监听器未运行。