Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103769438
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-22 19:45:45

作者: Jim Czuprynski/黄永兵 译 出处:51CTO.com 
 
 
从测试环境中导出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计划基线

阅读(288) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~