当前位置:  数据库>oracle

用DBMS_STATS导入导出Oracle统计信息

    来源: 互联网  发布时间:2017-05-07

    本文导语: 今天客户反映查询慢,由于是生产环境,不能随便测试,因此参考下面的blog,把统计信息导出到测试服务器进行sql语句调优。 1.创建存放统计信息表EXECUTE  DBMS_STATS.CREATE_STAT_TABLE ('SCOTT', 'STATTAB','SYSAUX'); 在 SYSAUX 表空间上创建 ST...

今天客户反映查询慢,由于是生产环境,不能随便测试,因此参考下面的blog,把统计信息导出到测试服务器进行sql语句调优。
 
1.创建存放统计信息表
EXECUTE  DBMS_STATS.CREATE_STAT_TABLE ('SCOTT', 'STATTAB','SYSAUX');
 
在 SYSAUX 表空间上创建 STATTAB 用以存储统计信息, 所有者是 SCOTT 用户。
 
2.导出schema的统计信息
EXEC dbms_stats.EXPORT_SCHEMA_STATS
(ownname=>'scott',stattab=>'stattab',STATID=>'foo_20120427');
 
这里建议手动设定一下 STATID. STATID 命名规则建议用 对象名(SCHEMA名)+ 时间(注意粒度).
 
导出table表的统计信息
EXEC dbms_stats.export_table_stats
(OWNNAME=>'scott',TABNAME=>'foo',STATTAB=>'stattab',STATID=>'foo_20120427');
 
3.用expdp导出统计信息表
expdp system/Oracle DIRECTORY=expdimp DUMPFILE=scottexp20110426.dmp SCHEMAS='scott'logfile=scottexp20120427.log EXCLUDE=TABLE:"IN (''stattab'')"
 
4.把expdp导出的文件scottexp20110426.dmp 上传到测试服务器,方法很多比如scp
 
5.导入schema的统计信息
 
恢复该表的统计信息(之前要导出当前的统计信息):
exec DBMS_STATS.IMPORT_SCHEMA_STATS(ownname=>'scott',stattab=>'stattab',STATID=>'foo_20120427');
 
导入table表的统计信息
EXEC dbms_stats.import_table_stats
(OWNNAME=>'scott',TABNAME=>'foo',STATTAB=>'stattab',STATID=>'foo_20120427');
 
ownname可以指定新的
 
6.删除统计信息表
 
exec DBMS_STATS.DROP_STAT_TABLE('scott','stattab');



































    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,