2010-11-22 54 views
1

Je suis en train de développer une application utilisant la base de données Oracle et je voudrais sûrement avoir un traceur d'instructions SQL qui pourrait tracer des sessions et traiter des instructions - comme SQL Tracker/Monitor de Toad. Mais puisque le bon coûte beaucoup d'argent je pense à construire un petit moi-même. Des idées sur ce qui serait la meilleure solution pour tracer des instructions SQL Oracle?instructions trace oracle

Répondre

5

Sql Plus + tkprof.

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



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

Si vous avez besoin de suivre une session (non seulement votre propre):

select sid,serial# from v$session 

à regarder sid de la session et

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

Sinon, vous pouvez utiliser déclencheur de connexion:

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 est maintenant obsolète: http://docs.oracle.com/c d/B19306_01/server.102/b14237/initparams205.htm # REFRN10208 – Snorex

+0

Ma réponse a été créée il y a 6 ans .... – demas

+0

C'est pourquoi j'ai le mot "maintenant". Êtes-vous en train de dire que c'est une mauvaise forme de commenter les anciens messages? – Snorex