ORACLE:Io异常:网络适配器无法建立连接

时间:2011-09-06 17:59:24

标签: linux jdbc oracle10g

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

  

java.sql.SQLException:Io异常:网络适配器无法建立连接       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)       在oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)       at oracle.jdbc.driver.PhysicalConnection。(PhysicalConnection.java:439)       在oracle.jdbc.driver.T4CConnection。(T4CConnection.java:165)       at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)       at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)       at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:297)       at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:221)       at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPhysicalConnection(OracleConnectionPoolDataSource.java:157)       at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:94)       at oracle.jdbc.pool.OracleImplicitConnectionCache.makeCacheConnection(OracleImplicitConnectionCache.java:1567)       at oracle.jdbc.pool.OracleImplicitConnectionCache.getCacheConnection(OracleImplicitConnectionCache.java:478)       at oracle.jdbc.pool.OracleImplicitConnectionCache.getConnection(OracleImplicitConnectionCache.java:347)       at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:404)       at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:189)       在oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:165)

3 个答案:

答案 0 :(得分:10)

尝试以下

  1. (显而易见)IP地址不正确 - 尝试PING
  2. 端口未打开或被防火墙阻止 - 尝试TELNET  
  3. 数据库侦听器未运行或绑定到其他网络 接口 - 再次,TELNET应该确认这一点(也使用Oracle客户端 连接工具)
  4. 没有本地端口可用于外出连接 (不太可能) - 只有你正在建立成千上万的联系,或者 每分钟创建数百个新连接。

答案 1 :(得分:1)

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

你可以让线程在连续的连接请求之间稍微休息一下(半秒到一秒左右)。在那之后,不要关闭连接,直到它们被打破。保留它们并重复使用它们。

答案 2 :(得分:0)

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

中检查您的主机名是什么参数