文章作者 100test 发表时间 2009:11:16 19:39:51
来源 100Test.Com百考试题网
从Oracle Database 10g开始,Oracle在建库后就默认创建了一个名为GATHER_STATS_JOB的定时任务,用于自动收集CBO的统计信息。
这个自动任务默认情况下在工作日晚上10:00-6:00和周末全天开启。调用DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC收集统计信息。该过程首先检测统计信息缺失和陈旧的对象。然后确定优先级,再开始进行统计信息。
可以通过以下查询这个JOB的运行情况:
0select * from Dba_Scheduler_Jobs where JOB_NAME = GATHER_STATS_JOB
其实同在10点运行的Job还有一个AUTO_SPACE_ADVISOR_JOB:
SQL>. 0select 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
然而这个自动化功能已经影响了很多系统的正常运行,晚上10点对于大部分生产系统也并非空闲时段。
而自动分析可能导致极为严重的闩锁竞争,进而可能导致数据库Hang或者Crash。