天天看点

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

它的记录频率受_cursor_bind_capture_interval 隐含参数控制,默认值900,表示每900秒记录一次绑定值,可以通过alter system set "_cursor_bind_capture_interval"=10;

2. bind_data

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

三、查询v$sql_bind_capture

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

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

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

四、查询dba_hist_sqlbind

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

两外一个查询绑定变量的视图

Thanks and Regards

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

<b>ERP技术讨论群: 288307890</b>

<b>技术交流,技术讨论,欢迎加入</b>

<b>Technology Blog Created By Oracle ERP - 鲍新建</b>