ORACLE SPM固定hint执行计划

  • 1.创建实验表并创建索引
  • 2.使用实验表进行普通查询和使用hint全表扫描的查询
  • 3.在v$sql视图中,查询到sql_id和plan_hash_value
  • 4.使用SPM进行绑定
  • 5.查询是否正常绑定
  • 6.查询进行验证
  • 7.删除baseline

1.创建实验表并创建索引

create table zhangyun.t2 as select * from dba_objects;
create index zhangyun.idx_2 on zhangyun.t2(owner);

2.使用实验表进行普通查询和使用hint全表扫描的查询

select * from zhangyun.t2 where owner='ZHANGYUN';
select /*+full(T2)*/* from zhangyun.t2 where owner='ZHANGYUN';

3.在v$sql视图中,查询到sql_id和plan_hash_value

SYS@PRODCDB >select sql_id,plan_hash_value,sql_text from v$sql where sql_text like '%from zhangyun.t2 where %';SQL_ID        PLAN_HASH_VALUE
------------- ---------------
SQL_TEXT
--------------------------------------------------------------------------------
70ug5xw2r5b2q      1306670842
select * from zhangyun.t2 where owner='ZHANGYUN'6gq9620swtqcj        903671040
select sql_id,plan_hash_value,sql_text from v$sql where sql_text like '%from zha
ngyun.t2 where owner=%'f1qyjarfvrs4u     1513984157
select /*+full(T2)*/* from zhangyun.t2 where owner='ZHANGYUN'SQL_ID       PLAN_HASH_VALUE
------------- ---------------
SQL_TEXT
--------------------------------------------------------------------------------g5rtq9gx2bxhu       903671040
select sql_id,plan_hash_value,sql_text from v$sql where sql_text like '%from zha
ngyun.t2 where %'

4.使用SPM进行绑定

DECLAREsql_clob clob;SPM_L NUMBER;
beginselect sql_fulltextinto sql_clobfrom v$sqlwhere sql_id = '70ug5xw2r5b2q' and rownum=1;--普通查询(需要绑定hint的sql)SPM:=DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE(sql_id          => 'f1qyjarfvrs4u',plan_hash_value => 1513984157,sql_text        => sql_clob,fixed           => 'YES',enabled         => 'YES');--绑定hint的sql语句的sql_id,plan_hash_value
END;
/

5.查询是否正常绑定

SYS@PRODCDB >select sql_text,sql_handle, plan_name, accepted, fixed,optimizer_cost from dba_sql_plan_baselines ;SQL_TEXT
--------------------------------------------------------------------------------
SQL_HANDLE
--------------------------------------------------------------------------------
PLAN_NAME
--------------------------------------------------------------------------------
ACC FIX OPTIMIZER_COST
--- --- --------------
select * from zhangyun.t2 where owner='ZHANGYUN'
SQL_fd92b3d62c494c70
SQL_PLAN_gv4pmusq4km3hb860bcf2
YES YES        427

6.查询进行验证

SYS@PRODCDB >set autotrace traceonly
SYS@PRODCDB >select * from zhangyun.t2 where owner='ZHANGYUN';8 rows selected.Execution Plan
----------------------------------------------------------
Plan hash value: 1513984157--------------------------------------------------------------------------
| Id  | Operation     | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |  |     8 |   920 |   427   (1)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| T2   |     8 |   920 |   427   (1)| 00:00:01 |
--------------------------------------------------------------------------Predicate Information (identified by operation id):
---------------------------------------------------1 - filter("OWNER"='ZHANGYUN')Note
------ SQL plan baseline "SQL_PLAN_gv4pmusq4km3hb860bcf2" used for this statementStatistics
----------------------------------------------------------40  recursive calls18  db block gets1543  consistent gets1527  physical reads3456  redo size2284  bytes sent via SQL*Net to client552  bytes received via SQL*Net from client2  SQL*Net roundtrips to/from client0  sorts (memory)0  sorts (disk)8  rows processed

7.删除baseline

declare
xx PLS_INTEGER;
BEGIN
xx :=dbms_spm.drop_sql_plan_baseline(sql_handle=>'SQL_b97eecad1293bf1e',plan_name=>null);
xx :=dbms_spm.drop_sql_plan_baseline(sql_handle=>'SQL_85372e07e425b213',plan_name=>null);
xx :=dbms_spm.drop_sql_plan_baseline(sql_handle=>'SQL_115024ccba5e158c',plan_name=>null);
xx :=dbms_spm.drop_sql_plan_baseline(sql_handle=>'SQL_89090362ceee70d9',plan_name=>null);
xx :=dbms_spm.drop_sql_plan_baseline(sql_handle=>'SQL_fd92b3d62c494c70',plan_name=>null);
xx :=dbms_spm.drop_sql_plan_baseline(sql_handle=>'SQL_f60acf5349c84a6f',plan_name=>null);
END;
/

