SQL Trace uitvoeren op Oracle gebruiker

16 jan

Indien je een applicatie gebruikt zoals bijvoorbeeld Oracle Forms, kan het zijn dat je wilt weten welke SQL er onder water wordt uitgevoerd omdat er iets mis gaat en je geen duidelijke foutmelding krijgt. Met een SQL Trace kun je dit in Oracle realiseren. Een SQL Trace kan worden uitgevoerd op je huidige sessie, op de sessie van een andere gebruiker of op het hele database systeem.


SQL Trace op huidige sessie
Je kunt een SQL Trace uitvoeren op de sessie waarmee je bent ingelogd met het volgende commando:

ALTER SESSION SET sql_trace = true;

De output van de trace is te vinden in de UDUMP directory op de database server. Je kunt er voor kiezen een eigen naam te geven aan de tracefile. Dit kan als volgt:

ALTER SESSION SET sql_trace = true;
ALTER SESSION SET tracefile_identifier = mijneigennaam;

Je moet de SQL trace ook stoppen:

ALTER SESSION SET sql_trace = false;

Let op: laat een trace niet te lang lopen, het bestand is niet erg makkelijk leesbaar.

SQL trace uitvoeren op een andere sessie
Bepaal welke sessie je wilt tracen, je hebt de sid nodig en het serial#:

SELECT s.sid,
s.serial#,
s.osuser,
s.program
FROM v$session s;

Start de trace als volgt:

ALTER SYSTEM SET timed_statistics = true;
execute dbms_system.set_sql_trace_in_session(8, 13607, true);

Laat nu de gebruiker de betreffende acties uitvoeren. Stop de trace als volgt:

execute dbms_system.set_sql_trace_in_session(8,13607, false);

De output van de trace is te vinden in de UDUMP directory op de database server.

Trace uitvoeren op de hele database
Start de SQL trace op de gehele database:
ALTER SYSTEM SET sql_trace = true SCOPE=MEMORY;

Stop:
ALTER SYSTEM SET sql_trace = false SCOPE=MEMORY;

No comments yet

Leave a Reply