ORACLE10g自动收集统计信息--自动analyze
从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, enabled 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可以直接修改初始化参数文件,重新启动数据库。
查看表上的统计信息
SELECT NUM_ROWS, --表中的记录数
BLOCKS, --表中数据所占的数据块数
EMPTY_BLOCKS,--表中的空块数
AVG_SPACE, --数据块中平均的使用空间
CHAIN_CNT, --表中行连接和行迁移的数量
AVG_ROW_LEN --每条记录的平均长度
FROM USER_TABLES
WHERE TABLE_NAME = 'CONTAINER'
2.查看索引的统计
SELECT BLEVEL, --索引的层数
LEAF_BLOCKS, --叶子结点的个数
DISTINCT_KEYS, --唯一值的个数
AVG_LEAF_BLOCKS_PER_KEY, --每个KEY的平均叶块个数
AVG_DATA_BLOCKS_PER_KEY, --每个KEY的平均数据块个数
CLUSTERING_FACTOR --群集因子
FROM USER_INDEXES
WHERE INDEX_NAME = 'CONTAINER_IDX_1'
3.查看列上的统计信息
SELECT NUM_DISTINCT, --唯一值的个数
LOW_VALUE, --列上的最小值
HIGH_VALUE, --列上的最大值
DENSITY, --选择率因子(密度)
NUM_NULLS, --空值的个数
NUM_BUCKETS --直方图的BUCKET个数
--HISTOGRAM --直方图的类型
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = 'CONTAINER'
AND COLUMN_NAME = 'CNTR_ID'
4.查询列上的直方图信息
SELECT ENDPOINT_NUMBER, ENDPOINT_VALUE
FROM USER_TAB_HISTOGRAMS
WHERE TABLE_NAME = 'CONTAINER'
AND COLUMN_NAME = 'CNTR_ID'
http://www.lorentzcenter.nl/awcourse/oracle/server.920/a96533/stats.htm
CBO心得(选择率,基数,直方图)
http://sunwgneuqsoft.itpub.net/post/34741/456500
在11g中,Oracle在统计信息方面进行了进一步的增强。
这篇介绍函数统计信息。
11g统计信息方面增强(一):http://yangtingkun.itpub.net/post/468/507713
11g统计信息方面增强(二):http://yangtingkun.itpub.net/post/468/507859
11g统计信息方面增强(三):http://yangtingkun.itpub.net/post/468/507897
11g统计信息方面增强(四):http://yangtingkun.itpub.net/post/468/510913
11g统计信息方面增强(五):http://yangtingkun.itpub.net/post/468/510987
11g统计信息方面增强(六): http://yangtingkun.itpub.net/post/468/511083