ORACLE SPM固定hint执行计划相关推荐

  1. 【DB笔试面试597】在Oracle中,获取执行计划有哪几种方法?

    ♣题目部分 在Oracle中,获取执行计划有哪几种方法? ♣答案部分 一般来说,有如下几种获取执行计划的方式: 1.AUTOTRACE方式 AUTOTRACE是Oracle自带的客户端工具SQL*Pl ...

  2. 【Oracle】看懂执行计划之基于规则的优化器(RBO)

    [Oracle]看懂执行计划之基于规则的优化器(RBO) 简介   基于规则的优化器(RBO)是通过编码在 Oracle 数据库中的一系列固定的规则,来决定目标 SQL 的执行计划.Oracle 事先 ...

  3. 【Oracle】看懂执行计划之基于成本的优化器(CBO)

    [Oracle]看懂执行计划之基于成本的优化器(CBO) 基于代价的优化方式   Cost-Based Optimization,简称 CBO.CBO 选择目标 SQL 执行计划的判断原则是成本,从目 ...

  4. oracle的sql执行计划语句,最权威Oracle获取SQL语句执行计划大全

    该文档为根据相关资料整理.总结而成,主要讲解Oracle数据库中,获取SQL语句执行计划的最权威.最正确的方法.步骤,此外,还详细说明了每种方法中可选项的意义及使用方法,以方便大家和自己日常工作中查阅 ...

  5. pg_hint_plan 使用hint固定SQL执行计划

    Plan Hint是PG社区官方版"永远"不考虑引入的功能之一(参见PG TODO,查找"Oracle-style"),社区开发者的理念是,引入Hint功能,会 ...

  6. oracle 数据执行计划,Oracle里常见的执行计划

    本文介绍了Oracle数据库里常见的执行计划,使用的Oracle数据库版本为11.2.0.1. 1.与表访问相关的执行计划 Oracle数据库里与表访问有关的两种方法:全表扫描和ROWID扫描.反映在 ...

  7. oracle update exsits,Oracle 11g 递归+ exists执行计划的改变

    有一个递归查询在Oracle 10g上运行很快,但在11g上运行不出来. SQL> select * from v$version; BANNER ----------------------- ...

  8. 简单介绍oracle执行计划,Oracle性能优化之oracle中常见的执行计划及其简单解释

    一.访问表执行计划 1.table access full:全表扫描.它会访问表中的每一条记录(读取高水位线以内的每一个数据块). 2.table access by user rowid:输入源ro ...

  9. 使用pg_hint_plan固定Postgresql执行计划

    pg_hint_plan版本1.5:https://github.com/ossc-db/pg_hint_plan/blob/PG15/docs/hint_details.md postgresql版 ...

  10. oracle更新统计信息执行计划,为准确生成执行计划更新统计信息-analyze与dbms_stats...

    如果我们想让CBO利用合理利用数据的统计信息,正确判断执行任何SQL查询时的最快途径,需要及时的使用analyze命令或者dbms_stats重新统计数据的统计信息. 例如索引跳跃式扫描(INDEX ...

最新文章

  1. 形变块匹配跟踪(2):配准跟踪与几何约束_md
  2. 求任意大小矩阵的转置矩阵
  3. 一文通读传感器到算法原理,机器人、视觉避障(附源码)
  4. iOS - UIScrollView
  5. matplotlib设置colorbar字体大小
  6. bmp文件头_图像算法原理与实践——图像文件存储
  7. leetcode —— 59. 螺旋矩阵 II
  8. 苹果再下一盘很大的棋?Metal优化作用及影响浅析
  9. EGLSurface 和 OpenGL ES
  10. 《大前端进阶 安全》系列 HTTPS详解(通俗易懂)
  11. Windows远程桌面单/多用户同时登录
  12. pc机收集信息cpu\配置\网络信息
  13. Sublime好看的字体
  14. 平安人寿打造新一代年金保险产品:御享财富和御享金瑞
  15. 琴生不等式与其他(Jensen Inequation)【粗】
  16. 【数学】微分(Differential)的定义,微分与导数的区别
  17. 今晚 8:00 |深度推荐系统的探索与实践
  18. 《Slice-to-volume medical image registration: A survey》论文阅读
  19. rsync守护进程部署
  20. 高德地图搜索附近地址所遇到的问题

热门文章

  1. 自媒体多账号管理方法
  2. 马云、马化腾、李彦宏、库克等互联网大佬们都在乌镇干了啥
  3. PLC自学是否可行?
  4. 动态规划,dp 动态规划初步——普及/提高-
  5. Sequence Level Training with Recurrent Neural Networks-学习笔记
  6. 强势品牌是如何塑造出来的
  7. python tkinter button 透明图片_Tkinter - 按钮图像透明背景
  8. 成功的趋势交易者的入场点
  9. P-R曲线绘制的详细例子
  10. 【沐风老师】推荐2023年3DMAX的10个最佳插件!