关闭ORACLE10g自动收集CBO统计信息
来源:优易学  2011-11-16 16:11:24   【优易学:中国教育考试门户网】   资料下载   IT书店

  从Oracle Database 10g开始,Oracle在建库后就默认创建了一个名为GATHER_STATS_JOB的定时任务,用于自动收集CBO的统计信息。

  这个自动任务默认情况下在工作日晚上10:00-6:00和周末全天开启。调用DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC收集统计信息。该过程首先检测统计信息缺失和陈旧的对象。然后确定优先级,再开始进行统计信息。

  可以通过以下查询这个JOB的运行情况:

  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

  然而这个自动化功能已经影响了很多系统的正常运行,晚上10点对于大部分生产系统也并非空闲时段。

  而自动分析可能导致极为严重的闩锁竞争,进而可能导致数据库Hang或者Crash。

  所以建议最好关闭这个自动统计信息收集功能:

  exec DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');

  自动化永远而严重的隐患相伴随!

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训