Linux ORACLE : Io 异常:网络适配器无法建立连接
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/7324125/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
ORACLE : Io exception: The Network Adapter could not establish the connection
提问by Java Guy
We are getting this error sporadically. With the same TNS, we are able to make proper connections to the database. But we see this in the logs while make connections some times. Following is the stack trace. This is db connection to Oracle from a Linux machine and java application Any help is appreciated.
我们偶尔会收到此错误。使用相同的 TNS,我们能够正确连接到数据库。但是我们有时会在日志中看到这一点,同时建立连接。以下是堆栈跟踪。这是从 Linux 机器和 Java 应用程序到 Oracle 的数据库连接 任何帮助表示赞赏。
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.(PhysicalConnection.java:439) at 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) at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:165)
java.sql.SQLException:Io 异常:网络适配器无法在 oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at 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) at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPhysicalConnection(OracleConnectionPoolDataSource.java:157) at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:94) at oracle.jdblicitConnectionpool.OracleCacheImp .makeCacheConnection(OracleImplicitConnectionCache.java:1567) at oracle.jdbc.pool.OracleImplicitConnectionCache.getCacheConnection(OracleImplicitConnectionCache.java:478) at oracle.jdbc.pool.OracleImplicitConnectionCache.getConnection(OracleImplicitConnectionCache.java:347) at oracle.jdb. OracleDataSource.getConnection(OracleDataSource.java:404) at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:189) at oracle.jdbc.pool.OracleDataSource。getConnection(OracleDataSource.java:165)
回答by Damith
try following
尝试跟随
- (obvious) IP address is incorrect - try PING
- The port is not open, or is blocked by a firewall - try TELNET
- The DB listener is not running or is binding to a different network interface - again, TELNET should confirm this (also use Oracle client tools to connect)
- No local ports are available for the out-going connection (unlikely) - only if you're making thousands of connections, or creating hundreds of new connections every minute.
- (显然)IP 地址不正确 - 尝试 PING
- 端口未打开,或被防火墙阻止 - 尝试 TELNET
- DB 侦听器未运行或绑定到不同的网络接口 - 同样,TELNET 应确认这一点(也使用 Oracle 客户端工具进行连接)
- 没有本地端口可用于传出连接(不太可能) - 仅当您建立数千个连接或每分钟创建数百个新连接时。
回答by baybora.oren
Check https://forums.oracle.com/forums/thread.jspa?messageID=2540479, maybe you must change listener.ora's file host parameter to your host parameter. You can check that what parameter is your hostname in windows, cmd>hostname
检查https://forums.oracle.com/forums/thread.jspa?messageID=2540479,也许您必须将 listener.ora 的文件主机参数更改为您的主机参数。你可以在windows中查看你的主机名是什么参数,cmd>hostname
回答by Maxwell Cheng
Seems the connection pool runs out of connections... When DBMS listener's incoming request buffer is overloaded by many simultaneous connection requests. It will fail some of them.
似乎连接池用尽了连接...当 DBMS 侦听器的传入请求缓冲区因许多同时连接请求而过载时。它会使其中一些失败。
you can have the thread sleep a bit (half-second to a second or so) between successive connection requests. After that, don't close connections until they're broken. Keep them and re-use them.
您可以让线程在连续的连接请求之间休眠一点(半秒到一秒左右)。之后,在连接断开之前不要关闭连接。保留它们并重新使用它们。