【问题标题】:Weird Behaviour of Oracle 11g to 12COracle 11g 到 12C 的奇怪行为
【发布时间】:2017-01-27 01:58:21
【问题描述】:

我的应用程序使用 Oracle 上的 JDBC 驱动程序运行 select sql 查询,并将数据存储在结果集中。然后通过使用缓冲区写入器/文件写入器将信息写入 xml。

** 奇怪的行为:使用 Oracle 11g 运行相同的代码需要 2 小时才能完成,而对于 12 C 则需要 @ 12 小时。

** 我使用的 JDBC 驱动与 11g 和 12c 兼容。两个数据库上的数据相同。两个数据库都是独立的实例,所以没有迁移问题。 有人可以帮忙吗,我该如何调试呢?

** 选择查询使用绑定参数 IN 子句,其中包含 1000 个值。

【问题讨论】:

  • 尝试直接在两个实例上运行查询(使用一些客户端 sqlplus、toad 等)以检查 - 是 java 和驱动程序问题..还是 db 问题。
  • Oracle 12c 很可能选择了一个不同的、比 11g 更慢的执行计划。这是升级到新数据库版本时您一直期望的那种差异。使用客户端工具(Toad、SQL Develeoper、SQL*plus 等)检索每个系统上的执行计划并进行比较。
  • AWR 报告也值得一看
  • 这也可能是分配给 12c db 的内存不同 - 例如,当我们将 10g solaris db 迁移到 11g Linux ASM 时,我们丢失了 solaris 的大量文件/系统缓存为我们处理,这意味着我们的 SGA 和/或 PGA(我忘了是哪个)在 11g 实例上被严重低估了。将其提高到 32GB(而不是之前的 2GB!)极大地提高了性能。最有可能的是,您遇到了迄今为​​止所建议的事情的组合

标签: java jdbc oracle11g oracle12c


【解决方案1】:

看来,Oracle 12C 存在错误。与 Oracle 支持合作。

【讨论】:

    猜你喜欢
    • 2016-03-22
    • 1970-01-01
    • 2014-10-03
    • 2019-11-17
    • 2016-05-20
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多