通過v$sql_bind_capture 檢視繫結變數。
最近在排查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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-689802/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 透過v$sql_bind_capture 檢視繫結變數。SQLAPT變數
- v$sql_bind_capture 獲取繫結變數SQLAPT變數
- v$sql_bind_capture 獲取繫結變數資訊SQLAPT變數
- 檢視繫結變數變數
- v$sql_bind_capture與timestamp型別的繫結變數的數值SQLAPT型別變數
- 檢視未繫結變數的sql變數SQL
- 11G R2 V$SQL_MONITOR檢視繫結變數SQL變數
- Oracle 變數繫結與變數窺視合集Oracle變數
- oracle繫結變數窺視(zt)Oracle變數
- 繫結變數窺視測試案例變數
- 10g以後檢視未使用繫結變數的sql變數SQL
- 使用remove_constants工具檢視Oracle是否使用繫結變數REMOracle變數
- 【原創】Oracle 變數繫結與變數窺視合集Oracle變數
- 繫結變數變數
- v$Sql_bind_capture 時間變數無法顯示SQLAPT變數
- [20190506]檢視巢狀與繫結變數.txt巢狀變數
- 通過ERRORSTACK找出正在執行的SQL中的繫結變數值ErrorSQL變數
- 繫結變數之繫結變數窺探(Bind Peeking)變數
- Oracle 繫結變數Oracle變數
- oracle bind value peeking繫結變數窺視Oracle變數
- 繫結變數窺測變數
- PLSQL使用繫結變數SQL變數
- Oracle之繫結變數Oracle變數
- 關於繫結變數變數
- V$sql查詢未使用繫結變數的語句SQL變數
- 【優化】使用繫結變數 OR 不使用繫結變數,這不是問題!優化變數
- ORACLE 繫結變數用法總結Oracle變數
- 通過v$access檢視正在執行的儲存過程procedure儲存過程
- 【最佳化】使用繫結變數 OR 不使用繫結變數,這不是問題!變數
- 通過v$parameter 檢視 issys_modifiable 狀態判斷是否動態引數
- 繫結變數窺測的演變變數
- 繫結變數的測試變數
- Oracle 繫結變數窺探Oracle變數
- oracle 繫結變數(bind variable)Oracle變數
- 如何獲取繫結變數變數
- Oracle 繫結變數 詳解Oracle變數
- V$SQL_BIND_CAPTURESQLAPT
- 關於繫結變數的SQL繫結什麼值變數SQL