繁体   English   中英

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

[英]Java JDBC Oracle 9i upgrade to 10g issues

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

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

不太确定发生了什么。 为什么它不再运行了。 这只是一条选择语句,它联接了大约3或4个表。 我确保使用setInt传递变量(这是我正在使用的数字)。 在比较要联接的表时,我发现的唯一不同之处在于,在一个表上,我要联接的列设置为一个表上的Number以及另一个表上的Number(12)。 这有什么不同吗? 该查询仍在TOAD和SQL Navigator中运行...

我想到了两个想法:

  1. 确保您使用的是正确版本的jdbc驱动程序。 由于您已经说过查询可以在TOAD等环境中使用,因此很可能是您遇到的问题。
  2. 确保您没有在查询中使用任何ORACLE关键字作为列别名等

同样,从经验来看,如果您的数据库很大/很忙,在10g环境稳定之前,您还有一段公平的路要走。 我的建议:

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

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

ps.setEscapeProcessing(false);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM