sql >> Databasteknik >  >> RDS >> Oracle

Hur får man spårningsinformation för bindningsvariabler som skickas genom OracleParameter i ODP.NET?

Som ett av alternativen kan du aktivera sql-spårning med bindningsvariabler dumpning genom att ställa in 10046 händelse på nivå 12 eller 4 för en session, antingen manuellt eller automatiskt (i en inloggningstrigger för en användare till exempel):

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

Efter den kommer spårningsfilen att genereras i en katalog specificerad av user_dump_dest parameter.

SQL> show parameter user_dump_dest;

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

Här är ett exempel:

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 ;

Bland annan information som presenteras i en nygenererad spårningsfil kunde vi hitta information om frågan, bindningsvariabler och dess/deras värden:

Du kan också, från Oracle 10g och uppåt, fråga v$sql_bind_capture dynamisk prestandavy för att få information om bindningsvariabler och deras värden:

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

Resultat:

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



  1. Hur kan jag behålla CDATA-taggar när jag lagrar frågeresultat i en Xml-variabel?

  2. Hur löser man problem med mappning av SQL-frågeparametrar när man använder Oracle OLE DB-leverantör?

  3. Ändra insatt värde med trigger

  4. Java-trådssäkra databasanslutningar