利用dbms_stats收集统计信息(待续)

来源:互联网 发布:启动盘制作工具mac版 编辑:程序博客网 时间:2024/05/17 05:01

统计收集的权限
普通用户必须有execute_catalog_role权限
grant execute_catalog_role to hr;
grant connect,resource,analyze any to hr;


统计收集的时间考虑
当参数STATISTICS_LEVEL设置为TYPICAL或者ALL,系统会在夜间自动收集统计信息。


表统计;

统计表的行数,块数,行平均长度;

统计信息保存在all_tables表:查看NUM_ROWS,BLOCKS,AVG_ROW_LEN列列的数据;

列统计;

统计列中唯一值的数量(NDV),NULL值的数量,数据分布;

统计信息保存在DBA_TAB_COLUMNS表:查看NUM_DISTINCT,NUM_NULLS,HISTOGRAM列的数据;

索引统计;

统计索引的叶块数量,等级,聚簇因子;

统计信息保存在DBA_INDEXES表:查看LEAF_BLOCKS,CLUSTERING_FACTOR,BLEVEL列的数据;

系统统计;

统计--I/O性能与使用率;CPU性能与使用率;

存储在aux_stats$中,需要使用dbms_stats收集,I/O统计在X$KCFIO中;


---------------------------------------------------------------------------------------

利用dbms_stats收集

dbms_stats能良好地估计统计数据(尤其是针对较大的分区表),并能获得更好的统计结果,最终制定出速度更快的SQL执行计划。

这个包的下面四个存储过程分别收集index、table、schema、database的统计信息:
dbms_stats.gather_table_stats     收集表、列和索引的统计信息;
dbms_stats.gather_schema_stats    收集SCHEMA下所有对象的统计信息;
dbms_stats.gather_index_stats     收集索引的统计信息;
dbms_stats.gather_system_stats    收集系统统计信息
dbms_stats.GATHER_DICTIONARY_STATS: 所有字典对象的统计;
DBMS_STATS.GATHER_DICTIONARY_STATS 其收集所有系统模式的统计

dbms_stats.delete_table_stats     删除表的统计信息
dbms_stats.delete_index_stats     删除索引的统计信息
dbms_stats.export_table_stats     输出表的统计信息
dbms_stats.create_state_table
dbms_stats.set_table_stats     设置表的统计
dbms_stats.auto_sample_size