加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – PreparedStatement和Oracle 10g的bug

发布时间:2020-12-15 02:29:51 所属栏目:Java 来源:网络整理
导读:当我们在 Java Web应用程序中调用某些SQL时,我对Oracle 10g中的错误有一个很大但是间歇性的问题.我们无法快速修补或升级到11g – 这似乎是第一个’愚蠢’的oracle支持响应.有一个解决方法,但我在Java代码中的PreparedStatements中执行此操作时遇到了麻烦. 实
当我们在 Java Web应用程序中调用某些SQL时,我对Oracle 10g中的错误有一个很大但是间歇性的问题.我们无法快速修补或升级到11g – 这似乎是第一个’愚蠢’的oracle支持响应.有一个解决方法,但我在Java代码中的PreparedStatements中执行此操作时遇到了麻烦.

实际错误是:

ORA-00600: internal error code,arguments: [kcblasm_1]

错误是:Oracle Bug 12419392

工作正在进行中

alter session set "_hash_join_enabled" = FALSE;

在我们运行我们的错误诱导SQL之前.但是,传统上PreparedStatement只需要一个SQL:

PreparedStatement stmt = con.prepareSelect("sql statement2");

是否可以有一个看起来像这样的PreparedStatement调用:

PreparedStatement stmt = con.prepareSelect("sql statement1; sql statement2;");

或者只是通过一个接一个地运行一系列连续的PreparedStatements来实现这一点?

不是最好的时间与Xmas迫近和减少支持等等,所以我真的希望有人可以提供帮助.谢谢.

编辑:@jonearles要求代码,所以这里是,如果有任何用途.可能对我们的项目非常具体,但有人可能会发现明显的错误诱导问题:

SELECT DISTINCT qm.validator_id,qm.QM_ID,u.EMAIL,qm.creation_dt,qm.emailed,qm.valid,qm.resolved,qm.new_obs_id,o.*,nests.*,s.*,l.*,latc.TENKM
FROM query_man qm,obs o,obs_aux_aon nests,sub s,location l,l_atlas_tetrad_coverage latc,users u
WHERE qm.OBS_ID         = o.OBS_ID
AND o.SUB_ID            = s.SUB_ID
AND u.user_id           = qm.user_id
AND o.obs_id            = nests.obs_id(+)
AND s.LOC_ID            = l.LOC_ID
AND latc.ATLAS_REGION   = 'NKNE'
AND (LENGTH (l.gridref) = 6
AND (SUBSTR(l.gridref,1,3)
  || SUBSTR(l.gridref,5,1)) = latc.TENKM
OR LENGTH (l.gridref)       = 4
AND l.gridref               = latc.TENKM)
AND qm.RESOLVED            IS NULL
ORDER BY latc.tenkm,l.tetrad

解决方法

好.我的主要问题的答案是否定的,您不能像这样创建PreparedStatement:

PreparedStatement stmt = con.prepareSelect("sql statement1; sql statement2;");

运行单个语句暂时改变会话以获得一点SQL确实有效,但是同意似乎很糟糕,而且响应速度也慢得令人无法接受.选项似乎是补丁或升级,或查看no_use_hash提示(我认为也会很慢).请看代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读