Като една от опциите можете да включите sql проследяване с изхвърляне на променливи за обвързване, като зададете 10046 събитие от ниво 12 или 4 за сесия, ръчно или автоматично (в тригер за влизане за потребител например):
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