xulijia
思路永远比操作更重要
当生产环境发生执行计划变化并造成性能恶化的时候,处理的思路如下:
1. 绑定执行计划(sqlprofile SPM) --最快速有效的方法
(如果没有好的执行计划可以绑定)
2.调整统计信息(一般是收集一下统计信息、或者手工设定一个统计信息或者删除统计信息等)
然后清空一下相关sql在内存中的游标,或者收集统计信息的时候指定no_invalidate参数失效相关游标
exec dbms_stats.gather_table_stats(ownname=>'MEPF_DEV', tabname=>'JOB_HISTORY', estimate_percent=>10, method_opt => 'for all columns size
auto',degree=>8,cascade=>TRUE,no_invalidate=>FALSE)
一般可以使得执行计划回归
3.创建索引、不可见索引等涉及对象的操作(可能遭遇资源忙)
4.造一个执行计划,并通过替换outline的方式绑定(这个需要一些时间)
5.改写优化sql语句、添加各类hint等等 (一般无法立刻上线)