前几天,发现平台的一支程序突然运行的很慢,经分析后,发现是数据库查询变得超级慢。
用OB9分析后,发现索引正常,没办法最后重启了数据库后,速度直接飚上来了。
但好景不长,第二天早上4点后,又变成龟速,只好找公司DBA帮忙分析问题。
最后发现是Oracle的自动统计分析Job,每天自动进行统计,然后优化器就不走索引,而走统计分析的结果。
而我们的表有较多的删除操作,很快统计分析的结果就不可靠了,结果速度很快就下来了。
最后,禁用之,搞定:)
--状态查询 select * from Dba_Scheduler_Jobs where JOB_NAME ='GATHER_STATS_JOB' --sysdba --关闭 exec dbms_scheduler.disable('SYS.GATHER_STATS_JOB'); --sysdba --启用 exec dbms_scheduler.enable('SYS.GATHER_STATS_JOB');