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 傳回一個沒有統計分析資料的對象清單。