DELETE_TABLE_STATS

删除表对象的统计信息

声明

DBMS_STATS.DELETE_TABLE_STATS (
    ownname                                     VARCHAR2,
    tabname                                     VARCHAR2,
    partname                                    VARCHAR2 DEFAULT NULL,
    stattab                                     VARCHAR2 DEFAULT NULL,
    statid                                      VARCHAR2 DEFAULT NULL,
    cascade_parts                               BOOLEAN  DEFAULT TRUE,
    cascade_columns                             BOOLEAN  DEFAULT TRUE,
    cascade_indexes                             BOOLEAN  DEFAULT TRUE,
    statown                                     VARCHAR2 DEFAULT NULL,
    no_invalidate                               BOOLEAN  DEFAULT FALSE,
    force                                       BOOLEAN  DEFAULT FALSE);

结构

参数 说明
ownname 目标Schema名称。
tabname 要被统计的列的表名。
partname 获取统计信息的表的分区或子分区名称(暂未启用)。
stattab 统计表名,将统计信息写入统计表中(暂未启用)。
statid 在stattab中统计记录id(暂未启用)。
cascade_parts 此参数标记此存储过程是否在在分区partname上生效(暂未启用)。
cascade_columns 此参数标记是否调用DELETE_COLUMN_STATS存储过程(暂未启用)。
cascade_indexes 此参数标记是否调用DELETE_INDEX_STATS存储过程(暂未启用)。
statown 统计表所在Schema,默认为ownname所在schema(暂未启用)。
no_invalidate 收集统计信息相关游标是否有效。默认值为False(暂未启用)。
force 是否强制删除上锁的统计记录(暂未启用)。

示例

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

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);

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


--删除user1下的表tab1的统计信息
exec public.dbms_stats.DELETE_TABLE_STATS('USER1','TAB1');
delete from USER1_STAT_TABLE;

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

select STANAME from USER1_STAT_TABLE order by STANAME;
STANAME(name)      |
总数目:0

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