代码之家  ›  专栏  ›  技术社区  ›  Goyuix

Oracle:OALL8处于不一致的状态

  •  8
  • Goyuix  · 技术社区  · 16 年前

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

    有关详情如下:

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

    更新: 我使用的是cfqueryparam——它们在oracle世界中被称为绑定变量。虽然这确实解决了眼前的问题,但我们有一个相当大的遗留代码库,我们实际上无法通过所有这些代码来更新查询,作为从CF7升级到CF8的一部分。

    尽管我已经确定了一个失败的特定情况(并将其封装在mxunit测试中),但这并不意味着没有其他方面存在这一问题。我真的希望有一个解决方案,消除OALL8错误,而不是围绕它编码。

    在与我们的DBA核实后,他将一个名为CURSOR_SHARING的参数设置为类似。Oracle的默认值是精确的。发生的事情是,当ColdFusion将查询交给执行时,Oracle将所有文本值都转换为绑定变量,这似乎让ColdFusion感到困惑。将设置返回到EXACT允许文字查询正常工作。

    更新3:

    3 回复  |  直到 15 年前
        1
  •  8
  •   Peter Boughton    16 年前

    所以使用绑定变量?

    cfqueryparam )不管怎样,为了安全,如果它解决了问题,那就更有理由这样做。


    plenty of results ,表示这是JDBC驱动程序的错误,甚至表示 patch is available .


    但是我在你的帖子里没有看到一个真正的问题。。。?

        2
  •  1
  •   Diego Alvarez    14 年前
        3
  •  0
  •   billni    11 年前

    如果应用程序在weblogic中运行,则应复制ojdbc.jar以安装目录“weblogic81\server\lib”,覆盖相同名称的文件。