1. 自动收集Statistic
- Oracle 的Automatic Statistics Gathering 是通过Scheduler 来实现收集和维护的。
- 自动收集统计信息的Job GATHER_STATS_JOB 收集数据库所有对象的2种统计信息:
(1)Missing statistics(统计信息缺失)
(2)Stale statistics(统计信息陈旧)
默认情况下,job 会在每天晚上10到早上6点和周末全天开启。该过程首先检测统计信息缺失和陈旧的对象。然后确定优先级,再开始进行统计信息。
Scheduler Job的 stop_on_window_close 属性控制GATHER_STATS_JOB 是否继续。该属性默认值为True. 如果该值设置为False,那么GATHER_STATS_JOB 会中断, 而没有收集完的对象将在下次启动时继续收集。 - Gather_stats_job调用dbms_stats.gather_database_stats_job_proc过程来收集statistics的信息。
该过程收集对象statistics的条件如下:
(1)对象的统计信息之前没有收集过。
(2)当对象有超过10%的rows 被修改,此时对象的统计信息也称为stale statistics。 - 查询统计信息的schedule job
SQL> select job_name, program_name,enabled,stop_on_window_close from dba_scheduler_jobs where job_name = ‘gather_stats_job’;