龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

Oracle数据库11g:SQL计划管理(二)(1)(4)

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
从测试环境中导出SQL计划基线 象列表2.7展示的那样,我将才我的模拟测试环境中导出捕获的SQL计划基线: ◆首先,我将使用存储过程DBMS_SPM.CREATE_STGTAB_B
从测试环境中导出SQL计划基线
象列表2.7展示的那样,我将才我的模拟测试环境中导出捕获的SQL计划基线:

◆首先,我将使用存储过程DBMS_SPM.CREATE_STGTAB_BASELINE创建一个SQL计划管理临时表

◆然后我会使用函数DBMS_SPM.PACK_STGTAB_BASELINE用SYS用户创建的SQL语句填充那个临时表


◆最后,我将调用数据泵导出工具导出临时表的元数据和内容

导入SQL计划基线到一个生产环境
为了结束这个情景,我将模拟部署SQL计划基线到一个生产环境(查看列表2.8):

◆首先,我将导入SQL计划基线临时表到我的目标生产环境

◆因为我正使用相同的Oracle 11g数据库模拟测试和生产环境,我将再次使用存储过程DBMS_SPM.DROP_SQL_PLAN_BASELINE清除所有具有SPM_2_2注释信息的SQL计划基线


◆然后,我将在我的生产数据库中通过函数DBMS_SPM.UNPACK_STGTAB_BASELINE直接重新构建那些基线

概念证明
我已经通过查询数据字典视图DBA_SQL_PLAN_BASELINES校验了成功的“unpacking”。(在本系列前面的文章中我使用过相同的查询,请参考列表1.3)。这六个目标查询的SQL计划基线显示的输出结果在列表2.9中,将MANUAL_LOAD值标记为ORIGIN以指示来源于DBA的干预而不是自动SQL计划基线捕获方式。

下一步

我已经讲述了在数据库升级过程中SQL计划基线如何有效地限制(如果不能消除)SQL语句性能突然倒退,以及在部署一个崭新的应用程序之前如何捕获SQL计划基线以限制计划性能降低,在本系列下一篇也是最后一篇中,我将讲述另外一个SQL计划管理情景,在Oracle 10g和11g数据库之间不用导出SQL计划基线进行数据库升级,我还将讨论如何:

◆控制自动演变SQL计划基线
◆使用手工方法撤销计划演变
◆管理和监视自动清除过时的SQL计划基线

精彩图集

赞助商链接