Pregunta

Estoy desarrollando una aplicación usando la base de datos de Oracle y sin duda me gustaría tener un trazador de sentencias SQL que podrían sesiones de seguimiento de procesos y estados - como sapo de SQL perseguidor / Monitor. Pero ya que el costo de un buen montón de dinero que estoy pensando en la construcción de un pequeño uno yo mismo. Cualquier ideeas sobre wich sería la mejor solución para el seguimiento de las declaraciones SQL de Oracle?

¿Fue útil?

Solución

SQL Plus + TKPROF.

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



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

Si necesita rastrear cualquier sesión (no sólo su propia):

 select sid,serial# from v$session

para ver sid de la sesión y

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

contrario, puede utilizar el gatillo de inicio de sesión:

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;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top