查看绑定变量的值
--还有一种方式
--首先查询出这条SQL 语句的 HASH_VALUE
select A.SQL_ID,A.HASH_VALUE,A.CHILD_NUMBER,A.SQL_TEXT from v$sql a where A.SQL_TEXT like ‘SELECT T_LTE_CARD_INFO.PK,%‘
2621316314 0 SELECT T_LTE_CARD_INFO.PK,%.....
--传入HASH_VALUE的值
select * from table(dbms_xplan.display_cursor(2621316314,0,‘ADVANCED‘));
select * from table(dbms_xplan.display_cursor(2621316314,0,‘ADVANCED ALLSTATS LAST PEEKED_BINDS‘));
或者
select t.* from v$sql s,table(dbms_xplan.display_cursor(s.sql_id,s.child_number,‘ADVANCED ALLSTATS LAST PEEKED_BINDS‘)) t where s.sql_id = ‘6g0tcbdcr08b9‘;
查询结果中有 如下的值就是传入的值及类型
Peeked Binds (identified by position):
--------------------------------------
1 - (NUMBER): 99
2 - (NUMBER): 100
--使用视图获取
【视图V$SQL_BIND_CAPTURE】
SQL> select name,datatype_string,VALUE_STRING from v$sql_bind_capture where sql_id=‘xxx‘;
需要注意三点:
1.这个视图是一个快照视图,并不会保存所有执行过的SQL的绑定变量,能不能看到完全靠运气
2.这个视图只保留同一SQL最后一次捕获到的绑定变量
3.如果绑定变量是DATE类型则无法直接查看到的,后面会讲查看的技巧
视图DBA_HIST_SQLBIND】
这个视图是v$sql_bind_capture的历史数据,有同一个SQL不同时间的绑定变量值。不过也是不完整的。
--这个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;