oracle数据库导入/导出统计信息数据

教程发布:风哥 教程分类:ITPUX技术网 更新日期:2022-02-12 浏览学习:380

oracle数据库导入/导出统计信息数据
一个用户paul
SQL> create table test as select * from dba_objects;
SQL> create index ind_test on test(object_id);

创建一个表,存放export出来的统计信息
SQL> exec dbms_stats.create_stat_table(ownname => 'PAUL', stattab => 'STAT_AT', tblspace => 'SYSTEM');
刚创建完成,记录数为0
SQL> select count(*) from STAT_AT;
COUNT(*)
----------
0

收集表和索引的统计信息
SQL>exec dbms_stats.gather_table_stats(ownname=>'PAUL',tabname=>'TEST',estimate_percent => 100,method_opt=> 'FOR ALL INDEXED COLUMNS');

SQL>exec dbms_stats.gather_index_stats(ownname=>'PAUL',indname=>'IND_TEST',estimate_percent=>100);

我们导出统计信息
SQL>exec dbms_stats.export_table_stats(ownname=>'PAUL', tabname=>'TEST', stattab=> 'STAT_AT');
SQL> select count(*) from STAT_AT;
COUNT(*)
----------
3

切换到另外一个用户test
SQL> create table test as select * from dba_objects;
Table created.
SQL> create index ind_test on test(object_id);
Index created.
SQL> create table STAT as select * from paul.STAT_AT;
Table created.

如果直接执行当前的用户与表名,可以执行成功,但是,没有统计数据导入,需要把原来的导出用户更新成导入用户。
[color=purple]SQL>exec dbms_stats.import_table_stats(ownname=>'TEST', tabname=>'TEST', stattab => 'STAT');
[color=purple]SQL>update stat set c5='TEST' where c5='PAUL'
[color=purple]SQL>commit;
[color=purple]SQL>exec dbms_stats.import_table_stats(ownname=>'TEST', tabname=>'TEST', stattab => 'STAT');
然后再导入成功,导入信息包括表统计,索引统计信息,列的分析信息

有关dbms_stats包收集统计信息和删除统计信息的用法
1.收集统计信息
DBMS_STATS.GATHER_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
estimate_percent NUMBER DEFAULT to_estimate_percent_type
(get_param('ESTIMATE_PERCENT')),
block_sample BOOLEAN DEFAULT FALSE,
method_opt VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree NUMBER DEFAULT to_degree_type(get_param('DEGREE')),
granularity VARCHAR2 DEFAULT 'AUTO',
cascade BOOLEAN DEFAULT to_cascade_type(get_param('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')));

[color=purple]2.删除统计信息
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 to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);

本文标签:
网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】
【下一篇】