Tempo aproximado para leitura: 00:02:12 min
Dúvida
Como ativar o trace de comandos SQL do Oracle desde o início do programa?
Ambiente
Framework - Framework (Linha Logix) - Administração Logix - Todas as versões
Solução
No início da execução de um programa no Logix, é realizado o login no banco de dados Oracle. Cada programa abre uma conexão diferente.
Para ativar o trace de comandos SQL - Structured Query Language do Oracle abrangendo toda a execução da rotina, será necessário criar uma trigger para o evento logon no banco de dados, conforme o exemplo a seguir:
create or replace trigger trace_logon_logix
after logon on schema
declare
vPrograma varchar2(30);
begin
select program into vPrograma from v$session where audsid = userenv('sessionid');
if vPrograma = 'TotvsAppServerdeb.exe' then
execute immediate 'alter session set tracefile_identifier=debug';
dbms_monitor.session_trace_enable(waits=>true,binds=>true);
end if;
end;
/
O exemplo acima somente habilita o trace para as conexões oriundas do Appserver com o nome TotvsAppServerdeb.exe. O script poderá ser ajustado para outros nomes de executáveis, bem como estendido para filtrar por outras colunas, como o nome do servidor de onde vem a conexão, por exemplo.
Os nomes dos arquivos de trace produzidos serão prefixados com a palavra debug, para facilitar a sua localização no servidor, diferenciando dos demais arquivos.
Importante
Para que a trigger funcione corretamente, será necessário o usuário o owner do Logix possuir as seguintes permissões:
grant select on v$session to <logix>;
grant execute on dbms_monitor to <logix>;
onde: <logix> = owner utilizado para armazenar as tabelas do Logix
O script também deverá ser executado conectado com o usuário owner do Logix.
Quando os traces não forem mais necessários, bastará eliminar a trigger de login, utilizando o comando:
drop trigger trace_logon_logix;
0 Comentários