Home > Database > Mysql Tutorial > 用DBMS_STATS导入导出Oracle统计信息

用DBMS_STATS导入导出Oracle统计信息

WBOY
Release: 2016-06-07 17:19:50
Original
954 people have browsed it

今天客户反映查询慢,由于是生产环境,不能随便测试,因此参考下面的blog,把统计信息导出到测试服务器进行sql语句调优。1.创建存

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

linux

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template