DELETE_SCHEMA_STATS

删除整个schema的所有统计信息。

声明

DBMS_STATS.DELETE_SCHEMA_STATS (
        ownname                                 VARCHAR2,
        stattab                                 VARCHAR2 DEFAULT NULL,
        statid                                  VARCHAR2 DEFAULT NULL,
        statown                                 VARCHAR2 DEFAULT NULL,
        no_invalidate                           BOOLEAN DEFAULT FALSE,
        force                                   BOOLEAN DEFAULT FALSE);

结构

参数 说明
ownname 目标Schema名称。
stattab 统计表名称。如果值为NULL,将直接从数据字典中删除统计信息。
statid 统计表stattab中统计记录Id(可选)。此参数只与stattab相关。
statown 统计表所在schema(如果与ownname不同)。
no_invalidate 收集统计信息相关游标是否有效。默认值为False。(暂时不生效)

示例

DROP TABLE user1.tab1 CASCADE;
DROP TABLE user1.tab2 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
);
create table user1.tab2
(
    a int, 
    b text
);

create or replace procedure dbms_stats_gather_schema() as
declare
    a DBMS_STATS.ObjectTab;
    b DBMS_STATS.ObjectTab;
begin
    public.dbms_stats.GATHER_SCHEMA_STATS(
        'USER1', 100, false, '', 1, '', false, '', '', 
        '', a, null, false, false, b);
end;

/

--构建环境
exec public.dbms_stats.CREATE_STAT_TABLE('SYSDBA','USER1_STAT_TABLE',null);

exec dbms_stats_gather_schema();

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

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


--删除user1下的所有表对象的统计信息
exec public.dbms_stats.DELETE_SCHEMA_STATS('USER1');


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

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 TABLE user1.tab2 CASCADE;
DROP USER user1;