【问题标题】:IOException : The network adapter could not establish the connectionIOException:网络适配器无法建立连接
【发布时间】:2010-11-26 06:24:17
【问题描述】:

我正在尝试从我的 Java 应用程序连接到 Oracle 数据库。我正在使用 oracle.jdbc.driver.OracleDriver, Version : 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)

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

【问题讨论】:

  • 您的网络似乎一直在断开连接。
  • 你有没有想过这个问题?我在 Cisco UCCX 上遇到了同样的事情。某天随机启动,应用未做任何更改。
  • @AsherMaximum,我没有解决这个问题。我偶尔会收到此错误,因此我进行了多次连接尝试,到目前为止它已经正常工作了。

标签: java oracle jdbc


【解决方案1】:

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

jdbc 示例:

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

【讨论】:

  • IP 地址有效,因为主机名不完全限定或没有被解析
【解决方案2】:

这可能是网络问题:

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

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

  • 是否关闭连接?你是不是让监听器超载了?

【讨论】:

  • 感谢罗伯特的选择。防火墙并没有阻止它,因为我不是每次都得到这个,其次 DNS 速度可能是一个问题。我正在检查它。再次感谢
  • 最好的分析方法是启动 SQL 跟踪。
【解决方案3】:

我会仔细看看,也许会在

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

查看处理的精确 IOException。这将告诉您根本原因,这有助于诊断问题。

【讨论】:

  • 谢谢伙计,但是我从 Lotus Domino 服务器上运行它,不幸的是我不能在那里设置断点:(
  • 这几乎不是有用的建议,除非 OP 有 Oracle 的 JDBC 驱动程序的源代码,这不太可能。
  • 即使您没有源代码,您仍然可以 - 至少在 Eclipse 中 - 设置方法断点并调查调用堆栈。 IDEA Intellij 14 有一个内置的反编译器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多