Welcome 微信登录

首页 / 数据库 / MySQL / 用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");查看Oracle的redo日志切换频率Global Enqueue Services Deadlock导致节点重启相关资讯      Oracle基础教程 
  • Oracle块编程返回结果集详解  (11/10/2013 10:45:58)
  • Oracle基础教程之设置系统全局区  (08/22/2013 14:24:00)
  • Oracle基础教程知识点总结  (06/18/2013 07:43:32)
  • Oracle基础教程之tkprof程序详解  (10/22/2013 11:49:50)
  • Oracle基础教程之sqlplus汉字乱码  (07/18/2013 16:30:00)
  • Oracle 管理之 Linux 网络基础  (02/16/2013 18:37:35)
本文评论 查看全部评论 (0)
表情: 姓名: 字数