固定执行计划-测试步骤

2024-03-06 22:28

本文主要是介绍固定执行计划-测试步骤,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0、环境准备,由于t有索引,该语句默认走索引

如果抓取优化参数未开启,也无法抓取

optimizer_capture_sql_plan_baselines boolean TRUE

alter system set optimizer_capture_sql_plan_baselines =true scope=both;

select count(*) from t where user_id=75;

select sql_id,PLAN_HASH_VALUE,sql_text from v$sql where sql_text like '%user_id=75%';

SQL_ID:84aytmtdzdh0j

PLAN_HASH_VALUE:878720519

1、创建指定SQLID的BASELINE,后面要做修改

declare

l_pls number;

begin

l_pls := DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE(

sql_id => '84aytmtdzdh0j',

plan_hash_value => 878720519,

enabled => 'NO');

end;

/

select count(*) from t where user_id=75;

2、构造出执行计划为全表扫描的SQL_ID,即:正确的执行计划

select /*+ full(t) */count(*) from t where user_id=75;

select sql_id,PLAN_HASH_VALUE,sql_text from v$sql where sql_text like '%user_id=75%';

SQL_ID:0pvkzjqwdgkbt

PLAN_HASH_VALUE:2966233522

3、确定原始执行计划的 sql_handle

select sql_handle, plan_name, origin, enabled, accepted,fixed,optimizer_cost,sql_text from dba_sql_plan_baselines where sql_text like '%user_id=75%' order by last_modified;

SQL_HANDLE:SQL_17ff9d394b036628

PLAN_NAME:SQL_PLAN_1gzwx755h6tj8fa7e82c5

4、与正确的执行计划关联

declare l_pls number;

begin

l_pls := DBMS_SPM.load_plans_from_cursor_cache(sql_id => '0pvkzjqwdgkbt', --正确执行计划的sql_id

plan_hash_value =>2966233522, --正确执行计划的plan_hash_value

sql_handle => 'SQL_17ff9d394b036628' --原执行计划的sql_handle

);

end;

/

5、删除错误执行计划(可选)

declare l_pls number;

begin

l_pls := DBMS_SPM.DROP_SQL_PLAN_BASELINE(sql_handle => 'SQL_17ff9d394b036628', --sql_handle_for_original

plan_name => 'SQL_PLAN_1gzwx755h6tj8fa7e82c5' --sql_plan_name_for_original

);

end;

/

6、验证

explain plan for select count(*) from t where user_id=75;

select * from table(dbms_xplan.display);

7、(其他)查询所有执行计划

select * from table(dbms_xplan.display_cursor('sql_id',NULL,'OUTLINE'));

这篇关于固定执行计划-测试步骤的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/781558

相关文章

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

Lua 脚本在 Redis 中执行时的原子性以及与redis的事务的区别

在 Redis 中,Lua 脚本具有原子性是因为 Redis 保证在执行脚本时,脚本中的所有操作都会被当作一个不可分割的整体。具体来说,Redis 使用单线程的执行模型来处理命令,因此当 Lua 脚本在 Redis 中执行时,不会有其他命令打断脚本的执行过程。脚本中的所有操作都将连续执行,直到脚本执行完成后,Redis 才会继续处理其他客户端的请求。 Lua 脚本在 Redis 中原子性的原因

Smarty模板执行原理

为了实现程序的业务逻辑和内容表现页面的分离从而提高开发速度,php 引入了模板引擎的概念,php 模板引擎里面最流行的可以说是smarty了,smarty因其功能强大而且速度快而被广大php web开发者所认可。本文将记录一下smarty模板引擎的工作执行原理,算是加深一下理解。 其实所有的模板引擎的工作原理是差不多的,无非就是在php程序里面用正则匹配将模板里面的标签替换为php代码从而将两者

(function() {})();只执行一次

测试例子: var xx = (function() {     (function() { alert(9) })(); alert(10)     return "yyyy";  })(); 调用: alert(xx); 在调用的时候,你会发现只弹出"yyyy"信息,并不见弹出"10"的信息!这也就是说,这个匿名函数只在立即调用的时候执行一次,这时它已经赋予了给xx变量,也就是只是

Java程序到CPU上执行 的步骤

相信很多的小伙伴在最初学习编程的时候会容易产生一个疑惑❓,那就是编写的Java代码究竟是怎么一步一步到CPU上去执行的呢?CPU又是如何执行的呢?今天跟随小编的脚步去化解开这个疑惑❓。 在学习这个过程之前,我们需要先讲解一些与本内容相关的知识点 指令 指令是指导CPU运行的命令,主要由操作码+被操作数组成。 其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也

Android下执行linux命令

最近在开发过程中 使用了几个命令来对   手机的文件的权限进行修改;现在记录一下: 用到的方法: 1:判断是否有Root权限;  /**      * 判断当前手机是否有ROOT权限      * @return      */     public static boolean isRoot(){         boolean bool = false;         try{

《计算机视觉工程师养成计划》 ·数字图像处理·数字图像处理特征·概述~

1 定义         从哲学角度看:特征是从事物当中抽象出来用于区别其他类别事物的属性集合,图像特征则是从图像中抽取出来用于区别其他类别图像的属性集合。         从获取方式看:图像特征是通过对图像进行测量或借助算法计算得到的一组表达特性集合的向量。 2 认识         有些特征是视觉直观感受到的自然特征,例如亮度、边缘轮廓、纹理、色彩等。         有些特征需要通

Claude Enterprise推出计划

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/ 今天推出的Claude Enterprise计划,专为企业打造安全的

为备份驱动器制定备份计划:维护数据的3大方法

时间:2014-02-26 14:49 来源:网管之家 字体:[大 中 小]   您可能已经对您的电脑进行了备份,但其实这样还是远远不够的,其并非如您所认为的那样安全。您企业备份驱动器上的文件可能与您的主系统上的文件一样,容易受到灾难的影响。根据最近流行的恶意软件CryptoLocker的感染途径显示,连接到PC的外置驱动器——辅助硬盘驱动器,例如,用于备份的外部USB硬盘驱动器,可以像