如何查找特定 sql 的绑定变量?

重庆思庄IT信息技术分享,以下内容来自重庆思庄论坛,更多IT信息可访问重庆思庄论坛查看,想认证学习OCP、RHCE可访问重庆思庄官网联系客服咨询:

如您所知,绑定变量的使用对于 Oracle 性能非常重要。如果应用程序或用户不使用绑定变量,那么 Oracle 开始为不同的值创建相同 sql 的执行计划。这意味着我们的数据库将具有较高的硬解析值,并且使用我们的系统资源将会增加。这些主题是性能的另一个主题。
让我们回到我们的问题?我们如何找到特定 sql 的绑定值
假设我们的数据库上正在运行一个 sql,我们想要调整该 sql。但是当我们检查它时,我们只会在我们的 sql 查询中看到 tablename.columnname=:1 ,tablename.columnname=:2 等。我们需要这些字段值才能运行或解决该 sql 的性能瓶颈。
这是可以找到相关绑定变量的相同有用的 sql:
SELECT NAME,SQL_ID,POSITION,DATATYPE_STRING,VALUE_STRING
FROM v$sql_bind_capture WHERE sql_id='&sqlid' order by Position;

或者
SELECT
sql_id,
t.sql_text sql_text,
b.name bind_name,
b.value_string bind_value
FROM
v$sql t
JOIN
v$sql_bind_capture b using (sql_id)
WHERE
b.value_string is not null
AND
sql_id='&sqlid'
 ;
或者
SELECT 'var b'||SUBSTR(B.NAME,2,3)||' '||B.DATATYPE_STRING||';'||CHR(10)|| ”||'exec :b'||SUBSTR(B.NAME,2,3)||' := '||””||B.VALUE_STRING||”' ;'||CHR(10)||' '
FROM V$SQL_BIND_CAPTURE B,V$SQLAREA A WHERE B.SQL_ID = A.SQL_ID AND B.SQL_ID = '&sqlid';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值