![](https://csdnimg.cn/release/download_crawler_static/87436569/bg1.jpg)
库的统计信息收集未开启(已解决)
由于数据库总体运行缓慢,偶尔从同事的某些 SQL 的语句执行计划中发现驱动顺序明显错误得到启发,检查
数据库的统计信息情况,发现居然返回了 7431 条,几乎占了 bosswg 和 basedba 用户的对象的全部!
SQL>select count(*)
from dba_tab_statistics t
where owner in ('BOSSWG', 'BASEDBA')
and (t.last_analyzed is null or t.last_analyzed <= sysdate - 14);
COUNT(*)
---------------
7431
接下来发现,原来 ORACLE 的自动收集统计信息的功能被关闭了,具体如下:
SQL> select t.JOB_NAME,t.PROGRAM_NAME,t. state,t.enabled
from dba_scheduler_jobs t
where job_name = 'GATHER_STATS_JOB';
JOB_NAME PROGRAM_NAME STATE ENABL
------------------------------ -------------------------------- ---------- ------------------------------------------------------------
GATHER_STATS_JOB GATHER_STATS_PROG DISABLED FALSE
开启自动收集 exec dbms_scheduler.enable('GATHER_STATS_JOB');后,数据库统计信息得以正常收集
SQL> select t.JOB_NAME,t.PROGRAM_NAME,t. state,t.enabled
from dba_scheduler_jobs t
where job_name = 'GATHER_STATS_JOB';
JOB_NAME PROGRAM_NAME STATE ENABL
------------------------------ -------------------------------- ---------- ------------------------------------------------------------
GATHER_STATS_JOB GATHER_STATS_PROG SCHEDULED TRUE