获取Oracle SQL语句中绑定变量值的方法

在诊断SQL的性能问题时,我们有时候需要获取其绑定变量的实际值,然后将此实际值带入到SQL语句当中,用原来的SQL构成select语句(带where条件),实际的执行一下,看一下选择性如何。
 
本文就是说获取其绑定变量值的方法。本文的编写得到枯荣长老的帮助,在此表示感谢。
 
本文适用于与Oracle 10G或者更高版本的db。
 
alter session set nls_date_format = 'yyyy-mm-dd,hh24:mi:ss';
 
set linesize 400
 
col sql_Id format a20
 
col name format a20
 
col datatype_string format a14
 
col value_string format a20
 
--这个sql从内存中读取绑定变量值信息,若是不在内存中,则使用下一个sql
 
select sql_id,name, datatype_string, last_captured,value_string from v$sql_bind_capture where sql_id='dxfcacn4t4ppw' order by LAST_CAPTURED,POSITION;
 
--这个sql从awr中读取绑定变量值信息

select instance_number,  sql_id,name, datatype_string, last_captured,value_string from dba_hist_sqlbind where sql_id='fahv8x6ngrb50'order by LAST_CAPTURED,POSITION;

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

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

相关推荐