3. SQL patch 以补丁的形式,将hint 打入到指定SQL

以补丁的形式,将hint 打入到指定SQL     也可以参考sqlt 下面的?coe_gen_sql_patch.sql

常用的HINT :   hint_text (一般是bind_aware/monitor/)

注意: bind_aware/monitor /gather_plan_statistics  是sql  profile 是用不了的 

如果sql  profile 可以用的,建议用sql  profile

# 12.2之前版本
–需要用sys用户执行: sys.dbms_sqldiag_internal
–相关视图: DBA_SQL_PATCHES,hint 在description字段
–常用几个hint: GATHER_PLAN_STATISTICS / MONITOR / BIND_AWARE / IGNORE_OPTIM_EMBEDDED_HINTS

begin
sys.dbms_sqldiag_internal.i_create_patch( sql_text  => V_SQL,
                                           hint_text => ‘BIND_AWARE‘,
                                           name      => ‘sql_djzfp4cy24dx3‘);
end ;
/

# 12.2及以后版本

#创建sql patch
declare
  patch_name varchar2(30);
begin
  patch_name:=dbms_sqldiag.create_sql_patch(sql_id=>‘&sql_id‘ , hint_text=>‘&hint_text‘);
end ;
/

注意:hint_text的写法,要体符合 Outline Data
可能选执行 explain plan for + hint
然后通过display 的advanced 方式查询 , 注意要加引号 例: hint_text=>‘index("T"@"SEL$1")‘   或  ‘index(@"SEL$1" "T")‘
explain plan for select /*+ index(t) */ OBJECT_NAME,OBJECT_TYPE from t where OBJECT_TYPE=‘JAVA CLASS‘;
select * from table(dbms_xplan.display(null,null,‘advanced‘)); 

#查看sql patch

col description format a40
col name format a30
set linesize 200
select name,to_char(created,‘yyyy-mm-dd hh24:mi:ss‘) as created
,status,force_matching,description,substr(sql_text,1,50)  as sql_text
from dba_sql_patches
order by created;

#删除sql patch
exec  dbms_sqldiag.drop_sql_patch(name=>‘&patch_name‘)

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

原文地址:https://www.cnblogs.com/cqdba/p/12165661.html

时间: 2024-08-02 00:30:41

3. SQL patch 以补丁的形式,将hint 打入到指定SQL的相关文章

Linux中使用diff生成补丁与用patch打补丁

1.使用diff生成补丁: diff是Linux下的文件比较命令,参数这里就不说了,直接man一下就行了,不仅可以比较文件,也可以比较两个目录,并且可以将不同之处生成补丁文件,其实就是一种打补丁的命令.使用方法如下: diff -rNu a b > diff.patch 其中,a是旧的目录或文件,b为最近修改后的目录或文件,生成的补丁文件为patch. 2.使用patch打补丁: patch命令的参数详见man手册,使用patch给另外一个a目录打补丁时如下: patch -p0 < diff

Python Monkey patch猴子补丁

monkey patch (猴子补丁)   用来在运行时动态修改已有的代码,而不需要修改原始代码. 简单的monkey patch 实现:[python] #coding=utf-8 def originalFunc():     print 'this is original function!'      def modifiedFunc():     modifiedFunc=1     print 'this is modified function!'      def main():

SQL SERVER版本补丁体系及升级

首先了解几个定义: RTM : 表示 Release to Manufacturing ,这是产品的原始发布版本,当从光盘或 MSDN 下载的默认版本.不过现在下载 SQL Server 版本时,也有集成了 SP 的版本. Hotfix :需要修复的某个问题,每年 SQL Server 会出现许多bug或漏洞,这些问题d修复则被定义为 Hotfix. Cumulative Update(CU):累计更新包,由 Hotfix 组成.CU 每8个星期发布一次,所以会有 CU1.CU2……等,每个最新

将指定SQL的执行计划从共享池删除的方法

如果Oracle的优化器产生了某种错误的执行计划,或者我们希望Oracle对于某个SQL重新进行分析,那么就需要这个SQL的执行计划在共享池中过期,而简单的方法在10.2.0.4以后才出现. 对于以前的版本而言,最显而易见的方法莫过于直接刷新共享池,但是如果是数据库中绝大部分的SQL都存在问题,那么这种方法无可厚非,也可能是见效最快的方法,而如果数据库中仅仅是个别的SQL存在问题,那么这种方法就过于暴力了. SQL> select count(*) from dual; COUNT(*) ---

SQL Server自动化运维系列——监控磁盘剩余空间及SQL Server错误日志(Power Shell)

原文:SQL Server自动化运维系列--监控磁盘剩余空间及SQL Server错误日志(Power Shell) 需求描述 在我们的生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的检测等.如果发生异常,需要提前预警的,通知形式一般为发邮件告知. 在所有的自检流程中最基础的一个就是磁盘剩余空间检测.作为一个高效的DBA不可能每天都要上生产机上查看磁盘剩余或者直到磁盘无剩余空间报错后才采取扩容措施. 当然,作为微软的服务器有着自己的监控软件:SCCM(System Center

SQL Server 2012实施与管理实战指南(笔记)——Ch5启动SQL Server服务和数据库

5.启动SQL Server服务和数据库 在数据库和服务启动过程中,经常会出现的问题: 1.SQL Server实例无法正常启动 2.系统数据库无法正常启动 3.网络配置失败 4.用户数据库无法启动 5.集群环境下SQL Server资源无法保持在线 目录 5.启动SQL Server服务和数据库... 1 5.1 SQL Server服务启动步骤... 1 5.1.1 从注册表中读取SQL Server启动信息... 1 5.1.2 检查硬件,配置内存和CPU.. 2 5.1.3 数据库启动.

InstallShield在MySQL和Oracle中执行SQL脚本的方法InstallShield在MySQL和Oracle中执行SQL脚本的方法

简述 InstallShield已经内建了对MySQL和Oracle的支持.但是这个功能是通过ODBC实现的,它对SQL脚本的格式要求非常严格,因此已经通过官方客户端测试的脚本在IS中执行时往往就会报错. 一般来说,数据库脚本只保证通过官方客户端测试即可,同时维护一份供IS执行的脚本费时费力.因此,考虑安装程序对两数据库的支持通过官方客户端实现. MySQL   function InstallMySQLComponent(szComponent) NUMBER nResult; STRING

SQL Server 并行操作优化,避免并行操作被抑制而影响SQL的执行效率

为什么我也要说SQL Server的并行: 这几天园子里写关于SQL Server并行的文章很多,不管怎么样,都让人对并行操作有了更深刻的认识. 我想说的是:尽管并行操作可能(并不是一定)存在这样或者那样的问题,但是我们不能否认并行,仍然要利用好并行. 但是,实际开发中,某些SQL语句的写法会导致用不到并行,从而影响到SQL的执行效率 所以,本文要表达的是:我们要利用好并行,不要让一些SQL的写法问题“抑制”了并行,让我们享受不了并行带来的快感 关于SQL Server的并行: 所谓的并行,指S

SQL Server2008为表的某列设置默认值为SQL Server函数

  例如,设置SQL Server函数GETDATE()作为默认值: SQL Server2008为表的某列设置默认值为SQL Server函数