sql中如何通过v$sql

67次阅读
没有评论

共计 1618 个字符,预计需要花费 5 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章将为大家详细讲解有关 sql 中如何通过 v$sql_bind_capture 查看绑定变量,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

最近在排查 CRMG 性能 SQL 的过程中,大量的 SQL 需要确定绑定变量的值,如果一个个联系开发确定,效率太低。还有一些技术手段比如 10046,LOGMINER 又复杂的要死。

大多数人都知道通过 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

 

 

 

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

sys@CRMG SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ
 2    FROM SYS.x$ksppi x, SYS.x$ksppcv y
 3   WHERE x.inst_id = USERENV (Instance)
 4   AND y.inst_id = USERENV (Instance)
 5   AND x.indx = y.indx
 6   AND x.ksppinm LIKE % par%
 7 /
Enter value for par: bind_ca
old   6:    AND x.ksppinm LIKE % par%
new   6:    AND x.ksppinm LIKE %bind_ca%
NAME                   VALUE            DESCRIB
—————————— ——————– ————————————————————
_cursor_bind_capture_area_size 400             maximum size of the cursor bind capture area
_cursor_bind_capture_interval 900            interval (in seconds) between two bind capture for a cursor

关于“sql 中如何通过 v$sql_bind_capture 查看绑定变量”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向 AI 问一下细节

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2024-02-04发表,共计1618字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)