Chinaunix首页 | 论坛 | 博客
  • 博客访问: 338000
  • 博文数量: 62
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 710
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-14 14:12
个人简介

太懒

文章分类

全部博文(62)

文章存档

2015年(8)

2014年(20)

2013年(34)

我的朋友

分类: Oracle

2014-11-21 13:53:43

如何得到已执行的目标sql的绑定变量

通过查询视图 V$SQL_BIND_CAPTURE  可以获得执行过的sql的绑定变量的值.没有的话 要么没采集要么已经被out出对应的shared cursor
已经没在shared pool里了.这时候可以去dba_hist_sqlstat 或者 dba_hist_sqlbind 里查找.

如果初始化参数STATISTICS_LEVEL设置为BASIC,则会禁止采集绑定变量

SYS@mydb1>show parameter statistics_level

NAME                                 TYPE            VALUE
------------------------------------ --------------- ------------------------------
statistics_level                     string          TYPICAL
SYS@mydb1>


SQL> declare
  2  eno NUMBER(4);
  3  begin
  4    eno := 7369;
  5    execute immediate 'select * from emp where empno= :eno' using eno;
  6  end;
  7  /
PL/SQL procedure successfully completed
SQL> 

SQL> select s.SQL_ID,s.VERSION_COUNT,s.SQL_TEXT  from v$sqlarea s where s.SQL_TEXT like '%select * from emp where empno= :eno%';
SQL_ID        VERSION_COUNT SQL_TEXT
------------- ------------- --------------------------------------------------------------------------------
gnbphfmc7dvj2             1 select * from emp where empno= :eno
50zq43ruxfwf1             1 select s.SQL_ID,s.VERSION_COUNT,s.SQL_TEXT  from v$sqlarea s where s.SQL_TEXT li
bshtxf1tzmzhd             1 declare eno NUMBER(4); begin   eno := 7369;   execute immediate 'select * from e
SQL> 
SQL> select b.SQL_ID,b.NAME,b.POSITION,b.DATATYPE_STRING,b.LAST_CAPTURED,b.VALUE_STRING from v$sql_bind_capture b where b.SQL_ID='gnbphfmc7dvj2';
SQL_ID        NAME                   POSITION DATATYPE_STRING      LAST_CAPTURED    VALUE_STRING
------------- ---------------      --------- --------------- -------------------   --------------
gnbphfmc7dvj2 :ENO                      1     NUMBER               2014-11-21 13    7369
SQL>  





 




阅读(1505) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~