Domanda

Sto sviluppando un'applicazione utilizzando database Oracle e avrei sicuramente dire avere un istruzioni SQL tracciante che potrebbe tracciare sessioni e processi dichiarazioni - come quella di Toad SQL Tracker / Monitor. Ma dal momento che il costo buono un sacco di soldi che sto pensando di costruire una piccola uno io. Eventuali ideeas circa Quale sarebbe la soluzione migliore per il tracciamento dichiarazioni Oracle SQL?

È stato utile?

Soluzione

Sql Plus + TKPROF.

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



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

Se avete bisogno di tracciare qualsiasi sessione (non solo il proprio):

 select sid,serial# from v$session

a guardare sid della sessione e

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

In caso contrario, è possibile utilizzare trigger di accesso:

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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top