我是测试人员,我们的系统经常会因为oracle执行计划突变引起系统不可用这样的性能问题,有什么好的解决方法么。

解决方案 »

  1.   

    11g可以用sql profile,11g以前用store outline。
      

  2.   

    在CBO的优化模式下,我们可以使用optimizer_mode参数控制优化模式。主要有两种模式,一种是ALL_ROWS模式,另外一种是FIRST_ROWS模式。ALL_ROWS模式适用场景:希望优化程序给出一种尽快得到全部记录的执行计划,目标是增加系统的吞吐量。
    FIRST_ROWS模式使用场景:希望优化程序给出一种可以迅速的得到第一行的执行计划,目标是减少系统的响应时间。两种模式需要具体场景具体分析,比如常见的Web应用,很少有一次性得到全部记录的情况,都是分多页交互的响应操作者,因此默认的ALL_ROWS模式就不太适合了,应该考虑使用FIRST_ROWS模式进行优化。
    又如,我们想要生成全部数据的报表,那么默认的ALL_ROWS模式就比较的适合。
      

  3.   

    11g 以后使用plan baseline  或者10G outline   控制执行计划
      

  4.   

    自从我们从8i升级了到了10g之后也遇到了这个问题,
    没什么好办法
    实在不行的话你自己在sql中指定索引吧,比如
    select * /*+ index(表 索引) */ from t