GATHER_SCHEMA_STATS¶
收集Schema中所有对象的统计信息。
声明¶
DBMS_STATS.GATHER_SCHEMA_STATS (
ownname VARCHAR2,
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,
options VARCHAR2 DEFAULT 'GATHER',
objlist ObjectTab DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT FALSE,
force BOOLEAN DEFAULT FALSE,
obj_filter_list ObjectTab DEFAULT NULL)
结构¶
| 参数 | 说明 |
|---|---|
| ownname | Schema的用户名。 |
| estimate_percent | 参与统计的列的采样率。 |
| block_sample | 是否进行块采样,默认列行采样(暂未启用)。 |
| method_opt | 可选函数操作(暂未启用)。 |
| degree | 并行度(暂未启用)。 |
| granularity | 采样的粒度(暂未启用)。 |
| cascade | 是否统计所有索引信息(暂未启用)。 |
| stattab | 统计表名称(暂未启用)。 |
| statid | 在stattab中统计记录id(暂未启用)。 |
| options | 指定要被统计的对象类型(暂未启用)。 |
| objlist | 存放过期的对象列表(暂未启用)。 |
| statown | 统计表所在schema(如果与ownname不同,暂未启用)。 |
| no_invalidate | 是否生效相关游标(暂未启用)。 |
| force | 是否统计加锁对象(暂未启用)。 |
| obj_filter_list | 对象过滤器列表(暂未启用)。 |
示例¶
-- 清理环境
exec public.dbms_stats.DELETE_SCHEMA_STATS('USER1');
exec public.dbms_stats.DROP_STAT_TABLE('SYSDBA','USER1_STAT_TABLE');
DROP TABLE user1.tab1 CASCADE;
DROP TABLE user1.tab2 CASCADE;
DROP USER user1 CASCADE;
--创建模式下的两个表,分别为user1.tab1和user1.tab2
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);
--调用dbms_stats_gather_schema,获得user1下的所有表对象的统计信息
exec dbms_stats_gather_schema();
exec public.dbms_stats.EXPORT_SCHEMA_STATS('USER1','USER1_STAT_TABLE');
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
exec public.dbms_stats.DELETE_SCHEMA_STATS('USER1');
exec public.dbms_stats.DROP_STAT_TABLE('SYSDBA','USER1_STAT_TABLE');
DROP TABLE user1.tab1 CASCADE;
DROP TABLE user1.tab2 CASCADE;
DROP USER user1;