当前位置: 首页 > 面试题库 >

Oracle:OALL8处于不一致状态

西门品
2023-03-14
问题内容

作为升级JRun的一部分,我们正在从1.4 JVM迁移到1.6 JVM。现在,我收到一个非常奇怪的oracle db错误:“
OALL8处于不一致状态”。我已经解决了插入根本不使用绑定变量的查询的问题-
所有内联参数。如果我在没有任何绑定变量的情况下运行查询,则会收到上述错误。一旦我用绑定变量替换了一个硬编码值,一切都会正常工作。

另一个奇怪的地方是,在执行查询之后,它实际上已提交给数据库。我可以从另一个会话连接,然后看到插入的行。我曾尝试将查询包装在事务中,但似乎成功了,因为在没有显式事务的情况下查询的行为没有改变。

以下是相关详细信息:

Java版本:1.6.0_12-b04
虚拟机版本:11.2-b01(HotSpot服务器)
Oracle服务器:10.2.0.4
Oracle客户端:11.1.0.7.0通过ojdbc6.jar

更新: 我正在使用cfqueryparam-
在oracle世界中它们被称为绑定变量。尽管这确实解决了紧迫的问题,但我们拥有相当大的旧代码库,在从CF7升级到CF8的过程中,我们无法实际地完成所有更新查询的过程。

即使我确定了一个失败的特定情况(并将其封装在mxunithtml" target="_blank">测试中),这并不意味着没有其他地方可能会出现问题。我真的很想拥有一个解决方案,该解决方案可以消除OALL8错误,而不是围绕它进行编码。

更新2:
在与我们的DBA核对之后,他已将名为CURSOR_SHARING的参数设置为SIMILAR。Oracle的默认值为EXACT。发生的情况是,当ColdFusion推迟执行查询时,Oracle正在将所有文字值绑定到变量,这似乎使ColdFusion感到困惑。将设置恢复为EXACT可使文字查询正常运行。

更新3:
Oracle最终为我们发布了JDBC的带外补丁。它被标识为JDBC错误。最终更新时,最新的驱动程序应包括它。如果有支持,您还可以通过其TAR系统请求补丁。


问题答案:

那么…使用绑定变量?

cfqueryparam无论如何,您都应该(通过)使用它们来确保安全,并且如果它解决了这个问题,那么这样做的更多理由。

如果你有兴趣在实际的错误是什么意思,谷歌有很多

结果,这表明它是一个与JDBC驱动程序错误,甚至提出一个补丁可用。

但是我在您的帖子中没有看到实际的问题…?



 类似资料:
  • 我们刚刚从IBM WebSphere7(Java 1.6)迁移到WebSphere9(Java 1.8)。我正面临长强制转换的问题,加载jsp时出现代码中断,下面的代码片段(这段代码是用jsp编写的): 下面是堆栈串, Exception:java.lang.VerifyError:JVMVRFY012堆栈形状不一致;class=com/ibm/_jsp/_tmtsstasksummary,met

  • 再次,我很困惑...我相信我的问题有一个简单的答案。 我的问题是;我如何告诉Hibernate MySQL包含中值函数,而不是返回错误? [IllegalStateException:没有节点的数据类型:org.hibernate.hql.internal.ast.tree.MethodNode-[METHOD_CALL]MethodNode:'('-[METHOD_NAME]IdentNode:

  • 我有一个从数据源读取数据的小型Scala程序。此数据源当前是一个。csv文件,因此它可能包含数据不一致。 在为我的数据实现存储库模式时,我实现了一个方法,该方法将通过一个应该是唯一的特定字段返回一个对象。然而,我不能保证它真的是独一无二的,就像在一个游戏中一样。csv文件,我不能像在真实数据库中那样强制执行数据质量。 因此,该方法检查存储库中是否有一个或零个具有请求的字段值的对象,这很好。但我对S

  • 问题内容: 从MDN for NodeList: 在某些情况下,NodeList是一个实时集合,这意味着DOM中的更改会反映在集合中。例如,Node.childNodes处于活动状态: 在其他情况下,NodeList是静态集合,这意味着DOM中的任何后续更改都不会影响集合的内容。document.querySelectorAll返回一个静态NodeList。 所以....有点烦!是否有任何关于哪些

  • 地址 address_id INT PK AutoIncr 城市Varchar 国家varchar 员工 null