在11g之前版本,提供了stored outlines(sql概要)特性来保存sql的执行计划。

在11g中,引入了一个新的特性sql计划管理(sql plan management)特性来保存sql性能。

数据库自动控制sql执行计划的演变,借助sql plan baselines。 SPM会不时的捕获和评估sql的执行计划,然后建立只包含高效的执行计划的sql plan baselines。 sql plan baselines只会包含那些不会引起sql性能下降的执行计划。

当系统遇到以下变化时,可以使用SPM来保存sql的性能信息:

-数据库升级

-新的优化器版本

-优化器参数修改

-系统设置变更

-schema信息和元数据变更

-部署新的应用模块

sql plan baselines

sql plan baseline是数据库为每个可重复执行sql语句维护的历史执行计划的集合。这些执行计划只包含数据库可接受的执行计划。

1.自动捕获sql plan baselines
自动捕获需要设置参数optimizer_capture_sql_plan_baselines的值为true,默认是false。

SQL> alter system set optimizer_capture_sql_plan_baselines=true scope=spfile;

2.手动加载sql plan到sql plan baselines
可以从SQL Tuning Set (STS) 和 Cursor Cache中创建sql plan baselines。
【在数据库升级时,当心升级后会性能下降的话,可以在升级前将sql plan导出,升级后再导入】 
(1)从sql tuning set中导出sql plan
     #创建空的sql调优集
     begindbms_sqltune.create_sqlset(sqlset_name => 'testset1',description => 'test sql tuning set to capture awr data');end;/

  #使用load_sqlset将sql plan加载到新创建的sql tuning set中

    declaretest_cursor1 dbms_sqltune.sqlset_cursor;beginopen baseline_cursor forselect value(p) from table(dbms_sqlture.select_workload_repository('peak baseline',null,null,'elapsed_time',null,null,null,20)) p;dbms_sqlset.load_sqlset(sqlset_name => 'testset1',populate_cursor => test_cursor1);end;/

  #将sql tuning set中的数据导入sql plan baselines

    declaretest_plans pls_integer;begintest_plans := dbms_spm.load_plans_from_sqlset(sqlset_name => 'testset1');end;/

(2)从Cursor Cache中导出sql plan

 declaretest_plans pls_integer;begintest_plans := dbms_spm.load_plans_from_cursor_cache (sql_id => '123456789999')return pls_integer;end;/

管理sql plan baselines使用oracle提供的dbms_spm包。

查看SQL plan baselines的属性

select sql_handle,sql_text,plan_name,origin,enabled,accepted,fixed,autopurgefrom dba_sql_plan_baselines;

将某个sql plan修改为accept状态

