sql >> Database >  >> RDS >> Oracle

Hoe krijg ik traceringsinformatie voor bindingsvariabelen die via OracleParameter in ODP.NET worden doorgegeven?

Als een van de opties kunt u sql-tracering inschakelen met het dumpen van bindvariabelen door 10046-gebeurtenis van niveau 12 of 4 in te stellen voor een sessie, handmatig of automatisch (bijvoorbeeld in een aanmeldingstrigger voor een gebruiker):

alter session set events '10046 trace name context forever, level 12';

Daarna wordt het traceerbestand gegenereerd in een map gespecificeerd door user_dump_dest parameter.

SQL> show parameter user_dump_dest;

NAME                                 TYPE        VALUE                          
------------------------------------ ----------- ------------------------------ 
user_dump_dest                       string      D:\...\diag\rdbms\cdb\cdb 
                                                 \trace   

Hier is een voorbeeld:

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 ;

Naast andere informatie die wordt gepresenteerd in een nieuw gegenereerd traceringsbestand, kunnen we informatie vinden over de query, bindvariabele(n) en zijn/hun waarden:

U kunt ook, vanaf Oracle 10g en hoger, v$sql_bind_capture opvragen dynamische prestatieweergave om informatie te krijgen over bindvariabelen en hun waarden:

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

Resultaat:

PARSING_USER_ID   SQL_FULLTEXT                      NAME    VALUE_STRING   
 ------------------------------------------------------------------------ 
           103   select 1 from dual where 1 =:var  :VAR     1234567



  1. PostgreSQL CASE ... END met meerdere voorwaarden

  2. hoe te bestellen op een dynamische kolomnaam in EntityFramework?

  3. CASCADE VERWIJDEREN slechts één keer

  4. Retourneer rijen van INSERT met ON CONFLICT zonder te updaten