当我们在 Java Web 应用程序中调用一些 SQL 时,我在 Oracle 10g 中遇到了一个很大但间歇性的问题。我们无法快速修补或升级到 11g - 这似乎是第一个“愚蠢”的 Oracle 支持响应。有一种解决方法,但我在我的 Java 代码中的 PreparedStatements 中执行此操作时遇到了麻烦。
实际错误是:
ORA-00600: internal error code, arguments: [kcblasm_1]
错误是:Oracle 错误 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 来实现?
在圣诞节临近和支持减少等情况下,这不是最好的时间,所以我真的希望有人能提供帮助。谢谢。
编辑:@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