我们偶尔会收到此错误。使用相同的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)
答案 0 :(得分:10)
尝试以下
答案 1 :(得分:1)
似乎连接池用完了连接...... 当DBMS侦听器的传入请求缓冲区被许多同时连接请求重载时。其中一些会失败。
你可以让线程在连续的连接请求之间稍微休息一下(半秒到一秒左右)。在那之后,不要关闭连接,直到它们被打破。保留它们并重复使用它们。
答案 2 :(得分:0)
检查https://forums.oracle.com/forums/thread.jspa?messageID=2540479,也许您必须将listener.ora的文件主机参数更改为主机参数。您可以在windows,cmd> hostname
中检查您的主机名是什么参数