Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да получа информация за проследяване за обвързващи променливи, предадени през OracleParameter в ODP.NET?

Като една от опциите можете да включите 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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да добавя интервал пред моя номер, ако е едноцифрен?

  2. Как да групирате последователни редове заедно в SQL по множество колони

  3. Заобиколно решение за външно свързване с IN оператор в Oracle

  4. Как да отпечатам резултата в различен ред с помощта на SQL заявка?

  5. Как мога да ИЗБЕРА няколко стойности от 5 таблици?