विकल्पों में से एक के रूप में, आप मैन्युअल रूप से या स्वचालित रूप से (उदाहरण के लिए किसी उपयोगकर्ता के लिए लॉगऑन ट्रिगर में) सत्र के लिए स्तर 12 या 4 की 10046 ईवेंट सेट करके बाइंड वैरिएबल डंपिंग के साथ एसक्यूएल ट्रेसिंग चालू कर सकते हैं:
alter session set events '10046 trace name context forever, level 12';
उसके बाद user_dump_dest
. द्वारा निर्दिष्ट निर्देशिका में ट्रेस फ़ाइल जेनरेट हो जाएगी पैरामीटर।
SQL> show parameter user_dump_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest string D:\...\diag\rdbms\cdb\cdb
\trace
यहां एक उदाहरण दिया गया है:
SQL> alter session set events '10046 trace name context forever, level 12';
2 variable var number;
3 exec :var := 1234567; -- our bind variable
4 select 1 from dual where 1234567 = :var ;
नई जनरेट की गई ट्रेस फ़ाइल में प्रस्तुत अन्य जानकारी के अलावा हमें क्वेरी, बाइंड वेरिएबल और उसके/उनके मूल्यों के बारे में जानकारी मिल सकती है:
आप Oracle 10g और बाद के संस्करण से शुरू करके v$sql_bind_capture
क्वेरी भी कर सकते हैं बाइंड वैरिएबल और उनके मूल्यों के बारे में जानकारी प्राप्त करने के लिए गतिशील प्रदर्शन दृश्य:
select t.parsing_user_id
, t.sql_fulltext -- text of a query
, bc.name -- name of a bind variable
, bc.value_string -- value of a bind variable
from v$sqlarea t
join v$sql_bind_capture bc
on (bc.sql_id = t.sql_id)
join v$session s
on (s.user# = t.parsing_schema_id)
where s.username = user
and bc.name in (':VAR') -- name of a bind variable(s),
-- value(s) of which we want to know
परिणाम:
PARSING_USER_ID SQL_FULLTEXT NAME VALUE_STRING
------------------------------------------------------------------------
103 select 1 from dual where 1 =:var :VAR 1234567