Kbase 47770: Habilitando TRACE de comandos no banco INFORMIX para o produto LOGIX
Autor |
  Eloi Rene Pscheidt - CAT |
Acesso |
  Público |
Publicação |
  08/07/2014 |
|
Os procedimentos listados a seguir objetivam identificar as consultas enviadas ao banco Informix. Embora utilize objetos específicos do produto Logix, seu conceito pode ser facilmente adaptado para qualquer produto que utilize este banco de dados.
1) Conecte no banco Informix que deseja monitorar, utilizando a ferramenta DBACCESS ou outra de sua preferência.
2) Exclua objetos 'p_trace' e 't_trace' que serão criados a seguir. Caso já utilize estes objetos com outro fim, utilize outra nomenclatura para os passos listados nesta documentação:
drop procedure p_trace;
drop trigger t_trace;
3) Crie a procedure p_trace, substituindo nas variáveis 'p_usuario' e 'p_programa' o nome do usuário do produto Logix e o nome do programa do Logix, respectivamente, para os quais deseja monitorar as consultas:
CREATE PROCEDURE p_trace (p_usuario LIKE log_dados_sessao_logix.usuario,
p_programa LIKE log_dados_sessao_logix.programa)
BEGIN
-- Preencher strings de acordo com o usuario
-- e programa a ser monitorado
IF p_usuario = 'admlog' AND p_programa = 'obf17000' THEN
SET EXPLAIN FILE TO 'sqexplain_'||TRIM(p_programa)||'.out';
SET EXPLAIN ON;
END IF;
END;
END PROCEDURE;
4) Crie a trigger que irá executar a procedure recém criada. Utilizaremos o evento de criação de registro na tabela 'log_dados_sessao_logix', que registra cada execução dos programas:
CREATE TRIGGER t_trace INSERT ON log_dados_sessao_logix
REFERENCING NEW AS new_rec
FOR EACH ROW
(EXECUTE PROCEDURE p_trace(new_rec.usuario,new_rec.programa));
5) Execute os programas.
6) Localize os arquivos 'sqexplain_*.out' no servidor do banco de dados:
6.1) No Windows: %INFORMIXDIR%\sqexpln
6.2) No Linux/Unix: /home/usuário
onde: %INFORMIXDIR% é o diretório onde o software Informix foi instalado e 'usuário' é o nome do usuário que executa o serviço do Informix.
7) Caso não utilize o produto Logix, ou não queira habilitar o trace através do evento de criação de registros na tabela 'log_dados_sessao_logix', substitua os passos 2, 3 e 4 por este código:
CREATE PROCEDURE usuario.sysdbopen()
SET EXPLAIN ON;
END PROCEDURE;
7.1) usuário é o nome do usuário que faz a conexão com o banco de dados.
7.2) será habilitado o trace para todos os logins feitos por este usuário.
7.3) os nomes padrões para este trace são 'sqexpln*.out', localizados nos mesmos diretórios listados no passo 6.