PLSQL_查询已执行SQL的绑定参数(案例)
2016-09-08 22:08
225 查看
一、摘要
在做咨询时,经查遇到以前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
10G以后可以通过如下方法查看AWR报告里记录的SQL的绑定变量值。
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
两外一个查询绑定变量的视图
在做咨询时,经查遇到以前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等
相关文章推荐
- PLSQL_查询已执行SQL的绑定参数(案例)
- 参数绑定导致java执行查询sql效率低
- PLSQL_查询SQL的执行次数和频率(案例)
- android之Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)
- jsp页面获取参数 执行sql查询数据库
- 应用程序对Sqlserver进行SQL查询使用与不使用参数对执行计划的影响
- Hibernate(二)HQL&SQL参数绑定、投影和分页以及命名查询
- 查询oracle中正在运行的sql语句,不包括plsql执行的查询语句
- PLSQL_低效SQL的识别和查询汇总(案例)
- 动态SQL的执行,注:exec sp_executesql 其实可以实现参数查询和输出参数的
- 动态SQL的执行,注:exec sp_executesql 其实可以实现参数查询和输出参数的
- Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)
- Hibernate(二)HQL&SQL参数绑定、投影和分页以及命名查询
- 把SQL语句整个做参数传进存储过程查询或者执行
- Oracle数据库案例整理-执行Oracle脚本失败或异常-SQL命令中字符串参数使用双引号导致更新数据库表信息失败
- 动态SQL的执行,注:exec sp_executesql 其实可以实现参数查询和输出参数的
- plsql 查询正在执行的sql
- 在模糊查询中过滤容易引发SQL语句执行异常的符号
- 一个分组查询的SQL 常用算法(附源码可直接执行)