用DBMS_STATS导入导出oracle统计信息

今天客户反映查询慢,由于是生产环境,不能随便测试,因此参考下面的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');
 
 
 
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12457158/viewspace-722344/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12457158/viewspace-722344/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值