oracle数据库获取绑定变量的各种方法

1、查询v$sql视图
       select sql_id, sql_text, bind_data,HASH_VALUE from v$sql   where sql_text Like '%select * from test where id1%';
它的记录频率受_cursor_bind_capture_interval 隐含参数控制,默认值900,表示每900秒记录一次绑定值,可以通过alter system set "_cursor_bind_capture_interval"=10;


此时查询到的data值得形式是这样的:BEDA0B2002004F8482D10065FFFF0F00000000000000000000C0021602C102C0021602C102F0018003691532303132303431313032504F443834363135313635F0018003691532303132303431313032504F443834363135313730F0018003691532303132303431313032504F443834363135313731F0018003691532303132303431313032504F443834363135313734F0018003691532303132303431313032504F443834363135313735F0018003691532303132303431313032504F443834363135313739F0018003691532303132303431313032504F443834363135313830F0018003691532303132303431313032504F443834363135313833F0018003691532303132303431313032504F443834363135313834F0018003691532303132303431313032504F443834363135313838F0018003691532303132303431313032504F443834363135313839F0018003691532303132303431313032504F443834363135313933F0018003691532303132303431313032504F443834363135313934F0018003691532303132303431313032504F443834363135313937F0018003691532303132303431313032504F443834363135313938F0018003691532303132303431313032504F443834363135323033F0018003691532303132303431313032504F443834363135323034F0018003691532303132303431313032504F443834363135323037
这样肯定是没法看懂的


需哟进行转换
select dbms_sqltune.extract_binds(bind_data) bind from v$sql WHERE SQL_TEXT LIKE '%FROM TEST11%';




2、查询 SELECT VALUE_STRING FROM V$SQL_BIND_CAPTURE WHERE SQL_ID='abhf6n1xqgrr0';
通过v$sql_bind_capture视图,可以查看绑定变量,但是这个视图不太给力,只能捕获最后一次记录的绑定变量值。
而且两次捕获的间隔有一个隐含参数控制。默认是900秒,才会重新开始捕获。在900内,绑定变量值的改变不会反应在这个视图中。
10G以后可以通过如下方法查看AWR报告里记录的SQL的绑定变量值。
 
select snap_id, name, position, value_string,last_captured,WAS_CAPTURED  from dba_hist_sqlbind  where sql_id = '576c1s91gua19'
 and snap_id='20433';
 
 
select snap_id,
       t.dbid,
       t.instance_number,
       name,
       position,
       t.datatype,
       t.datatype_string,
       value_string,
       last_captured,
       WAS_CAPTURED
  from dba_hist_sqlbind t
 where sql_id = '1ps1ckbnf3b88'


 
----------SNAP_ID就是AWR报告的快照ID。
----------name,绑定变量的名称
----------position,绑定值在SQL语句中的位置,以1,2,3进行标注  
---------value_string,就是绑定变量值
---------,last_captured,最后捕获到的时间
---------WAS_CAPTURED,是否绑定被捕获,where子句前面的绑定不进行捕获。
dba_hist_sqlbind视图强大的地方在于,它记录了每个AWR报告里的SQL的绑定变量值,当然这个绑定变量值也是AWR生成的时候从v$sql_bind_capture采样获得的。
通过这个视图,我们能够获得比较多的绑定变量值,对于我们排查问题,这些值一般足够了。
还有一个需要注意的地方是,这两个视图中记录的绑定变量只对where条件后面的绑定进行捕获,这点需要使用的时候注意。
3、查询 dba_hist_sqlbind VALUE_STRING列
 DBA_HIST_SQLBIND是视图V$SQL_BIND_CAPTURE历史快照


4、查询wrh$_sqlstat
     select dbms_sqltune.extract_bind(bind_data, 1).value_string
     from wrh$_sqlstat
      where sql_id = '88dz0k2qvg876'----根据绑定变量的多少增加dbms_sqltune.extract_bind(bind_data, 2).value_string等
     
     
5.根据基表获取绑定变量的方法:      
 select dbms_sqltune.extract_bind(bind_data, 1).value_string||'-'|| dbms_sqltune.extract_bind(bind_data, 2).value_string ||'-'|| dbms_sqltune.extract_bind(bind_data, 3)
       .value_string ||'-'|| dbms_sqltune.extract_bind(bind_data, 4).value_string ||'-'|| dbms_sqltune.extract_bind(bind_data, 5)
       .value_string ||'-'|| dbms_sqltune.extract_bind(bind_data, 6).value_string
  from wrh$_sqlstat
 where sql_id = '05gp0u2vtckb1'
/

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25462274/viewspace-2131178/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25462274/viewspace-2131178/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值