随机获取"IO Error: The Network Adapter could not establish the connection"



我在尝试通过Java连接到Oracle数据库时,网络适配器无法建立连接。有时,我必须运行几次,然后才停止丢弃错误。

// initializes database connection
private static Connection initializeDatabaseConnection(Properties prop) {
    System.setProperty("oracle.net.tns_admin", prop.getProperty("tnsLocation"));
    try {
        Class.forName("oracle.jdbc.OracleDriver");
    }
    catch (ClassNotFoundException ex)
    {
        System.out.println(ex.getMessage());
    }
    String dbURL = "jdbc:oracle:thin:@" + prop.getProperty("serviceName");
    String username = prop.getProperty("username");
    String password = prop.getProperty("password");
    Connection conn = null;
    try {
        conn = DriverManager.getConnection(dbURL, username, password);
    }
    catch (SQLException ex)
    {
        System.out.println("Error initializing database connection. " + ex.getMessage());
        System.exit(1);
    }
    return conn;
}

关于为什么会随机丢弃该错误的任何想法?我正在使用ojdbc6.jar驱动程序的JDK 1.7。

下载pingplotter并将其打开(使其运行24小时左右)。观看历史图,您可能会发现IP地址掉落或响应时间通过屋顶,同时您无法连接到Oracle。您没有逻辑错误,要么服务器急剧过载,要么您和IT之间都有很大的交通拥堵。您是通过VPN连接吗?

http://www.ppingplotter.com/

或仅在连续模式下使用命令行中的ping一个小时左右:

  ping -t <IP address or hostname>

ping绘图仪不会经常ping,并且会创建不错的图形。

如果您远程工作,那么它可能是您的ISP。否则,请与网络管理员或DBA交谈。

显然,您不能以差的DB连接进行生产,因此希望您只能从开发环境中看到这个问题。尝试部署到您计划最终运行应用程序的机器上,看看它是否有所改进。

如果您无能为力使它变得更好,建议您增加您的JDBC驱动程序的初始登录超时。

Google JDBC SetLogIntimeout

这是一个示例,尽管有几种方法可以解决,具体取决于您的驾驶员。

drivermanager getConnection的连接超时

相关内容

最新更新