2010-11-22 6 views
1

Ich entwickle eine App mit Oracle-Datenbank und ich würde sicherlich gerne einen SQL-Statements-Tracer, der Sitzungen und Prozesse verfolgen könnte - wie Toad SQL Tracker/Monitor. Aber da der Gute viel Geld kostet, denke ich darüber nach, selbst einen kleinen zu bauen. Irgendwelche Ideen über, die die beste Lösung für das Verfolgen von Oracle SQL Statements wäre?Trace Oracle-Anweisungen

Antwort

5

Sql Plus + tkprof.

alter session set timed_statistics = true; 
alter session set sql_trace = true; 
show parameter user_dump_dest 



tkprof <trc-файл> <txt-файл> 

Wenn Sie irgendeine Sitzung verfolgen (nicht nur Ihre eigenen):

select sid,serial# from v$session 

in sid von Sitzung zu suchen und

begin 
    sys.dbms_system.set_ev(sid, serial#, 10046, 12, ''); 
end; 

Andernfalls können Sie Anmelde Trigger verwenden:

CREATE OR REPLACE TRIGGER SYS.TRACE_A_USER 
AFTER 
LOGON ON <some_db_user>.SCHEMA 
DECLARE 
user_sid NUMBER; 
user_serial# NUMBER; 
user_program VARCHAR2(48); 
BEGIN 
-- Collect the current user session details. 
SELECT sid, serial#, UPPER(program) 
INTO user_sid, user_serial#, user_program 
FROM v$session 
WHERE audsid = USERENV('SESSIONID'); 
-- Start tracing if the user is running the identified application. 
IF user_program = 'SOMECODE.EXE' THEN 
-- Enable tracing. Note level 12 tracing includes bind variable 
-- and wait statistics. 
sys.dbms_system.set_ev(user_sid, user_serial#, 10046, 12, ''); 
END IF; 
END; 
+0

FYI, sql_trace ist jetzt veraltet: http://docs.oracle.com/c d/B19306_01/server.102/b14237/initparams205.htm # REFRN10208 – Snorex

+0

Meine Antwort wurde vor 6 Jahren erstellt .... – demas

+0

Deshalb habe ich das Wort "jetzt". Willst du sagen, dass es schlecht ist, alte Beiträge zu kommentieren? – Snorex