天天看點

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>