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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-22 19:44:54

作者: Jim Czuprynski/黄永兵 译 出处:51CTO.com  
 
 
载入SQL调整集内容到SPM
为了完成转移存储在SQL调整集中的语句,我将直接载入这些语句到SQL管理库,而不用存储过程DBMS_SPM来完成,我会使用企业管理器数据库控制的SQL计划控制接口,从“server”页面有链接到它的入口:

2.1 SQL计划控制主面板

注意在我们早前的实验中产生的SQL计划基线在这里列出来了,包括它们当前的状态和可用性。在下面的图2.2中,我将从面板中那些可用的调整集中选择SQL调整集STS_SPM_200:

2.2 载入SQL调整集到SMB

一旦我选择了恰当的SQL调整集并点击了载入(Load)按钮,Oracle11g直接从选择的STS中自动载入SQL语句到SMB中,如下面图2.3:

2.3 SQL调整集载入的结果

注意有五个SQL计划基线的状态都是ENABLED和ACCEPTED,意味着当一条SQL语句遇到了匹配的hash值时,CBO会使用它们作为直接的候选者。点击名称(Name)栏的链接可以查看每个SQL计划基线的详细情况。下面是选择基线名称为SYS_SQL_685ea4c28ec1a586的结果:

2.4.1 SQL语句SPM_2.1.3执行计划(一)

2.4.2 SQL语句SPM_2_1.3执行计划(二)

概念证明
为了证明潜在的SQL语句性能倒退减少了或完全消除了,现在我将简单地执行SPM_2_1.SQL中相同的五条SQL语句,并检验CBO的确选择了预先载入的SQL计划基线而不是执行一个新的执行计划效率更低的解析。判断这个的最简单的方法是为这五条语句执行DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE存储过程,当为FORMAT参数解析TYPICAL+NOTE的值时需要显示CBO已经选择的计划,如果CBO的确选择了一个现有的SQL计划基线作为它的执行计划,+NOTE指令指示存储过程显示一条记录。列表2.4显示了为SPM_2_1.sql中的五条语句执行这个存储过程的结果。

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