IOException:网络适配器无法建立连接

时间:2010-11-26 06:24:18

标签: java oracle jdbc

我正在尝试从Java应用程序连接到Oracle数据库。我使用oracle.jdbc.driver.OracleDriver,版本:0/1连接到数据库。但是DriverManager.getConnection()给了我“网络适配器无法建立连接”。这不会发生。它有时只发生,可能是8-10次。堆栈跟踪得到的是:

Driver Class : oracle.jdbc.driver.OracleDriver, version 0/1
java.sql.SQLException: Io exception: The Network Adapter could not establish the connection
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:334)
at oracle.jdbc.ttc7.TTC7Protocol.handleIOException(TTC7Protocol.java:3678)
at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:352)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:365)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:547)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:347)
at java.sql.DriverManager.getConnection(DriverManager.java:316)
at java.sql.DriverManager.getConnection(DriverManager.java:297)

由于我不是每次都得到这个,我无法猜测是否存在任何连接问题。我可以看到很多开发人员都有同样的问题,但对于他们来说,它每次都会发生。请帮助我,因为我真的无法解决这个问题。

3 个答案:

答案 0 :(得分:2)

这可能是一个网络问题:

  • 是否有防火墙给您带来麻烦?尝试telnet到端口。防火墙是否有状态?

  • DNS是否太慢(使用IP地址而不是主机名,请尝试DNS查找)

  • 你关闭了连接吗?你是否超载了听众?

答案 1 :(得分:2)

我遇到了类似的问题,我尝试在数据库网址中使用IP地址而不是主机名,这对我有用。

示例jdbc:

...(DESCRIPTION=(ADDRESS.....(HOST=1.1.1.1)..)

答案 2 :(得分:-1)

我会仔细研究一下,或许在

中设置一个断点
at oracle.jdbc.ttc7.TTC7Protocol.handleIOException(TTC7Protocol.java:3678)

查看处理的精确IOException。这将告诉您潜在的原因,这可以帮助诊断问题。