我正在尝试研究连接到Oracle DB的以下两个错误的问题:
java.sql.SQLException
:Io exception:Socket read timed out 我的理解:
java.sql.SQLException
:Io异常:套接字读取超时:这是连接成功的情况,但由于某种原因,套接字/数据为空,最终超时,因为没有可用的数据。 / LI>
醇>
是否可以在本地Oracle DB环境中复制上述错误?步骤是什么?
感谢您抽出宝贵时间作出回应。
感谢。
答案 0 :(得分:1)
您对封闭连接的理解是正确的。关闭连接的原因:外部设备(如防火墙,网络设备和远程数据库侦听器)可能会在一段时间不活动后强制关闭网络连接
即使在活动连接上也会发生ReadTimeOut。如果查询或过程花费了大量时间,您将获得超时读取时间。
- Closed Connection:在数据库运行时关闭数据库侦听器
- ReadTimedOut:在程序中添加睡眠超过10分钟,并从应用程序
调用该过程
Oracle DB中的Socket读取超时错误复制:
setNetworkTimeout
for SQL connection //例如,设置超时为120秒从java调用数据库过程并在该过程中睡眠时间超过setNetworkTimeout
dbms_lock.sleep(125); -- sleeps for 125 seconds
由于125秒睡眠,过程没有在120秒内返回,因此java会在上面的场景中抛出套接字读取时间。
答案 1 :(得分:0)
我刚刚开始使用java.sql。*包,但这是我所理解的。关闭的连接是发生的错误并且DB会话关闭,但是没有完成错误处理,因此它就是它的结束。使用java.SQException,您可以管理此错误(使用throws子句)并将其打印出来或执行其他错误处理方法。
以下是Oracle关于例外以及如何处理它们的链接。
希望这有帮助。