Question

Je développe une application utilisant la base de données Oracle et je serais sûrement que d'avoir une des instructions SQL traceur qui pourrait les instructions trace des sessions et des processus - comme Tracker / moniteur SQL de crapaud. Mais puisque le bon coût beaucoup d'argent, je pense à la construction d'un petit moi-même. Toute ideeas sur Wich serait la meilleure solution pour le suivi des instructions SQL oracle?

Était-ce utile?

La solution

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 d'ouverture de session:

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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top