2007-12-05
鸡肋-ORACLE10g自动收集CBO统计信息
从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');
自动化永远而严重的隐患相伴随!
-The End-
历史上的今天
- 2019-12-05 GaussDB 100: 用户权限以及修改 SYS 用户的缺省口令
- 2008-12-05 Oracle Developer Forum -开发者大会
- 2006-12-05 体验微软的 Office 2007 新版本
- 2006-12-05 关于版权的一点声明
- 2005-12-05 Oracle Diagnostics:How to deal with ORA-19815
这个东西在10.2.0.2有严重的bug,经常会导致mutex竞争。被它搞过很多次。
看来被害过的都深有感触啊!10.2.0.3也一样有严重Bug
mark一下
只能相信自已为某个特定目的写的自动化角本. 象这种统吃的自动化角本, 不适合的.
俺也被害过一次,那个惨呀.结果停掉后,手工分析一切OK了
有错别字,多加了个R,
Exec DBMS_SCHERDULER.DISABLE('GATHER_STATS_JOB');
应该是SCHEDULER
改正之,谢谢:)
10204搞过几次!
10204碰到了db被hang住了,可否將該job該為每週末執行一次,要如何修改呢?