23.6.2使用DBMS_SQLTUNE传输SQL调整集
您可以使用DBMS_SQLTUNE或DBMS_SQLSET包中的三个子程序来传输SQL调整集。
下表描述了与传输SQL调整集相关的过程。
表23-6传输SQL优化集的过程
| DBMS_SQLTUNE过程 | 等效的DBMS_SQLSET过程 | 描述 |
|---|---|---|
|
| 创建一个临时表以保存导出的SQL调整集 |
|
| 使用SQL调整集填充登台表 |
|
| 将SQL调优集从登台表复制到数据库中 |
假设条件
本教程假定以下内容:
- 具有回归SQL的STS驻留在当前版本中创建的生产数据库中。
- 您在Oracle数据库11g第2版(11.2)中创建的远程测试数据库上运行SQL Performance Analyzer试用。
- 您想要将STS从生产数据库复制到测试数据库,并调整SQL Performance Analyzer试用中的回归。
- 您想使用Oracle Database Pump在数据库主机之间传输SQL调整集。
- 您使用
DBMS_SQLTUNE而不是DBMS_SQLSET。
运输STS:
- 在SQL * Plus或SQL Developer中,以具有管理特权的用户身份登录数据库。
- 使用该
CREATE_STGTAB_SQLSET过程创建一个临时表,以保留导出的SQL调整集。以下示例
my_11g_staging_table在dba1模式中创建,并将登台表的格式指定为11.2:BEGIN DBMS_SQLTUNE.CREATE_STGTAB_SQLSET ( table_name => 'my_10g_staging_table' , schema_name => 'dba1' , db_version => DBMS_SQLTUNE.STS_STGTAB_11_2_VERSION ); END; / - 使用以下
PACK_STGTAB_SQLSET过程用SQL调整集填充登台表。以下示例填充由
dba1.my_11g_staging_table拥有的STS :my_stshrBEGIN DBMS_SQLTUNE.PACK_STGTAB_SQLSET ( sqlset_name => 'sqlt_wkld_sts' , sqlset_owner => 'sh' , staging_table_name => 'my_11g_staging_table' , staging_schema_owner => 'dba1' , db_version => DBMS_SQLTUNE.STS_STGTAB_11_2_VERSION ); END; / - 如果有必要,重新映射。根据上述的STS的声明容器ID值“ 运送SQL调整设置当CON_DBID值不同的基本步骤 ”。
- 使用Oracle Data Pump导出登台表的内容。
例如,
expdp在操作系统提示符下运行命令:expdp dba1 DIRECTORY=dpump_dir1 DUMPFILE=sts.dmp TABLES=my_11g_staging_table - 将转储文件传输到测试数据库主机。
- 以管理员身份登录到测试主机,然后使用Oracle Data Pump导入登台表的内容。
例如,
impdp在操作系统提示符下运行命令:impdp dba1 DIRECTORY=dpump_dir1 DUMPFILE=sts.dmp TABLES=my_11g_staging_table - 在测试数据库上,执行以下
UNPACK_STGTAB_SQLSET过程以将SQL调整集从登台表复制到数据库中。下面的示例显示如何解压缩SQL调整集:
BEGIN DBMS_SQLTUNE.UNPACK_STGTAB_SQLSET ( sqlset_name => '%' , replace => true , staging_table_name => 'my_11g_staging_table'); END; /
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




