如何使用analyze命令收集oracleoracle 收集统计信息息

ORACLE-ANALYZE命令分析
1.analyze table t1 compute statistics for
& --&user_tables
(只对表的总体信息进行统计,比如行数多少等,不涉及到表字段)
2.analyze table t2 compute statistics for all
& --&user_tab_columns
(只会收集表字段信息)
3.analyze table t3 compute statistics for
--&user_tab_columns
(只会收集表中索引所在的字段信息)
4.analyze table t4 compute statis&
user_indexes
(只收集表索引的信息)
5.analyze table t5
(收集表,表字段,索引的信息)
另外,可以删除分析数据:
SQL& analyze table my_table
SQL& analyze table my_table
delete statistics for
table for all indexes for
create table t1 as select * from user_
create table t2 as select * from user_
create table t3 as select * from user_
create table t4 as select * from user_
create table t5 as select * from user_
create table t6 as select * from user_
create unique index pk_t1_idx on t1(object_id);
create unique index pk_t2_idx on t2(object_id);
create unique index pk_t3_idx on t3(object_id);
create unique index pk_t4_idx on t4(object_id);
create unique index pk_t5_idx on t5(object_id);
create unique index pk_t6_idx on t6(object_id);
&&/B&刚建完表的时候&
(1) 查看表的统计信息
select table_name, num_rows, blocks,
empty_blocks
& from user_tables
&where table_name in ('T1', 'T2', 'T3', 'T4',
'T5','T6');
(2) 查看字段的统计信息
select table_name,
column_name,
num_distinct,
low_value,
high_value,
& from user_tab_columns
&where table_name in ('T1', 'T2', 'T3',
'T4','T5','T6');
(3) 查看索引的统计信息
select table_name,
index_name,
leaf_blocks,
distinct_keys,
avg_leaf_blocks_per_key avg_leaf_blocks,
avg_data_blocks_per_key avg_data_blocks,
clustering_factor,
& from user_indexes
&where table_name in ('T1', 'T2', 'T3', 'T4',
'T5', 'T6');
二.执行analyze命令
analyze table t1 compute statistics for
& --针对表收集信息
analyze table t2 compute statistics for all
& --针对表字段收集信息
analyze table t3 compute statistics for all indexes
& --收集索引字段信息
analyze table t4 compute
--收集表,表字段,索引信息
analyze table t5 compute statistics for all
--收集索引信息
analyze table t6 compute statistics for table for all indexes
--收集表,索引,表字段信息
(1) 表的统计信息
select table_name, num_rows, blocks,
empty_blocks
& from user_tables
&where table_name in ('T1', 'T2', 'T3', 'T4',
'T5','T6');
(2) 表中字段的统计信息
select table_name,
column_name,
num_distinct,
low_value,
high_value,
& from user_tab_columns
&where table_name in ('T1', 'T2', 'T3',
'T4','T5','T6');
&&/B&其中会收集T2的表字段信息,T3是索引所在字段信息,T4表字段信息,T6表字段信息&
(3) 索引的统计信息
没有变化,说明在创建索引的时候就ORACLE就已经收集相关信息
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。从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_
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');
自动化永远而严重的隐患相伴随!
以上是转载盖国强的看法----/archives/2007/12/dbms_scherduler_disable.html
我的DB一直没有关闭这个功能,而且使用的很好,暂时不打算关闭,如果那天确实影响了使用,再决定是否关闭。
关闭及开启自动搜集功能,有两种方法,分别如下:
exec dbms_scheduler.disable('SYS.GATHER_STATS_JOB');
exec dbms_scheduler.enable('SYS.GATHER_STATS_JOB');
alter system set "_optimizer_autostats_job"=false scope=
alter system set "_optimizer_autostats_job"=true scope=
Pfile可以直接修改初始化参数文件,重新启动数据库。
阅读(...) 评论()analyze table 一般可以指定分析: 表,所有字段,所有索引字段,所有索引。 若不指定则全部都分析。
SQL&&analyze&table&my_table&compute&&&
SQL&&analyze&table&my_table&compute&statistics&for&table&for&all&indexes&for&all&columns;&&&
SQL&&analyze&table&my_table&compute&statistics&for&table&for&all&indexes&for&all&indexed&columns;&&
SQL&&analyze&table&my_table&compute&&&
SQL&&analyze&table&my_table&compute&statistics&for&table&for&all&indexes&for&all&columns;&&&
analyze table t1 compute analyze table t2
compute statisanalyze table t3 compute statistics for
analyze table t5 compute statistics for all
analyze table t4&&&& (不指定)
另外,可以删除分析数据:
SQL&&analyze&table&my_table&delete&
SQL&&analyze&table&my_table&delete
statistics&for&table&for&all&indexes&for&all&indexed&&&
首先创建四个临时表t1,t2,t3,t4,和他们相对应的索引 复制内容到剪贴板 代码:create table t1 as
select * from user_create table t2 as select * from
user_create table t3 as select * from user_create table
t4 as select * from user_create unique index pk_t1_idx on
t1(object_id);create unique index pk_t2_idx on t2(object_id);create
unique index pk_t3_idx on t3(object_id);create unique index pk_t4_idx on
t4(object_id);
查看这个时候各个表对应的数据库统计信息(表,字段,索引) 复制内容到剪贴板
代码:--查看表的统计信息select table_name,num_rows,blocks,empty_blocks
from user_table where table_names in
('T1','T2','T3','T4');TABLE_NAME&&&&&&& NUM_ROWS&&&&&&& BLOCKS&&&&&&&
EMPTY_BLOCKST1&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&&&&&&&&&&&&&&&&&&
T3&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&&&&&&&&&&&&&&&&&
--查看字段的统计信息select
table_name,column_name,num_distinct,low_value,high_value,density from
user_tab_columns where table_name in
('T1','T2','T3','T4');TABLE_NAME&&&&&&& COLUMN_NAME&&&&&&&
NUM_DISTINCT&&&&&&& LOW_VALUE&&&&&&& HIGH_VALUE&&&&&&& DENSITYT1&&&&&&&
OBJECT_NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
SUBOBJECT_NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
OBJECT_ID&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
DATA_OBJECT_ID&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
OBJECT_TYPE&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
CREATED&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
LAST_DDL_TIME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
TIMESTAMP&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
STATUS&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
TEMPORARY&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
GENERATED&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
SECONDARY&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&&
OBJECT_NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&&
SUBOBJECT_NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&&
OBJECT_ID&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&&
DATA_OBJECT_ID&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&&
OBJECT_TYPE&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&&
CREATED&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&&
LAST_DDL_TIME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&&
TIMESTAMP&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&&
STATUS&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&&
TEMPORARY&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&&
GENERATED&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&&
SECONDARY&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
OBJECT_NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
SUBOBJECT_NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
OBJECT_ID&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
DATA_OBJECT_ID&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
OBJECT_TYPE&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
CREATED&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
LAST_DDL_TIME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
TIMESTAMP&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
STATUS&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
TEMPORARY&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
GENERATED&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
SECONDARY&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
OBJECT_NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
SUBOBJECT_NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
OBJECT_ID&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
DATA_OBJECT_ID&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
OBJECT_TYPE&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
CREATED&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
LAST_DDL_TIME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
TIMESTAMP&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
STATUS&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
TEMPORARY&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
GENERATED&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
SECONDARY&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
--查看索引的统计信息select
table_name,index_name,blevel,leaf_blocks,distinct_keys,&&&&&&&
avg_leaf_blocks_per_key avg_leaf_blocks,avg_data_blocks_per_key
avg_data_blocks,clustering_factor,num_rowsfrom user_indexes where
table_name in ('T1','T2','T3','T4');TABLE_NAME&&&&&&& INDEX_NAME&&&&&&&
BLEVEL&&&&&&& LEAF_BLOCKS&&&&&&& DISTINCT_KEYS&&&&&&& AVG_LEAF_BLOCKS&&&&&&&
AVG_DATA_BLOCKS&&&&&&& CLUSTERING_FACTOR&&&&&&& NUM_ROWST1&&&&&&&
PK_T1_IDX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&&
PK_T2_IDX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
PK_T3_IDX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
PK_T4_IDX&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
现在我们分别对这个表做不同形式的analyze table处理 复制内容到剪贴板
代码:analyze table t1 compute analyze
table t2 compute statisanalyze table t3 compute
statistics foranalyze table t4 compute
我们再回头看看这是的oracle数据库对于各种统计信息 复制内容到剪贴板
代码:--这是对于表的统计信息select table_name,num_rows,blocks,empty_blocks from
user_tables where table_name in ('T1','T2','T3','T4');TABLE_NAME&&&&&&&
NUM_ROWS&&&&&&& BLOCKS&&&&&&& EMPTY_BLOCKST1&&&&&&& 3930&&&&&&& 55&&&&&&&
1T2&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
3933&&&&&&& 55&&&&&&& 1--我们可以据此得出结论,只有我们在analyze table命令中指定了for
table或者不指定任何参数的时候,oracle数据库才会给我们统计基于表的统计信息
--这是对于表中字段的统计信息select
table_name,column_name,num_distinct,low_value,high_value,density from
user_tab_columns where table_name in ('T1','T2','T3','T4');TABLE_NAME&&&&&&&
COLUMN_NAME&&&&&&& NUM_DISTINCT&&&&&&& LOW_VALUE&&&&&&& HIGH_VALUE&&&&&&&
DENSITYT1&&&&&&& OBJECT_NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
SUBOBJECT_NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
OBJECT_ID&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
DATA_OBJECT_ID&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
OBJECT_TYPE&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
CREATED&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
LAST_DDL_TIME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
TIMESTAMP&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
STATUS&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
TEMPORARY&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
GENERATED&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T1&&&&&&&
SECONDARY&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&& OBJECT_NAME&&&&&&&
3823&&&&&&& &&&&&&& D3F1BBB736D4C2B7DDCFFABBA7C7E5B5A5&&&&&&&
.062615T2&&&&&&& SUBOBJECT_NAME&&&&&&& 77&&&&&&& 503031&&&&&&&
&&&&&&& .013T2&&&&&&& OBJECT_ID&&&&&&& 3930&&&&&&&
C304062D&&&&&&& C30F4619&&&&&&& .208651T2&&&&&&&
DATA_OBJECT_ID&&&&&&& 3662&&&&&&& C304062D&&&&&&& C30F4619&&&&&&&
.501365T2&&&&&&& OBJECT_TYPE&&&&&&& 15&&&&&&&
E4B&&&&&&& &&&&&&&
.193844T2&&&&&&& CREATED&&&&&&& 3684&&&&&&&
F33&&&&&&& 2F&&&&&&& .988464T2&&&&&&&
LAST_DDL_TIME&&&&&&& 3574&&&&&&& 51B&&&&&&& 2F&&&&&&&
.083892T2&&&&&&& TIMESTAMP&&&&&&& 3649&&&&&&&
382DA&&&&&&&
372DA&&&&&&& .362313T2&&&&&&&
STATUS&&&&&&& 2&&&&&&& 494E&&&&&&& &&&&&&&
.193844T2&&&&&&& TEMPORARY&&&&&&& 2&&&&&&& 4E&&&&&&& 59&&&&&&&
.193844T2&&&&&&& GENERATED&&&&&&& 2&&&&&&& 4E&&&&&&& 59&&&&&&&
.193844T2&&&&&&& SECONDARY&&&&&&& 2&&&&&&& 4E&&&&&&& 59&&&&&&&
.193844T3&&&&&&& OBJECT_NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
T3&&&&&&& SUBOBJECT_NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
OBJECT_ID&&&&&&& 3931&&&&&&& C304062D&&&&&&& C30F461A&&&&&&&
.387688T3&&&&&&& DATA_OBJECT_ID&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
T3&&&&&&& OBJECT_TYPE&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
CREATED&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
LAST_DDL_TIME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
TIMESTAMP&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
STATUS&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
TEMPORARY&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
GENERATED&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
SECONDARY&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&& OBJECT_NAME&&&&&&&
3825&&&&&&& &&&&&&& D3F1BBB736D4C2B7DDCFFABBA7C7E5B5A5&&&&&&&
.496732T4&&&&&&& SUBOBJECT_NAME&&&&&&& 77&&&&&&& 503031&&&&&&&
&&&&&&& .013T4&&&&&&& OBJECT_ID&&&&&&& 3932&&&&&&&
C304062D&&&&&&& C30F461B&&&&&&& .491353T4&&&&&&&
DATA_OBJECT_ID&&&&&&& 3664&&&&&&& C304062D&&&&&&& C30F461B&&&&&&&
.19214T4&&&&&&& OBJECT_TYPE&&&&&&& 15&&&&&&&
E4B&&&&&&& &&&&&&& .6667T4&&&&&&&
CREATED&&&&&&& 3685&&&&&&& F33&&&&&&& 30&&&&&&&
.624152T4&&&&&&& LAST_DDL_TIME&&&&&&& 3575&&&&&&&
51B&&&&&&& 30&&&&&&& .72028T4&&&&&&&
TIMESTAMP&&&&&&& 3650&&&&&&& 382DA&&&&&&&
372DA&&&&&&& .739726T4&&&&&&&
STATUS&&&&&&& 2&&&&&&& 494E&&&&&&& &&&&&&& .5T4&&&&&&&
TEMPORARY&&&&&&& 2&&&&&&& 4E&&&&&&& 59&&&&&&& .5T4&&&&&&& GENERATED&&&&&&&
2&&&&&&& 4E&&&&&&& 59&&&&&&& .5T4&&&&&&& SECONDARY&&&&&&& 2&&&&&&& 4E&&&&&&&
.5/*在这个结果中我们可以看到,oracle数据库给t2,t4的所有字段都做了统计信息.对表t3的object_id(索引字段)做了统计信息.由此得出结论,在指定for
all columns 和不指定任何参数的时候oracle会给所有字段做统计信息,在指定for indexed
columns时,oracle只给[b]有索引的字段进行字段信息统计[/b],如果我们别有必要给所有字段统计信息时,这个属性就很有用了.*/
--这里是对于索引的统计信息select
table_name,index_name,blevel,leaf_blocks,distinct_keys,&&&&&&&
avg_leaf_blocks_per_key avg_leaf_blocks,avg_data_blocks_per_key
avg_data_blocks,clustering_factor,num_rowsfrom user_indexes where table_name
in ('T1','T2','T3','T4');TABLE_NAME&&&&&&& INDEX_NAME&&&&&&& BLEVEL&&&&&&&
LEAF_BLOCKS&&&&&&& DISTINCT_KEYS&&&&&&& AVG_LEAF_BLOCKS&&&&&&&
AVG_DATA_BLOCKS&&&&&&& CLUSTERING_FACTOR&&&&&&& NUM_ROWST1&&&&&&&
PK_T1_IDX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&&
PK_T2_IDX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
PK_T3_IDX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
PK_T4_IDX&&&&&&& 1&&&&&&& 9&&&&&&& 3932&&&&&&& 1&&&&&&& 1&&&&&&& 2143&&&&&&&
--从这里我们可以看出,只有表t4有索引统计信息.--再综合前面的我们就会发现,如果在运行analyze
table是我们不指定参数,oracle将收集对于特定表的所有统计信息(表,索引,表字段的统计信息)
补充,truncate命令不修改以上统计信息复制内容到剪贴板 代码:truncate
table t1;truncate table t2;truncate table t3;truncate table
t4;--我们在查看表和索引的统计信息select table_name,num_rows,blocks,empty_blocks from
user_tables where table_name in ('T1','T2','T3','T4');TABLE_NAME&&&&&&&
NUM_ROWS&&&&&&& BLOCKS&&&&&&& EMPTY_BLOCKST1&&&&&&& 3930&&&&&&& 55&&&&&&&
1T2&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
3933&&&&&&& 55&&&&&&& 1
--索引的统计信息select
table_name,index_name,blevel,leaf_blocks,distinct_keys,&&&&&&&
avg_leaf_blocks_per_key avg_leaf_blocks,avg_data_blocks_per_key
avg_data_blocks,clustering_factor,num_rowsfrom user_indexes where table_name
in ('T1','T2','T3','T4');TABLE_NAME&&&&&&& INDEX_NAME&&&&&&& BLEVEL&&&&&&&
LEAF_BLOCKS&&&&&&& DISTINCT_KEYS&&&&&&& AVG_LEAF_BLOCKS&&&&&&&
AVG_DATA_BLOCKS&&&&&&& CLUSTERING_FACTOR&&&&&&& NUM_ROWST1&&&&&&&
PK_T1_IDX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&&
PK_T2_IDX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
PK_T3_IDX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
PK_T4_IDX&&&&&&& 1&&&&&&& 9&&&&&&& 3932&&&&&&& 1&&&&&&& 1&&&&&&& 2143&&&&&&&
--我们再对以上各表做一次分析analyze table t1 compute statistics for
analyze table t2 compute statisanalyze table
t3 compute statistics foranalyze table t4 compute
--现在再来查看表和索引的统计信息select
table_name,num_rows,blocks,empty_blocks,initial_extent,'8192' block_size from
user_tables where table_name in ('T1','T2','T3','T4');TABLE_NAME&&&&&&&
NUM_ROWS&&&&&&& BLOCKS&&&&&&& EMPTY_BLOCKS&&&&&&& INITIAL_EXTENT&&&&&&&
BLOCK_SIZET1&&&&&&& 0&&&&&&& 0&&&&&&& 8&&&&&&& 65536&&&&&&&
8192T2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 65536&&&&&&&
8192T3&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 65536&&&&&&& 8192T4&&&&&&&
0&&&&&&& 0&&&&&&& 8&&&&&&& 65536&&&&&&& 8192
--索引的统计信息select
table_name,index_name,blevel,leaf_blocks,distinct_keys,&&&&&&&
avg_leaf_blocks_per_key avg_leaf_blocks,avg_data_blocks_per_key
avg_data_blocks,clustering_factor,num_rowsfrom user_indexes where table_name
in ('T1','T2','T3','T4');TABLE_NAME&&&&&&& INDEX_NAME&&&&&&& BLEVEL&&&&&&&
LEAF_BLOCKS&&&&&&& DISTINCT_KEYS&&&&&&& AVG_LEAF_BLOCKS&&&&&&&
AVG_DATA_BLOCKS&&&&&&& CLUSTERING_FACTOR&&&&&&& NUM_ROWST1&&&&&&&
PK_T1_IDX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T2&&&&&&&
PK_T2_IDX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T3&&&&&&&
PK_T3_IDX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& T4&&&&&&&
PK_T4_IDX&&&&&&& 0&&&&&&& 0&&&&&&& 0&&&&&&& 0&&&&&&& 0&&&&&&& 0&&&&&&&
0--由此得出结论,truncate命令不会修改数据的统计信息,--也就是如果我们想让CBO利用合理利用数据的统计信息的时候,需要我们及时的使用analyze命令或者dbms_stats重新统计数据的统计信息
阅读(...) 评论()博客分类:
1.分析更新表的统计信息,,有可能导致执行计划改变.. 2.以的analyze table ab这条为例,生成的统计信息会存在于user_tables这个视图,
select * from user_tables where table_name='ABC';
观察一下NUM_ROWS,BLOCKS,AVG_SPACE,AVG_ROW_LEN几列你就会明白,这就是变化。分析完表之后,会发现DBA_tables 视图中,以前很多列值是空的,现在开始有数据了。这些数据就是分析表得到的. 3.怎么样分析表或索引命令行方式可以采用analyze命令如
Analyze table tablenam
Analyze index|cluster indexname
ANALYZE TABLE tablename COMPUTE STATISTICS FOR TABLE FOR ALL [LOCAL] INDEXES FOR ALL [INDEXED] COLUMNS;
ANALYZE TABLE tablename DELETE STATISTICS ANALYZE TABLE tablename VALIDATE REF UPDATE ANALYZE TABLE tablename VALIDATE STRUCTURE [CASCADE]|[INTO TableName] ANALYZE TABLE tablename LIST CHAINED ROWS [INTO TableName] ;
如果想分析整个用户或数据库,还可以采用工具包,可以并行分析 Dbms_utility(8i以前的工具包) Dbms_stats(8i以后提供的工具包) 如
dbms_stats.gather_schema_stats(User,estimate_percent=&100,cascade=& TRUE);
dbms_stats.gather_table_stats(User,TableName,degree =& 4,cascade =& true);
这是对命令与工具包的一些总结 (1)、对于分区表,建议使用DBMS_STATS,而不是使用Analyze语句。
a) 可以并行进行,对多个用户,多个Table
b) 可以得到整个分区表的数据和单个分区的数据。
c) 可以在不同级别上Compute Statistics:单个分区,子分区,全表,所有分区
d) 可以倒出统计信息
e) 可以用户自动收集统计信息 (2)、DBMS_STATS的缺点
a) 不能Validate Structure
b) 不能收集CHAINED ROWS, 不能收集CLUSTER TABLE的信息,这两个仍旧需要使用
Analyze语句。
c) DBMS_STATS 默认不对索引进行Analyze,因为默认Cascade是False,需要手工指定为True (3)、对于oracle 9里面的External Table,Analyze不能使用,只能使用DBMS_STATS来收集信息.
浏览 12956
lizhiyu211
浏览: 136777 次
来自: 北京
哦,那看来性能确实不行,学习了。
记得还有一次是这么用的,是一 ...
string2020 写道直接执行 xhost + 就行了
恩 ...
Aaron5 写道lizhiyu211 写道Aaron5 写道 ...
lizhiyu211 写道Aaron5 写道这个oracle的 ...
直接执行 xhost + 就行了
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'Oracle Statistic 统计信息小结_数据库技术_Linux公社-Linux系统门户网站
你好,游客
Oracle Statistic 统计信息小结
来源:Linux社区&
作者:tianlesoftware
.& Statistic
&&&&&&&&&&&
&&&&&&&&&&& Managing Optimizer Statistics
&&&&&&&&&&& &
&&&&&&&&&&& &&&&&&&&&&&
&&&&&&&&&&& Statistic Oracle
optimizer SQL
&&&&&&&&&&& 9i RBO(Rule-BasedOptimization)CBO 10gCBO(Cost-BasedOptimization)
&&&&&&&&&&& 1Table statistics
&&&&&&&&&&&&&&&&&&&&&&& Number of rows
&&&&&&&&&&&&&&&&&&&&&&& Number of blocks
&&&&&&&&&&&&&&&&&&&&&&& Average row length
&&&&&&&&&&& 2Column statistics
&&&&&&&&&&&&&&&&&&&&&&& Number of distinct values (NDV) in column
&&&&&&&&&&&&&&&&&&&&&&& Number of nulls in column
&&&&&&&&&&&&&&&&&&&&&&& Data distribution (histogram)
&&&&&&&&&&& 3Index statistics
&&&&&&&&&&&&&&&&&&&&&&& Number of leaf blocks
&&&&&&&&&&&&&&&&&&&&&&& Levels
&&&&&&&&&&&&&&&&&&&&&&& Clustering factor
&&&&&&&&&&& 4System statistics
&&&&&&&&&&&&&&&&&&&&&&& I/O performance and
&&&&&&&&&&&&&&&&&&&&&&& CPU performance and utilization
&&&&&&&&&&& Oracle Statistic analyze DBMS_STATS Oracle DBMS_STATSDBMS_STATS analyze
DBMS_STATSBlog
&&&&&&&&&&&
&&&&&&&&&&& SQL&analyze table tablenam
&&&&&&&&&&& SQL&analyze table tablename compute statis
&&&&&&&&&&& SQL&analyze table tablename delete statistics
&&&&&&&&&&& Oracle Statistic Oracle
&&&&&&&&&&& Oracle Automatic Statistics Gathering Scheduler
Job GATHER_STATS_JOB, Job2
&&&&&&&&&&& 1Missing statistics
&&&&&&&&&&& 2Stale statistics
&&&&&&&&&&& Job SchedulerScheduler maintenance windows opengather job job 106
&&&&&&&&&&& Scheduler Job stop_on_window_close GATHER_STATS_JOB True. FalseGATHER_STATS_JOB
&&&&&&&&&&& Gather_stats_job dbms_stats.gather_database_stats_job_procstatistics
statistics
&&&&&&&&&&& 1
&&&&&&&&&&& 210%rows stale statistics
SQL& select job_name, program_name,enabled,stop_on_window_close& from dba_scheduler_jobs where job_name = 'gather_stats_job';
job_name&&&&&&&& &&&&&&&& program_name& &enabl &stop_on_window_close
-------------------- -------------------- &----- --------------------
gather_stats_job &gather_stats_prog&&& true& true
STATISTICS_LEVEL
&&&&&&&&&&& Oracle STATISTICS_LEVEL
&&&&&&&&&&&
STATISTIC_LEVEL
ALL( TYPICAL)STATISTIC_LEVEL GATHER_STATS_JOB
&&&&&&&&&&& 10gSTATISTICS_LEVELbasic10g
&&&&&&&&&&& 1ASH(Active Session History)
&&&&&&&&&&& 2ASSM(Automatic Shared Memory Management)
&&&&&&&&&&& 3AWR(Automatic Workload Repository)
&&&&&&&&&&& 4ADDM(Automatic Database Diagnostic Monitor)
SQL& show parameter statistics_level
NAME&&&&&&&&&&& TYPE&&&&&&& VALUE
------------------------- ----------- ------------------------------
statistics_level&&&& &string&&&&& TYPICAL
&&&&&&&&&&& insertsupdatesdeletes
user_tab_modifications
&&&&&&&&&&&
user_tab_modificationsdbms_stats.flush_database_monitoring_info
&&&&&&&&&&& 10% gather_database_stats
gather_schema_stats stale statistics.
&&&&&&&&&&& Jobenable statistics_level BasicAWR
& DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');
&&&&&&&&&&& system schemasdbms_stats.gather_dictionary_stats system schemasSYSSYSTEMchemasCTXSYS DRSYS.
DBMS_STATS statistics
GATHER_INDEX_STATS
Index statistics
GATHER_TABLE_STATS
Table, column, and index statistics
GATHER_SCHEMA_STATS
Statistics for all objects in a schema
GATHER_DICTIONARY_STATS
Statistics for all dictionary objects
GATHER_DATABASE_STATS
Statistics for all objects in a database
&&&&&&&&&&& Oracle
&&&&&&&&&&&
RBO Oracle 9i
CBO Oracle 10g
CostCPU+I/O cost SQL
2OracleOptimizer_mode
&&&&&&&&&&&&&&&&&&&&&&& 9ifirst_rows,all_rows,first_rows_n,rule,choose
&&&&&&&&&&&&&&&&&&&&&&& 10g11g: first_rows,all_rows,first_rows_nrulechoose
&&&&&&&&&&& Oracle 10gRBORBO
optimizer_mode
&&&&&&&&&&& sql&alter session set optimizer_mode=first_rows/all_rows
3OPTIMIZER_INDEX_COST_ADJ
&&&&&&&&&&& OPTIMIZER_INDEX_COST_ADJOracleMultiBlockI/OSingle-blockI/O
&&&&&&&&&&& OPTIMIZER_INDEX_COST_ADJI/OI/OCBOCBO100
&&&&&&&&&&&
&&&&&&&&&&& OPTIMIZER_INDEX_COST_ADJ lets you tune optimizer behavior for access path selection to be more or less index friendly—that is, to make the optimizer more or less prone to selecting an index access path over a full table scan.
&&&&&&&&&&& The default for this parameter is 100 percent, at which the optimizer evaluates index access paths at the regular cost. Any other value makes the optimizer evaluate the access path at that percentage of the regular cost. For example, a setting of 50 makes the index access path look half as expensive as normal.
&&&&&&&&&&& 9isegmentRBO
&&&&&&&&&&& 10gsegment Oracle
&&&&&&&&&&&
相关资讯 & & &
& (07/29/:43)
& (07/29/:55)
& (08/11/:36)
& (07/29/:28)
& (07/29/:37)
& (04/08/:32)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
rr 发表于 rr

我要回帖

更多关于 oracle analyze index 的文章

 

随机推荐