バインド変数の値を見る - ablog のつづき。
v$sql_bind_capture でバインド変数の値を確認してみた。
SQL*Plus でバインド変数を使ったSQLを発行して、
$ sqlplus scott/tiger SQL> variable v1 char(3); SQL> exec :v1 := '001'; PL/SQL procedure successfully completed. SQL> select * from emp where id =:v1 ID NAME ------ -------------------- 001 scott SQL> select userenv('SESSIONID') from dual; USERENV('SESSIONID') -------------------- 284070
v$sql_bind_capture で確認してみると、
$ sqlplus / as sysdba SQL> col sql_text for a70 SQL> select sid, sql_hash_value, sql_address, sql_text from v$session a, v$sqltext b where a.sql_address = b.address and a.sql_hash_value = b.hash_value; SID SQL_HASH_VALUE SQL_ADDR SQL_TEXT ---------- -------------- -------- ---------------------------------------------------------------------- 191 3778805849 5CD961F4 select * from emp where id =:v1 194 4125990864 5CD97BC4 value = b.hash_value 194 4125990864 5CD97BC4 a, v$sqltext b where a.sql_address = b.address and a.sql_hash_ 194 4125990864 5CD97BC4 select sid, sql_hash_value, sql_address, sql_text from v$session 196 4281219134 5CFB8C80 BEGIN EMD_NOTIFICATION.QUEUE_READY(:1, :2, :3); END; SQL> col name for a10 SQL> col value_string for a10 SQL> select address, hash_value, name, value_string from v$sql_bind_capture where address = '5CD961F4' and hash_value = 3778805849; ADDRESS HASH_VALUE NAME VALUE_STRI -------- ---------- ---------- ---------- 5CD961F4 3778805849 :V1 001
バインド変数の値が見れた。
ただ、この方法だと、
v$sql_bind_capture may not give you the right bind variable value as you can't really control when exactly the capture happens (you may see an "old" bind value or someone else's bind there).
RE: Tx - row lock contention after implementing transaction management in application server - oracle-l - FreeLists
ということで、本当に見たいバインド変数の値を見れているのかどうかわからない。バインド変数を使ったSQLは共有されるので、古い値を見ていたり、別のセッションでセットされた値を見ていたりする可能性がある。
[参考]
RE: Tx - row lock contention after implementing transaction management in application server - oracle-l - FreeLists
http://taaboo.at.webry.info/200604/article_1.html
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19228-03/dynviews_2.htm#132759