Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak uzyskać informacje o śledzeniu dla zmiennych wiążących przekazywanych przez OracleParameter w ODP.NET?

Jako jedną z opcji możesz włączyć śledzenie sql z zrzucaniem zmiennych bind, ustawiając zdarzenie 10046 na poziomie 12 lub 4 dla sesji, ręcznie lub automatycznie (na przykład w wyzwalaczu logowania dla użytkownika):

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

Następnie plik śledzenia zostanie wygenerowany w katalogu określonym przez user_dump_dest parametr.

SQL> show parameter user_dump_dest;

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

Oto przykład:

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 ;

Wśród innych informacji prezentowanych w nowo wygenerowanym pliku śledzenia mogliśmy znaleźć informacje o zapytaniu, powiązać zmienne i ich/ich wartości:

Możesz również, zaczynając od Oracle 10g i nowszych, zapytanie v$sql_bind_capture dynamiczny widok wydajności, aby uzyskać informacje o powiązanych zmiennych i ich wartościach:

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

Wynik:

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. wyszukiwanie tekstu Oracle Blob

  2. ASP.NET MVC5 — utrzymywanie użytkowników w bazie danych Oracle

  3. SQL Query to Count() wiele tabel

  4. Jak mogę znaleźć pudełko o odpowiednim rozmiarze dla każdego produktu?

  5. Migracja danych między różnymi DBMS