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
1
A
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;
FYI, sql_trace est maintenant obsolète: http://docs.oracle.com/c d/B19306_01/server.102/b14237/initparams205.htm # REFRN10208 – Snorex
Ma réponse a été créée il y a 6 ans .... – demas
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