构造绑定含有绑定变量的JAVA的SQL语句执行计划

本文详细介绍了在Oracle环境下,面对SQL执行计划异常,通过使用SQLProfile绑定固定执行计划的方法。包括如何添加HINT调整参数,利用变量绑定实现SQL缓存,以及生成SQL文件绑定特定执行计划的过程。重点在于确保SQL执行效率与资源优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

情景:11G R2,有条SQL执行计划有异常,内存中并没有好的现存的执行计划(baseline用不了),经确认可通过sql profile 绑定固定;


----------------------------------------------------

SQL的样式:

select *

from *

where a=:1

and b=:2

and c=:3

......

----------------------------------------------------

准备的工具:coe_xfr_sql_profile.sql,可以在MOS或者网上找到

操作的步骤:

1.添加hint,传入绑定变量,将变量:1,:2,:3转为普通的:varname1,:varname2,:varname3类似格式

var varname1 number;

var varname2 number;

var varname3 number;

exec :varname1 :=23;

exec :varname2 :=24;

exec :varname3 :=25;

多次运行SQL,使之存于内存;

select *

from *

where a=:varname1

and b=:varname2

and c=varname3

......;

2.运行完后即刻查看获取其plan_hash_value,sql_id

select * from table(dbms_xplan.display_cursor(null,null,'allstats last'));


3.操作思路为:(1)根据旧的SQL(sql_id,plan_hash_value)生成一个.sql文件 (2)根据修改后的sql(sql_id,plan_hash_value)生成一个.sql文件 (3)将新生成的.sql文件里的hint部份覆盖相应旧的.sql文件的相应位置(4)再执行修改后的.sql文件即可绑定;


4.备注,替换的内容部份

h := SYS.SQLPROF_ATTR(
------
------
省略部份
q'[END_OUTLINE_DATA]');



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值