• PLSQL_查询已执行SQL的绑定参数(案例)


    2014-12-19 Created By BaoXinjian

    一、摘要


    在做咨询时,经查遇到以前SQL的运行情况,和查询使用的条件

    查询绑定变量时,有硬解析和软解析之分,如果是软解析,变量的值就很难找到了

    查询绑定变量的几个视图如下:

    • 查询v$sql视图
    • 查询v$sql_bind_capture
    • 查询dba_hist_sqlbind
    • 查询wrh$sqlstat

     

    二、查询v$sql视图


    1. 查询bind_data

    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;

    2. bind_data

    select dbms_sqltune.extract_binds(bind_data) bind 
    from v$sql
    where sql_text like '%FROM TEST11%';

    此时查询到的data值得形式是这样的:BEDA0B2002004F8482D10065FFFF0F000000003132303431313,需要通过dbms_sqltune.extract_binds进行转换

     

    三、查询v$sql_bind_capture


    通过v$sql_bind_capture视图,可以查看绑定变量,但是这个视图不太给力,只能捕获最后一次记录的绑定变量值。

    而且两次捕获的间隔有一个隐含参数控制。默认是900秒,才会重新开始捕获。在900内,绑定变量值的改变不会反应在这个视图中。

    10G以后可以通过如下方法查看AWR报告里记录的SQL的绑定变量值。

    select value_string from v$sql_bind_capture where sql_id='abhf6n1xqgrr0';

     

    四、查询dba_hist_sqlbind


    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';
    ----------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条件后面的绑定进行捕获,这点需要使用的时候注意。

    查询 dba_hist_sqlbind value_string列

    dba_hist_sqlbind是视图v$sql_bind_capture历史快照

     

    五、查询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等

     

    Thanks and Regards

    参考:aaaaaaaa2000 - http://blog.csdn.net/aaaaaaaa2000/article/details/7401110

  • 相关阅读:
    牛客练习赛64 D.宝石装箱 【容斥原理+背包DP】
    洛谷 P5212 SubString【SAM+LCT】
    洛谷 P4219 [BJOI2014]大融合【LCT】
    洛谷 P1501 [国家集训队]Tree II【LCT】
    洛谷 P5357 【模板】AC自动机(二次加强版)
    洛谷 P3690 【模板】Link Cut Tree (动态树)
    洛谷 P2463 [SDOI2008]Sandy的卡片【后缀数组】
    P3181 [HAOI2016]找相同字符【后缀数组】
    洛谷 SP705 【后缀数组】
    牛客小白月赛18 E.Forsaken的数列【Splay】
  • 原文地址:https://www.cnblogs.com/eastsea/p/4174624.html
Copyright © 2020-2023  润新知