2024年5月30日发(作者:)
ORACLE10g自动收集CBO统计信息
从Oracle Database 10g开始,Oracle在建库后就默认创建了一个名为
GATHER_STATS_JOB的定时任务,用于自动收集CBO的统计信息。
这个特性减少了由于sql语句统计失效或陈旧而导致性能很差的可能性,通过提高查询
优化器的最佳的输出提高sql执行的性能.
gather_stats_job
默认的,在数据库创建的时候就创建了gather_stats_job,执行
dbms__database_stats_job_proc过程,使用schedular.
默认的定义了两个窗口.
weekenight_window定义在下午10点到上午六点.从周一到周五.
weekend_window定义从上午12点到周一12点.
调用DBMS__DATABASE_STATS_JOB_PROC收集统计信息。
该过程首先检测统计信息缺失和陈旧的对象。然后确定优先级,再开始进行统计信息。
说明:当做完统计信息后,如果对对象的行数修改达到10%,DBMS_STATS就认为
是统计信息过旧。
可以通过以下查询这个JOB的运行情况:
SQL> select * from Dba_Scheduler_Jobs where JOB_NAME
='GATHER_STATS_JOB'
其实同在10点运行的Job还有一个AUTO_SPACE_ADVISOR_JOB:
SQL> select JOB_NAME,LAST_START_DATE from dba_scheduler_jobs;
JOB_NAME LAST_START_DATE
------------------- ----------------------------------------
AUTO_SPACE_ADVISOR_JOB 04-DEC-07 10.00.00.692269 PM +08:00
GATHER_STATS_JOB 04-DEC-07 10.00.00.701152 PM +08:00
FGR$AUTOPURGE_JOB
PURGE_LOG 05-DEC-07 03.00.00.169059 AM PRC
默认的maintenance_window_group组包含这两个窗口.
gather_stats_job使用特定的计划任务叫auto_tasks_job_class.这个类是自动创建的,
而且跟特定的资源组联系,这个组 叫做auto_task_consumer_group.这样确保任务使用
auto_task_consumer_group.如果想控制 gather_stats_job的资源使用,之需要为


发布评论