GATHER_TABLE_STATS

收集Schema中所有对象的统计信息。

声明

DBMS_STATS.GATHER_TABLE_STATS (
            ownname                                 VARCHAR2,
            tabname                                 VARCHAR2,
            partname                                VARCHAR2 DEFAULT NULL,
            estimate_percent                        NUMBER   DEFAULT 100,
            block_sample                            BOOLEAN  DEFAULT FALSE,
            method_opt                              VARCHAR2 DEFAULT 'FOR ALL COULMNS',
            degree                                  NUMBER   DEFAULT 1,
            granularity                             VARCHAR2 DEFAULT 'ALL',
            cascade                                 BOOLEAN  DEFAULT FALSE,
            stattab                                 VARCHAR2 DEFAULT NULL,
            statid                                  VARCHAR2 DEFAULT NULL,
            statown                                 VARCHAR2 DEFAULT NULL,
            no_invalidate                           BOOLEAN  DEFAULT FALSE,
            stattype                                VARCHAR2 DEFAULT 'DATA',
            force                                   BOOLEAN DEFAULT FALSE)

结构

参数 说明
ownname Schema的用户名。
tabname 参与统计的列的采样率。
partname 获取统计信息的表的分区或子分区名称(暂未启用)。
estimate_percent 参与统计的列的采样率。
block_sample 是否进行块采样,默认列行采样(暂未启用)。
method_opt 可选函数操作(暂未启用)。
degree 并行度(暂未启用)。
granularity 采样的粒度(暂未启用)。
cascade 是否统计所有索引信息(暂未启用)。
stattab 统计表名称(暂未启用)。
statid 在stattab中统计记录id(暂未启用)。
statown 统计表所在schema(如果与ownname不同,暂未启用)。
no_invalidate 是否生效相关游标(暂未启用)。
stattype 统计类型(暂未启用)。
force 是否统计加锁对象(暂未启用)。

示例

DROP TABLE user1.tab1 CASCADE;
DROP USER user1;
exec public.dbms_stats.DROP_STAT_TABLE('SYSDBA','USER1_STAT_TABLE');

create user user1 with password '123456Hh';
create table user1.tab1
(
    a int, 
    b text
);


exec public.dbms_stats.CREATE_STAT_TABLE('SYSDBA','USER1_STAT_TABLE',null);


--获得user1下的表tab1的统计信息
exec public.dbms_stats.gather_table_stats('USER1','TAB1');


exec public.dbms_stats.export_table_stats('USER1','TAB1', null, 'USER1_STAT_TABLE');


select STANAME from USER1_STAT_TABLE order by STANAME;
STANAME(name)      |
-------------------
USER1_TAB1_DBMS_STA|
TS$                |
-------------------
USER1_TAB1_DBMS_STA|
TS$                |
总数目:2


exec public.dbms_stats.DROP_STAT_TABLE('SYSDBA','USER1_STAT_TABLE');
DROP TABLE user1.tab1 CASCADE;
DROP USER user1;