Java JDBC Oracle 9i升级到10g问题

时间:2010-06-24 19:44:04

标签: java oracle jdbc ora-01036

我们刚从oracle 9i升级到10g,数据库查询我和9i客户端一起工作但不是10g。查询中的任何内容都没有更改。我收到以下错误:

java.sql.SQLException: ORA-01036: illegal variable name/number

不确定发生了什么。为什么它不会再运行了。它只是一个连接约3或4个表的select语句。我确保我使用setInt传递变量(它是我正在使用的数字)。虽然差异表正在加入,但我发现不同的是,在一个表上,我加入的列被设置为一个表上的数字和另一个表上的数字(12)。这有什么不同吗?该查询仍在TOAD和SQL Navigator中运行...

2 个答案:

答案 0 :(得分:0)

脑海中浮现出2个想法:

  1. 确保您使用的是正确版本的jdbc驱动程序。既然您已经说过查询在TOAD等中运行,那很可能是您的问题。
  2. 确保您没有在查询中使用任何ORACLE关键字作为列别名等
  3. 另外,根据您的经验,如果您的数据库很大/很忙,那么在您的10g环境稳定之前,您还有一个公平的方法。我的建议:

    1. 尽可能多地了解统计数据
    2. 阅读生存指南(网上有很多)
    3. 注意重新计算状态的内置作业。我们在上线12天后受到了重创,因为统计数据更改破坏了关键查询性能。我们的测试不允许进行12天的稳定性测试。
    4. 如果你还没有
    5. ,请注意bind-variable-peeking

答案 1 :(得分:0)

问题在于对预准备语句的以下方法调用:

ps.setEscapeProcessing(false);

删除它,现在它工作正常。不要认为这与oracle 10g驱动程序兼容。谢谢大家的帮助。