java - IO异常 : Network adapter could not establish the connection

标签 java oracle jdbc

<分区>

我们开始在生产环境中时不时出现“网络适配器无法建立连接”的问题,我做了很多谷歌并在这里解决了一些问题,但仍然没有得到解决方案。

这里有一些关于我们环境的信息:

  1. 我们将 RAC 与 2 个 oracle 实例(版本 10.2.0.4)结合使用。
  2. 我们有几个应用服务器 (JBoss AS5) 在 RAC 上运行。
  3. oracle-ds.xml 中的连接 url 是“jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = db1_vip)(PORT = 1521))(ADDRESS = ( PROTOCOL = TCP)(HOST=db2_vip)(PORT = 1521))(LOAD_BALANCE = yes))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME = G1db)(FAILOVER_MODE =(TYPE =SELECT)(METHOD = BASIC)(RETRIES = 120)(延迟 = 5))))"
  4. 我们将 db1_vip/db2_vip 以及 2 个 oracle 实例的实际 ip 添加到两个应用服务器的/etc/hosts
  5. oracle 实例和应用服务器之间有防火墙,但我们在两个 oracle 实例上都打开了 1521 端口。

我们运行了以下测试来检查网络或 oracle TNS 监听器是否有任何问题:

  1. 从应用服务器向两个 oracle 实例运行 ping,一切正常,没有任何数据包丢失。
  2. 从应用服务器的 1521 端口远程登录到两个 oracle 实例,没有问题。
  3. tnsping 也能正常工作。
  4. 我们检查了监听器日志,但没有发现任何有值(value)的东西。

最奇怪的是,这个错误在一个应用服务器上每小时发生大约 10 次,但在另一个应用服务器上每天只发生 1 到 2 次。

谁能解释一下这个错误?

谢谢

[EDIT4]: 我们在 tnsping 一个 oracle 实例时发现超时问题,所以我们将 jdbc url 更改为只连接一个实例,发现 IOException 再也没有发生过,所以我们认为问题与数据库和DBA 团队将继续调查此事。

[EDIT3]:我们进行了以下尝试:

  1. 禁用应用程序服务器和数据库服务器之间的防火墙
  2. 使用 ip 代替主机名
  3. 使用wireshark检查是否有任何tcp数据包问题。

都没有成功,求高人帮忙~

[编辑]:错误堆栈跟踪:

java.sql.SQLException: Io Exception: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
    at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:207)
    ... 5 more

最佳答案

错误

java.sql.SQLException: Io Exception: The Network Adapter could not establish the connection

Java/JDBC无关。 这是您在网络设置出现问题时遇到的错误。我的猜测,防火墙问题。您可以禁用它并查看错误是否仍然存在吗?

关于java - IO异常 : Network adapter could not establish the connection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12578299/

相关文章:

sql - Oracle sql order by with case 语句

java - Swagger Spring 注解 : proper response formatting

java - 如何从 Protobuf 生成 Scala 文件而不是 Java 文件

oracle - 如何在 Oracle 表中插入/更新更大的数据?

java - 连接mysql和Java的问题

java - 架构 'TEST' 不存在

java - 有没有更简洁的方法来使用 try-with-resource 和 PreparedStatement?

java - 如何使用MongoTemplate按顺序获取结果?

java - TestNG 并行测试配置

oracle - NVARCHAR 到 VARCHAR 之间的转换