bottleqq 发表于 2010-08-02 15:03

SQL执行计划突变的监控

各位前辈好!
请教个问题:
系统近期出过几个执行计划相关的问题,执行计划突变,导致业务很慢。
针对这个问题,我想做一个执行计划突变的监控。最初的想法是从gv$sqlstats中查出同一个SQL_ID的plan_hash_value值,如果>1,说明对于1条SQL存在不止一个执行计划。
但是我做实验发现,gv$sqlstats中对于同一个SQL_ID,只保存最近一次执行的执行计划。
有人建议从dba_his_sqlstats中可以查到一个SQl在缓存中保存的所有的执行计划信息,但是oracle默认的1个小时会将gv$sqlstats中的内容写入dba_his_sqlstats,这样不能实现实时监控的目标。

请教各位同仁:
1、有没有其他的视图,可以查到一条sql的所有执行计划吗?
2、针对执行计划突变的问题,有没有其他的解决思路?请各位指点迷津~~~

renxiao2003 发表于 2010-08-02 15:40

我没有做过执行计划。帮你支持一下。希望高人解答。

bottleqq 发表于 2010-08-03 09:49

这个系统是核心生产系统。之前出过问题,一张表的统计分析值突变,导致走全表扫描或者走其他索引,在业务上的表现就很明显,一下子慢了下来,交易堵塞。
在统计分析值和索引有效性上我们也做了监控,现在就是想在执行计划方面做一个监控,希望实时性强一些,一旦出现了一个新的执行计划,就通知管理员去检查相应的SQL。

坐等高人~~

csbwolf10 发表于 2010-12-15 16:02

我最近也想做这一件事情,要是你有什么进展我们可以讨论下,楼主你可以加我的QQ:15
3279584

richar_feel 发表于 2012-02-03 09:41

顶一个,最近我们也老遇到这样的问题,不知楼上进展如何?

Lyunx 发表于 2012-05-02 03:59

:cry:同样遇到这个问题了,不知道楼主进展如何?能否分享一下方案,3Q~~~

zhlin0054 发表于 2012-08-12 11:00

执行计划是根据oracle自已对数据分析选择的一种方式,这个不便于控制。如果非要控制执行的方法只能用hint方式

renxiao2003 发表于 2012-08-12 18:27

这个真的得是搞Oracle优化关咯i的才能搞明白

Lyunx 发表于 2012-10-17 22:58

不知道楼主现在进展如何了?同求方案~~~
页: [1]
查看完整版本: SQL执行计划突变的监控