You need to enable JavaScript to run this app. Oracle查询遇Stream has already closed报错的规避方案及ojdbc8版本咨询
优惠活动
大模型
产品
解决方案
定价
更多

Oracle查询遇Stream has already closed报错的规避方案及ojdbc8版本咨询

问题修复版本及规避方案

已修复该BUG的ojdbc8版本

你遇到的是Oracle JDBC驱动针对long/LOB类型字段预取逻辑的已知问题,该BUG在ojdbc8 21.3.0.0及之后的所有正式稳定版本中已经完成修复,直接升级驱动到该版本或更高版本即可彻底解决。

临时规避方案

如果当前环境暂时无法升级驱动,可以采用以下任意一种方案规避问题:

  • 修改JDBC连接配置,关闭LOB预取功能:在数据库连接URL中添加参数oracle.jdbc.defaultLobPrefetchSize=0,禁用驱动默认的LOB预取逻辑,即可避免该异常触发
  • 调整结果集字段读取顺序:将long/LOB类型字段的读取操作放在所有普通类型字段的最后执行,你当前代码中优先读取Time_Limit(long类型)的逻辑可以调整到读取完Id、Name字段之后执行
  • 调整Statement的抓取参数:在执行executeQuery之前,给PreparedStatement设置合适的抓取大小,例如pstmt.setFetchSize(100),确保单批次抓取就能覆盖所有查询结果,避免结果集流提前被关闭

补充代码优化提示

你提供的代码存在一处笔误:try-with-resources块中定义的连接变量名为conn,但调用prepareStatement方法时使用的是未定义的con变量,实际运行会出现编译错误,需要先修正该变量命名问题。


内容的提问来源于stack exchange,提问作者Kaninchen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 17:09:04