1、gather_table_stats 存储过程用来收集表上的相关信息。
procedure gather_table_stats(ownname varchar2, --所有者名字 tabname varchar2, --要分析的表名 partname varchar2 default null, --要分析的分区名 estimate_percent number default DEFAULT_ESTIMATE_PERCENT, --采样的比例 block_sample boolean default FALSE, --是否块分析 method_opt varchar2 default DEFAULT_METHOD_OPT, --分析的方式 degree number default to_degree_type(get_param('DEGREE')), --分析的并行度 granularity varchar2 default DEFAULT_GRANULARITY, --分析的粒度 cascade boolean default DEFAULT_CASCADE, --是否分析索引 stattab varchar2 default null, --使用的性能表名 statid varchar2 default null, --性能表的标识 statown varchar2 default null, --性能表的所有者 no_invalidate boolean default to_no_invalidate_type(get_param('NO_INVALIDATE')), --是否有验证游标的依存关系 stattype varchar2 default 'DATA', --统计数据的类型。允许的唯一值是DATA force boolean default FALSE); --强制分析,即时表被锁定参数说明:
(1)estimate_percent 这是一个百分比值,它告诉分析包需要使用表中数据的多大比例来做分析。
(2)method_opt 这个参数用来定义直方图的分析值。接受下列选项:
FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause] FOR COLUMNS [size clause] column [size_clause] [,column [size_clause]...] size_clause is defined as size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY} column is defined as column := column_name | extension name | extension - integer : Number of histogram buckets. Must be in the range [1,254]. - REPEAT : Collects histograms only on the columns that already have histograms - AUTO : Oracle determines the columns to collect histograms based on data distribution and the workload of the columns. - SKEWONLY : Oracle determines the columns to collect histograms based on the data distribution of the columns. - column_name : Name of a column - extension : can be either a column group in the format of (column_name, Colume_name [, ...]) or an expression默认值为:
SQL> select dbms_stats.get_param('method_opt') from dual; DBMS_STATS.GET_PARAM('METHOD_OPT') -------------------------------------------------------------------------------- FOR ALL COLUMNS SIZE AUTO
2、gather_schema_stats 存储过程用于对某个用户下所有的对象进行分析。
procedure gather_schema_stats(ownname varchar2, estimate_percent number default DEFAULT_ESTIMATE_PERCENT, block_sample boolean default FALSE, method_opt varchar2 default DEFAULT_METHOD_OPT, degree number default to_degree_type(get_param('DEGREE')), granularity varchar2 default DEFAULT_GRANULARITY, cascade boolean default DEFAULT_CASCADE, stattab varchar2 default null, statid varchar2 default null, options varchar2 default 'GATHER', objlist out ObjectTab, statown varchar2 default null, no_invalidate boolean default to_no_invalidate_type(get_param('NO_INVALIDATE')), gather_temp boolean default FALSE, gather_fixed boolean default FALSE, stattype varchar2 default 'DATA', force boolean default FALSE, obj_filter_list ObjectTab default null); procedure gather_schema_stats(ownname varchar2, estimate_percent number default DEFAULT_ESTIMATE_PERCENT, block_sample boolean default FALSE, method_opt varchar2 default DEFAULT_METHOD_OPT, degree number default to_degree_type(get_param('DEGREE')), granularity varchar2 default DEFAULT_GRANULARITY, cascade boolean default DEFAULT_CASCADE, stattab varchar2 default null, statid varchar2 default null, options varchar2 default 'GATHER', statown varchar2 default null, no_invalidate boolean default to_no_invalidate_type(get_param('NO_INVALIDATE')), gather_temp boolean default FALSE, gather_fixed boolean default FALSE, stattype varchar2 default 'DATA', force boolean default FALSE, obj_filter_list ObjectTab default null);这个存储过程大多数参数和gather_table_stats是一样的,值得一提的是有一个options参数,它有以下几种选项:
GATHER
对用户下所有的对象进行分析。
GATHER
AUTO
由oracle决定那些对象需要分析以及如何分析。
GATHER
STALE oracle只对陈旧的数据进行分析。
GATHER
EMPTY 只对没有统计分析数据的对象进行分析。
LIST AUTO 返回一个
GATHER
AUTO
产生的被分析对象的列表。
LIST
STALE 返回一个oracle收集的统计信息过时的对象列表。
LIST
EMPTY 返回一个没有统计分析数据的对象列表。