ORACLE SPM固定hint执行计划
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执行计划相关推荐
- 【DB笔试面试597】在Oracle中,获取执行计划有哪几种方法?
♣题目部分 在Oracle中,获取执行计划有哪几种方法? ♣答案部分 一般来说,有如下几种获取执行计划的方式: 1.AUTOTRACE方式 AUTOTRACE是Oracle自带的客户端工具SQL*Pl ...
- 【Oracle】看懂执行计划之基于规则的优化器(RBO)
[Oracle]看懂执行计划之基于规则的优化器(RBO) 简介 基于规则的优化器(RBO)是通过编码在 Oracle 数据库中的一系列固定的规则,来决定目标 SQL 的执行计划.Oracle 事先 ...
- 【Oracle】看懂执行计划之基于成本的优化器(CBO)
[Oracle]看懂执行计划之基于成本的优化器(CBO) 基于代价的优化方式 Cost-Based Optimization,简称 CBO.CBO 选择目标 SQL 执行计划的判断原则是成本,从目 ...
- oracle的sql执行计划语句,最权威Oracle获取SQL语句执行计划大全
该文档为根据相关资料整理.总结而成,主要讲解Oracle数据库中,获取SQL语句执行计划的最权威.最正确的方法.步骤,此外,还详细说明了每种方法中可选项的意义及使用方法,以方便大家和自己日常工作中查阅 ...
- pg_hint_plan 使用hint固定SQL执行计划
Plan Hint是PG社区官方版"永远"不考虑引入的功能之一(参见PG TODO,查找"Oracle-style"),社区开发者的理念是,引入Hint功能,会 ...
- oracle 数据执行计划,Oracle里常见的执行计划
本文介绍了Oracle数据库里常见的执行计划,使用的Oracle数据库版本为11.2.0.1. 1.与表访问相关的执行计划 Oracle数据库里与表访问有关的两种方法:全表扫描和ROWID扫描.反映在 ...
- oracle update exsits,Oracle 11g 递归+ exists执行计划的改变
有一个递归查询在Oracle 10g上运行很快,但在11g上运行不出来. SQL> select * from v$version; BANNER ----------------------- ...
- 简单介绍oracle执行计划,Oracle性能优化之oracle中常见的执行计划及其简单解释
一.访问表执行计划 1.table access full:全表扫描.它会访问表中的每一条记录(读取高水位线以内的每一个数据块). 2.table access by user rowid:输入源ro ...
- 使用pg_hint_plan固定Postgresql执行计划
pg_hint_plan版本1.5:https://github.com/ossc-db/pg_hint_plan/blob/PG15/docs/hint_details.md postgresql版 ...
- oracle更新统计信息执行计划,为准确生成执行计划更新统计信息-analyze与dbms_stats...
如果我们想让CBO利用合理利用数据的统计信息,正确判断执行任何SQL查询时的最快途径,需要及时的使用analyze命令或者dbms_stats重新统计数据的统计信息. 例如索引跳跃式扫描(INDEX ...
最新文章
- 形变块匹配跟踪(2):配准跟踪与几何约束_md
- 求任意大小矩阵的转置矩阵
- 一文通读传感器到算法原理,机器人、视觉避障(附源码)
- iOS - UIScrollView
- matplotlib设置colorbar字体大小
- bmp文件头_图像算法原理与实践——图像文件存储
- leetcode —— 59. 螺旋矩阵 II
- 苹果再下一盘很大的棋?Metal优化作用及影响浅析
- EGLSurface 和 OpenGL ES
- 《大前端进阶 安全》系列 HTTPS详解(通俗易懂)
- Windows远程桌面单/多用户同时登录
- pc机收集信息cpu\配置\网络信息
- Sublime好看的字体
- 平安人寿打造新一代年金保险产品:御享财富和御享金瑞
- 琴生不等式与其他(Jensen Inequation)【粗】
- 【数学】微分(Differential)的定义,微分与导数的区别
- 今晚 8:00 |深度推荐系统的探索与实践
- 《Slice-to-volume medical image registration: A survey》论文阅读
- rsync守护进程部署
- 高德地图搜索附近地址所遇到的问题