Trigger de logon para ativar trace

By Mario Barduchi Olá pessoal.

Tive uma necessidade a um tempo atrás de ativar um trace em uma detereminada sessão que viesse de um programa específico.

Coisa simples, então vou deixar documentado aqui para quem precisar a trigger de logon que eu usei.

create or replace trigger sys.LOGON_TRACE
after logon on database
DECLARE
v_username VARCHAR2(70);
v_program VARCHAR2(70);
BEGIN
SELECT LOWER(USERNAME),
LOWER(PROGRAM)
INTO v_username,
v_program
FROM sys.v_$session
WHERE
sid = SYS_CONTEXT(‘USERENV’, ‘SID’);

— if ora_login_user = ‘MARIO’ then — Se quiser utilizar a trigger em determinados logins
IF (v_program = ‘q_sender.exe’ OR v_program=’sqlplusw.exe’)
THEN
EXECUTE IMMEDIATE ‘ALTER SESSION SET sql_trace=TRUE’;
EXECUTE IMMEDIATE ‘alter session set timed_statistics=true’;
EXECUTE IMMEDIATE ‘alter session set max_dump_file_size=unlimited’;
EXECUTE IMMEDIATE ‘alter session set events=”10046 trace name context forever, level 12”’;
END IF;
END LOGON_TRACE;

/
Então é isso pessoal, simples e objetivo.

Abraço
Mario

Fonte: ORADICAS – Mario Barduchi