【问题标题】:ORACLE : Io exception: The Network Adapter could not establish the connectionORACLE:IO异常:网络适配器无法建立连接
【发布时间】:2017-10-11 12:22:55
【问题描述】:

我们偶尔会收到此错误。使用相同的 TNS,我们能够正确连接到数据库。但是我们有时在建立连接时会在日志中看到这一点。以下是堆栈跟踪。这是从 Linux 机器和 Java 应用程序到 Oracle 的 db 连接 感谢任何帮助。

java.sql.SQLException:Io 异常:网络适配器无法建立连接 在 oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) 在 oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146) 在 oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255) 在 oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387) 在 oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:439) 在 oracle.jdbc.driver.T4CConnection.(T4CConnection.java:165) 在 oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35) 在 oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801) 在 oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:297) 在 oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:221) 在 oracle.jdbc.pool.OracleConnectionPoolDataSource.getPhysicalConnection(OracleConnectionPoolDataSource.java:157) 在 oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:94) 在 oracle.jdbc.pool.OracleImplicitConnectionCache.makeCacheConnection(OracleImplicitConnectionCache.java:1567) 在 oracle.jdbc.pool.OracleImplicitConnectionCache.getCacheConnection(OracleImplicitConnectionCache.java:478) 在 oracle.jdbc.pool.OracleImplicitConnectionCache.getConnection(OracleImplicitConnectionCache.java:347) 在 oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:404) 在 oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:189) 在 oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:165)

【问题讨论】:

  • 这不会是 Cisco UCCX 的问题,对吗?我有同样的问题,同样的错误信息,它偶尔发生。你找到解决方案了吗?
  • 我们清除了 DNS 缓存,这很有帮助!

标签: linux jdbc oracle10g


【解决方案1】:

尝试关注

  1. (很明显)IP 地址不正确 - 尝试 PING
  2. 端口未打开,或被防火墙阻止 - 尝试 TELNET
  3. DB 侦听器未运行或绑定到不同的网络 接口 - 再次,TELNET 应该确认这一点(也使用 Oracle 客户端 连接工具)
  4. 没有可用于传出连接的本地端口 (不太可能)- 仅当您建立数千个连接时,或 每分钟创建数百个新连接。

【讨论】:

  • 感谢您的回复。项目 1 - 4 这些问题中的任何一个都会偶尔发生这种情况吗? TELNET 有效。
【解决方案2】:

似乎连接池的连接用完了... 当 DBMS 侦听器的传入请求缓冲区因许多同时连接请求而过载时。它会使其中一些失败。

你可以让线程在连续的连接请求之间休眠一点(半秒到一秒左右)。之后,在连接断开之前不要关闭连接。保留它们并重复使用它们。

【讨论】:

    【解决方案3】:

    检查https://forums.oracle.com/forums/thread.jspa?messageID=2540479,也许你必须将listener.ora的文件主机参数更改为你的主机参数。你可以在windows中检查你的主机名是什么参数,cmd>hostname

    【讨论】:

    • 检查它为什么?这是关于不同的信息。
    • @EJB 不同的消息描述并不意味着在不同的情况下不能帮助我们。只是它帮助了我,仅此而已。
    猜你喜欢
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    相关资源
    最近更新 更多