将优化器统计信息传输到测试数据库:示例
您可以使用Oracle Data Pump将模式统计信息从生产数据库传输到测试数据库。
前提条件和限制
准备导出优化器统计信息时,请注意以下几点:
- 在导出统计信息之前,必须创建一个表来保存统计信息。该过程将
DBMS_STATS.CREATE_STAT_TABLE创建统计信息表。 - 优化器不使用存储在用户所有表中的统计信息。优化器使用的唯一统计信息是存储在数据字典中的统计信息。要使优化器使用用户定义的表中的统计信息,请使用
DBMS_STATS导入过程将这些统计信息导入到数据字典中。 - 数据泵导出和导入实用程序与表一起从数据库导出和导入优化器统计信息。当列具有系统生成的名称时,原始导出(
exp)不会随数据一起导出统计信息,但是此限制不适用于数据泵导出。注意:
使用导出和导入统计信息
DBMS_STATS是与使用数据泵导出和导入不同的操作。
假设条件
本教程假定以下内容:
- 您想
sh在生产数据库上生成代表性的模式统计数据,并用于DBMS_STATS将其导入测试数据库。 dba1生产和测试数据库上都存在管理用户。- 您打算创建表
opt_stats来存储模式统计信息。 - 您打算使用Oracle Data Pump导出和导入表
opt_stats。
要生成模式统计信息并将其导入到单独的数据库中:
- 在生产主机上,启动SQL * Plus并以管理员身份连接到生产数据库
dba1。 - 创建一个表来保存生产统计信息。
例如,执行以下PL / SQL程序以创建用户统计表
opt_stats:BEGIN DBMS_STATS.CREATE_STAT_TABLE ( ownname => 'dba1' , stattab => 'opt_stats' ); END; / - 收集架构统计信息。
例如,手动收集架构统计信息,如下所示:
-- generate representative workload EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SH'); - 使用
DBMS_STATS导出的统计数据。例如,检索架构统计信息并将其存储在
opt_stats先前创建的表中:BEGIN DBMS_STATS.EXPORT_SCHEMA_STATS ( ownname => 'dba1' , stattab => 'opt_stats' ); END; / - 使用Oracle Data Pump导出统计信息表的内容。
例如,
expdp在操作模式提示符下运行命令:expdp dba1 DIRECTORY=dpump_dir1 DUMPFILE=stat.dmp TABLES=opt_stats - 将转储文件传输到测试数据库主机。
- 登录到测试主机,然后使用Oracle Data Pump导入统计信息表的内容。
例如,
impdp在操作模式提示符下运行命令:impdp dba1 DIRECTORY=dpump_dir1 DUMPFILE=stat.dmp TABLES=opt_stats - 在测试主机上,启动SQL * Plus并以管理员身份连接到测试数据库
dba1。 - 用于
DBMS_STATS从用户统计信息表中导入统计信息并将其存储在数据字典中。以下PL / SQL程序将表的统计信息导入表中
opt_stats的数据字典中:BEGIN DBMS_STATS.IMPORT_SCHEMA_STATS( ownname => 'dba1' , stattab => 'opt_stats' ); END; /
也可以看看:
- Oracle Database PL / SQL软件包和类型参考以了解该
DBMS_STATS.CREATE_STAT_TABLE功能 - 《 Oracle数据库PL / SQL软件包和类型参考》中的统计信息传递函数概述
- Oracle Database Utilities了解Oracle Data Pump
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




