DBMS_STATS包-收集统计信息!

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

(3)degree 用来指定分析时使用的并行度,有以下设置:
 null 如果设置为null,oracle将使用被分析表属性的并行度。
 一个数值 可以显示的指定分析时使用的并行度。
 DEFAULT_DEGREE 如果设置为还这个值,oracle将根据初始化参数中相关参数的设置来决定使用的并行度。

(4)granularity 分析的粒度,有以下几个设置:
 all 将会对表的全局、分区、子分区的数据都做分析。
 auto oracle根据分区的类型,自动决定哪一种粒度的分析。
 global 只做全局级别的分析。
 global and partition 只对全局和分区级别做分析,对子分区不做分析,这是和all的一个区别。
 partition 只在分区级别做分析。
 subpartition 只在子分区做分析。


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 返回一个没有统计分析数据的对象列表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值