SQL> exec dbms_spm.alter_sql_plan_baselines(sql_handle => SYS_SQL_122222222',plan_name => 'SYS_SQL_PLAN_b5429522ee05ab0e',attribute_name => 'accepted-status',attribute_value => 'YES');

查看某个sql的baseline:

select *from table(dbms_xplan.display_sql_plan_baseline(sql_handle => 'SYS_SQL_ba5e12ccae97040f',format     => 'basic'));

SQL Management Base
sql plan management将sql plan baselines信息存放在一个新的数据字典中--sql management base(SMB)。
SMB被存放在sysaux表空间中。

配置sql management base(SMB)
配置SMB需要设置以下两个参数:

SQL> select parameter_name,parameter_value 2  from dba_sql_management_config;PARAMETER_NAME                 PARAMETER_VALUE
------------------------------ ---------------
SPACE_BUDGET_PERCENT                        10
PLAN_RETENTION_WEEKS                        53SQL> 

参数space_budget_percent表示SMB可以占用sysaux表空间的比例。默认是10%

SQL> exec dbms_spm.configure('space_budget_percent',40);
SQL> exec dbms_spm.configure ('plan_retention_weeks', 105);

#手动清空SMB

SQL> exec dbms_spm.purge_sql_plan_baseline('SYS_SQL_PLAN_b5429522ee05ab0e');

查看SMB配置信息:

SQL> select PARAMETER_NAME,PARAMETER_VALUE,LAST_MODIFIED,MODIFIED_BY2  from dba_sql_management_config;PARAMETER_NAME                 PARAMETER_VALUE LAST_MODIFIED        MODIFIED_BY
------------------------------ --------------- -------------------- --------------------
SPACE_BUDGET_PERCENT                        10
PLAN_RETENTION_WEEKS                        53SQL> 

11g新特性-SQL Plan Management相关推荐

  1. oracle spm buffer get比较过程,Oracle 11g 新特性 -- SQL Plan Management 示例

    一. SPM 说明 与Oracle 9i 的outline和10g 的profile比,Oracle 11g的SPM相对更加的灵活.如,一条带有绑定变量的SQL语句,最好的执行计划会根据绑定变量的值而 ...

  2. 【11g】SPM说明(SQL Plan Management )

    Oracle 11g 新特性 -- SQL Plan Management 说明 2012年12月13日 20:14:45 Dave 阅读数:9173 版权声明: https://blog.csdn. ...

  3. oracle11g中SQL优化(SQL TUNING)新特性之SQL Plan Management(SPM)

    1.   简介 Oracle Database11gR1引进了SQL PlanManagement(简称SPM),一套允许DBA捕获和保持任意SQL语句执行计划最优的新工具,这样,限制了刷新优化器统计 ...

  4. 11g新特性-自动sql调优(Automatic SQL Tuning)

    11g新特性-自动sql调优(Automatic SQL Tuning) 在Oracle 10g中,引进了自动sql调优特性.此外,ADDM也会监控捕获高负载的sql语句. 在Oracle 11g中, ...

  5. SQL Plan Management介绍

    基于成本的优化法则基于统计信息找到最优执行计划,但是一些环境的变化可能影响执行计划的改变如: ·         New optimizer version ·         Changes to ...

  6. Oracle 11g 新特性简介

    Oracle 11g于2007年7月11日美国东部时间11时(北京时间11日22时)正式发布,11g是甲骨文公司30年来发布的最重要的数据库版本,根据用户的需求实现了信息生命周期管理(Informat ...

  7. Oracle 11g新特性

    Oracle 11g于2007年7月11日美国东部时间11时(北京时间11日22时)正式发布,11g是甲骨文公司30年来发布的最重要的数据库版本,根据用户的需求实现了信息生命周期管理(Informat ...

  8. 【】oracle 11g 新特性

    Oracle 11g于2007年7月11日美国东部时间11时(北京时间11日22时)正式发布,11g是甲骨文公司30年来发布的最重要的数据库版本,根据用户的需求实现了信息生命周期管理(Informat ...

  9. oracle 11g 新特性

    2019独角兽企业重金招聘Python工程师标准>>> Oracle 11g于2007年7月11日美国东部时间11时(北京时间11日22时)正式发布,11g是甲骨文公司30年来发布的 ...

最新文章

  1. msp430入门学习31
  2. Python练习 | Python中的运算符
  3. Xen和虚拟化技术学习指南
  4. 阿里大数据分析与应用(part7)--机器学习平台PAI
  5. 图解集成学习中的梯度提升思想
  6. handler机制的原理_Handler机制竟然可以这样解释,我惊呆了!
  7. ●洛谷P2606 [ZJOI2010]排列计数
  8. java 登陆拦截器_java 登录拦截器
  9. c 语言病毒源码大全,易语言病毒源码大全
  10. CAD贱人工具箱6.0免注册
  11. Ubuntu下搜狗輸入法不能输入汉字
  12. LeetCode 799 香槟塔[模拟+动态规划] HERODING的LeetCode之路
  13. B-Tree和B+Tree学习笔记
  14. HR面/综合面系列:公司相关
  15. Typora1.0.2 + SMMS上传图片
  16. arcmap给tif添加地理坐标_如何将JPG格式的图片转化为带地理坐标的TIFF格式
  17. 软件工程实践结对作业一
  18. Oracle日志挖掘之LogMiner
  19. ROS 相关学习资源汇总
  20. 知识管理与竞争情报的联系

热门文章

  1. Redhate5.4下Oracle 11g安装
  2. NHibernateLinq简单的CRUD操作
  3. Oracle去除表中重复记录
  4. 树莓派安装python模块_树莓派引脚编号、pypi说明和安装
  5. Intel汇编语言程序设计学习-第六章 条件处理-上
  6. POJ2118基础矩阵快速幂
  7. 【Git】将 GitHub 工程设置为私有库 ( 登录账号 | 工程主页 | Settings | Danger Zone | Change visibility | Make private )
  8. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | RawDexFile.cpp 分析 | dvmRawDexFileOpen函数读取 DEX 文件 )
  9. 【EventBus】事件通信框架 ( 总结 | 手写事件通信框架完整代码示例 | 测试上述框架 )
  10. 【SeeMusic】音符方块颜色设置 ( 单一颜色设置 | 多彩音符设置 | 定时变色设置 | 渐变颜色 | 分轨道提示 )