oracle資料庫獲取繫結變數的各種方法
1、查詢v$sql檢視
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;
此時查詢到的data值得形式是這樣的:BEDA0B2002004F8482D10065FFFF0F00000000000000000000C0021602C102C0021602C102F0018003691532303132303431313032504F443834363135313635F0018003691532303132303431313032504F443834363135313730F0018003691532303132303431313032504F443834363135313731F0018003691532303132303431313032504F443834363135313734F0018003691532303132303431313032504F443834363135313735F0018003691532303132303431313032504F443834363135313739F0018003691532303132303431313032504F443834363135313830F0018003691532303132303431313032504F443834363135313833F0018003691532303132303431313032504F443834363135313834F0018003691532303132303431313032504F443834363135313838F0018003691532303132303431313032504F443834363135313839F0018003691532303132303431313032504F443834363135313933F0018003691532303132303431313032504F443834363135313934F0018003691532303132303431313032504F443834363135313937F0018003691532303132303431313032504F443834363135313938F0018003691532303132303431313032504F443834363135323033F0018003691532303132303431313032504F443834363135323034F0018003691532303132303431313032504F443834363135323037
這樣肯定是沒法看懂的
需喲進行轉換
select dbms_sqltune.extract_binds(bind_data) bind from v$sql WHERE SQL_TEXT LIKE '%FROM TEST11%';
2、查詢 SELECT VALUE_STRING FROM V$SQL_BIND_CAPTURE WHERE SQL_ID='abhf6n1xqgrr0';
透過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';
select snap_id,
t.dbid,
t.instance_number,
name,
position,
t.datatype,
t.datatype_string,
value_string,
last_captured,
WAS_CAPTURED
from dba_hist_sqlbind t
where sql_id = '1ps1ckbnf3b88'
----------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條件後面的繫結進行捕獲,這點需要使用的時候注意。
3、查詢 dba_hist_sqlbind VALUE_STRING列
DBA_HIST_SQLBIND是檢視V$SQL_BIND_CAPTURE歷史快照
4、查詢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等
5.根據基表獲取繫結變數的方法:
select dbms_sqltune.extract_bind(bind_data, 1).value_string||'-'|| dbms_sqltune.extract_bind(bind_data, 2).value_string ||'-'|| dbms_sqltune.extract_bind(bind_data, 3)
.value_string ||'-'|| dbms_sqltune.extract_bind(bind_data, 4).value_string ||'-'|| dbms_sqltune.extract_bind(bind_data, 5)
.value_string ||'-'|| dbms_sqltune.extract_bind(bind_data, 6).value_string
from wrh$_sqlstat
where sql_id = '05gp0u2vtckb1'
/
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;
此時查詢到的data值得形式是這樣的:BEDA0B2002004F8482D10065FFFF0F00000000000000000000C0021602C102C0021602C102F0018003691532303132303431313032504F443834363135313635F0018003691532303132303431313032504F443834363135313730F0018003691532303132303431313032504F443834363135313731F0018003691532303132303431313032504F443834363135313734F0018003691532303132303431313032504F443834363135313735F0018003691532303132303431313032504F443834363135313739F0018003691532303132303431313032504F443834363135313830F0018003691532303132303431313032504F443834363135313833F0018003691532303132303431313032504F443834363135313834F0018003691532303132303431313032504F443834363135313838F0018003691532303132303431313032504F443834363135313839F0018003691532303132303431313032504F443834363135313933F0018003691532303132303431313032504F443834363135313934F0018003691532303132303431313032504F443834363135313937F0018003691532303132303431313032504F443834363135313938F0018003691532303132303431313032504F443834363135323033F0018003691532303132303431313032504F443834363135323034F0018003691532303132303431313032504F443834363135323037
這樣肯定是沒法看懂的
需喲進行轉換
select dbms_sqltune.extract_binds(bind_data) bind from v$sql WHERE SQL_TEXT LIKE '%FROM TEST11%';
2、查詢 SELECT VALUE_STRING FROM V$SQL_BIND_CAPTURE WHERE SQL_ID='abhf6n1xqgrr0';
透過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';
select snap_id,
t.dbid,
t.instance_number,
name,
position,
t.datatype,
t.datatype_string,
value_string,
last_captured,
WAS_CAPTURED
from dba_hist_sqlbind t
where sql_id = '1ps1ckbnf3b88'
----------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條件後面的繫結進行捕獲,這點需要使用的時候注意。
3、查詢 dba_hist_sqlbind VALUE_STRING列
DBA_HIST_SQLBIND是檢視V$SQL_BIND_CAPTURE歷史快照
4、查詢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等
5.根據基表獲取繫結變數的方法:
select dbms_sqltune.extract_bind(bind_data, 1).value_string||'-'|| dbms_sqltune.extract_bind(bind_data, 2).value_string ||'-'|| dbms_sqltune.extract_bind(bind_data, 3)
.value_string ||'-'|| dbms_sqltune.extract_bind(bind_data, 4).value_string ||'-'|| dbms_sqltune.extract_bind(bind_data, 5)
.value_string ||'-'|| dbms_sqltune.extract_bind(bind_data, 6).value_string
from wrh$_sqlstat
where sql_id = '05gp0u2vtckb1'
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-2131178/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle獲取繫結變數的各種方法Oracle變數
- ORACLE 獲取繫結變數值Oracle變數
- 如何獲取繫結變數變數
- 獲取sql繫結變數的值SQL變數
- 如何獲取繫結變數值變數
- jdbc獲取各種資料庫連線JDBC資料庫
- jdbc獲取對各種資料庫的連線JDBC資料庫
- 關於高效捕獲資料庫非繫結變數的SQL語句資料庫變數SQL
- v$sql_bind_capture 獲取繫結變數SQLAPT變數
- Oracle 繫結變數Oracle變數
- v$sql_bind_capture 獲取繫結變數資訊SQLAPT變數
- 獲取Oracle資料庫awr報告方法Oracle資料庫
- Oracle之繫結變數Oracle變數
- 一種獲取SAP HANA資料庫表條目數的另類方法資料庫
- oracle繫結變數的測試Oracle變數
- ORACLE 繫結變數用法總結Oracle變數
- Oracle 繫結變數窺探Oracle變數
- oracle 繫結變數(bind variable)Oracle變數
- Oracle 繫結變數 詳解Oracle變數
- Oracle資料傾斜導致的問題-有繫結變數Oracle變數
- Oracle資料傾斜導致的問題-無繫結變數Oracle變數
- 【SCN】Oracle資料庫SCN號的四種獲取途徑Oracle資料庫
- PHP獲取POST資料的3種方法PHP
- Oracle 變數繫結與變數窺視合集Oracle變數
- 【ORACLE】Oracle繫結變數知識梳理Oracle變數
- Oracle 資料庫的各種狀態和模式Oracle資料庫模式
- 從request獲取各種路徑總結
- oracle繫結變數窺視(zt)Oracle變數
- React 中獲取資料的 3 種方法:哪種最好?React
- python 獲取變數名的方法Python變數
- [Spring MVC] - SpringMVC的各種引數繫結方式SpringMVC
- 從不繫結變數與繫結變數兩種情況討論柱狀圖的作用變數
- 獲取資料並繫結到 UI | MAD SkillsUI
- 繫結變數變數
- C++變數總結束 | 輸出各種變數的值C++變數
- 取當前日期各種資料庫的寫法 (轉)資料庫
- JDBC連線各種資料庫的方法(經典)JDBC資料庫
- java連線Oracle資料庫獲取資料JavaOracle資料庫