java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection at oracle.jdb

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection at oracle.jdb相关的知识,希望对你有一定的参考价值。

java.sql.SQLException: Io 异常: 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 java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.dms.jdbc.workspace.JDBCForOra.getConnection(JDBCForOra.java:79) at com.dms.util.Login.regLogin1(Login.java:456) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.directwebremoting.impl.DefaultRemoter$1.doFilter(DefaultRemoter.java:740) at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:744) at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:593) at org.directwebremoting.dwrp.BaseCallHandler.handle(BaseCallHandler.java:90) at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:120) at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:141) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:864) at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579) at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665) at java.lang.Thread.run(Unknown Source) 求助问题所在

2.数据库没有启动;
看一下数据库服务有没有启动

1.网络不通,先试下PL/SQL直联数据库;
边一下数据,看一下你的帐号什么的是否正确

4.你的项目的连接参数是不是都有配置对
检查你的配置参数。最好能DEBUG到那一行,看一下是不是对的
3.JDBC有问题,换个包试试。
参考技术A 1.网络不通,先试下PL/SQL直联数据库;
2.数据库没有启动;
3.JDBC有问题,换个包试试。
参考技术B 网络有问题,没有连接到数据库,一般是连服务器上的数据库会有这样的问题,有可能是硬件防火墙的问题,检查一下网络 参考技术C 没连到数据库,远程的话可能网络有问题,本地的话可能数据库【服务】没启动。 参考技术D jdbc连接数据库的url中的数据库名是否正确?

java.sql.SQLException:Io 异常:套接字读取超时与关闭连接

【中文标题】java.sql.SQLException:Io 异常:套接字读取超时与关闭连接【英文标题】:java.sql.SQLException: Io exception: Socket read timed out vs Closed Connection 【发布时间】:2013-05-16 18:10:59 【问题描述】:

我正在尝试针对以下两个连接到 Oracle DB 的错误来研究这个问题:

    关闭连接 java.sql.SQLException:Io 异常:套接字读取超时

我的理解:

    关闭连接:发生的原因可能是由于某种网络中断或数据库由于某种“不活动”而关闭了会话 java.sql.SQLException:Io 异常:套接字读取超时:这是一种连接成功但由于某种原因套接字/数据为空并最终超时的情况,因为没有数据可用。

是否可以在本地 Oracle DB 环境中复制上述错误?步骤是什么?

感谢您抽出宝贵时间回复。

谢谢。

【问题讨论】:

【参考方案1】:

您对封闭连接的理解是正确的。关闭连接的原因:防火墙、网络设备和远程数据库监听器等外部设备可以在一段时间不活动后强制关闭网络连接

ReadTimeOut 即使在活动连接上也会发生。如果查询或过程花费大量时间,您将收到读取超时异常。

关闭连接:在数据库运行时关闭数据库监听器 ReadTimedOut : 在程序中添加睡眠超过 10 分钟,然后从应用程序调用该程序

Oracle DB env 中 Socket 读取超时错误的复制:

    setNetworkTimeout for SQL connection // 例如,设置超时为 120 秒

    从 java 调用数据库过程并在该过程中休眠超过 setNetworkTimeout 的时间

    dbms_lock.sleep(125); -- sleeps for 125 seconds
    

由于程序在 120 秒内由于 125 秒睡眠而没有返回,java 将在上述情况下抛出套接字读取超时。

【讨论】:

【参考方案2】:

我刚刚开始使用 java.sql.* 包,但这是我所理解的。关闭的连接是发生错误并且数据库会话关闭,但没有进行错误处理,因此它结束了。使用 java.SQException 您可以管理此错误(使用 throws 子句)并将其打印出来或执行其他错误处理方法。

这是来自 Oracle 的关于异常以及如何处理它们的链接。

希望这会有所帮助。

Exceptions in Java.

【讨论】:

感谢您的意见。对于关闭的连接错误,我试图弄清楚数据库关闭连接和网络干扰之间是否存在差异,两者是否提供相同的错误或是否存在区别。另外,我相信两者都是例外,对java.sql.SQLRecoverableException: Closed Connection 另外,Socket 超时异常呢,具体原因是什么,例如“网络”中断。 @kart0624 我不确定。尝试记录错误代码以查看它们是否不同。显然,它们发生的原因不同,但它们可能使用也可能不使用相同的错误代码。如果您不熟悉,这里有一些关于登录 java 的信息。 link

以上是关于java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection at oracle.jdb的主要内容,如果未能解决你的问题,请参考以下文章

java.sql.SQLException:Io 异常:指定了未知主机

java.sql.SQLException: Io 异常: Socket closed

java.sql.SQLException: Io 异常: Broken pipe 如何在不重启的情况下恢复?

java.sql.SQLException: Io 异常: Socket read timed out

java.sql.SQLException:Io 异常:在与 oracle 的 JDBC 连接期间从读取调用中得到减一

java.sql.SQLException: Io 异常: Got minus one from a read call