java - Java 1.6和 Oracle 14 setQueryTimeout不工作

  显示原文与译文双语对照的内容
0 0

我们运行 ojdbc14.jar. 1.6并使用最新的连接到远程Oracle数据库。 我们希望setQueryTimeout的查询不能超过 2分钟才能完成。

我已经这么做了:


 statement = conn.prepareCall(call);
 statement.setQueryTimeout(120);
 statement.executeQuery();

在 8分钟后,它最终会超时 ! 对此问题的任何想法或者解决办法? 你的帮助总是很感激 !

编辑:我们使用薄驱动程序

时间: 原作者:

0 0

了解如何在 Oracle JDBC驱动程序中使用查询超时: https://forums.oracle.com/forums/thread.jspa?threadID=550257

长话短说:

  1. 数据库需要一个完整的往返行程,以便在超时过期时取消SQL执行。 数据库将在它感觉像它时处理取消请求。
  2. 驱动程序超时机制不是高精度机制。 因为实际取消执行需要通过网络与数据库进行交谈,因这里没有必要使驱动程序超精确。 即使驱动程序精确,数据库响应取消请求所需的网络延迟和时间也会降低驱动程序的精度。 因这里,超时是驱动程序将取消发送到服务器之前将执行SQL的最小时间。
0 0

尝试在客户机JVM系统属性中传递 -Doracle.net.disableOob=true 。 根据属性文档

薄在默认情况下从 11g 开始使用带中断。 如果用户更喜欢使用带内带的中断而不是带外的中断,那么这个属性可以设置为 true 。

在某些情况下,基础协议不支持分区符,或者数据库没有配置为监听分区符。

原作者:
...