oracle 10g如何关闭和打开自动收集统计信息!

从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');
  自动化永远而严重的隐患相伴随!
  关闭及开启自动搜集功能,有两种方法,分别如下:
  方法一: 
  exec dbms_scheduler.disable('SYS.GATHER_STATS_JOB');
  exec dbms_scheduler.enable('SYS.GATHER_STATS_JOB');
  方法二:
  alter system set "_optimizer_autostats_job"=false scope=spfile;
  alter system set "_optimizer_autostats_job"=true scope=spfile;

  Pfile可以直接修改初始化参数文件,重新启动数据库。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值