Oracle驱动程序。JdbcTemplate查询超时问题

编程语言 2026-07-09

我将查询超时设置为10秒,并使用JdbcTemplate.query(...) 执行查询:

with function sleep (seconds NUMBER)
return number is
begin
dbms_session.sleep(seconds);
return 1;
end;
SELECT sleep(10) FROM DUAL

结果在10秒后成功返回。

如果将休眠时间设为11秒,超时就能正常工作。

但有时超时会在15秒后才触发。

为什么Oracle驱动(ojdbc11)在10秒后不中断查询执行?

解决方案

SQLQueryTimeout 会对查询进行超时处理,但不会阻止缓存操作:

该属性不会阻止在Oracle数据库上正在处理的缓存操作。这其中包括直通语句、刷新、手动加载、手动刷新、同步写回以及传播。

当然,除了这个异常之外,你也可能遇到配置方面的问题,例如没有设置正确的参数,或者在错误的应用中设置了正确的参数,或者该设置被缓存在内存中而不响应变更,或者度量范围不仅限于该查询,等等。没有提供详细信息,我们无法准确定位这些潜在的错误。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章