- Este tópico contém 10 respostas, 3 vozes e foi atualizado pela última vez 14 anos, 4 meses atrás por jspaulonci.
-
AutorPosts
-
12 de agosto de 2010 às 2:03 am #95491airoospParticipante
Boa tarde,
Pesquisei na internet sobre monitorar os usuários que estão fazendo login no banco e encontrei a trigger abaixo. A trigger foi criada no banco, não teve erro de compilação mas não grava informações na tabela de log.
Falta alguma configuração a ser feita no banco para que a trigger funcione?CREATE OR REPLACE TRIGGER “LOGON_AUDIT_TRIGGER” AFTER LOGON ON DATABASE
DECLARE
sess number(10);
prog varchar2(70);BEGIN
IF user = ‘COMPRAS’ or user = ‘ALMOXARIFADO’ or user = ‘FINANCEIRO’ or user = ‘VENDAS’ THEN
sess := sys_context(‘USERENV’,’SESSIONID’);SELECT program INTO prog
FROM v$session
WHERE audsid = sess
and rownum<=1; INSERT INTO user_login_table VALUES ( user, sys_context('USERENV','HOST'), sys_context('USERENV','IP_ADDRESS'), sys_context('USERENV','OS_USER'), sys_context('USERENV','TERMINAL'), sys_context('USERENV','SESSIONID'), prog, sysdate); END IF; END; Obrigado. Airton12 de agosto de 2010 às 2:49 am #95492IshiiParticipanteOlá,
Verifique se o dbms_standard está disponível. Se não tiver rode conectado como SYS $ORACLE_HOME/rdbms/admin/dbmsstdx.sql
Se estiver, sugiro remover o IF e ver se funciona com qualquer usuário.
[]s Ishii
12 de agosto de 2010 às 5:12 pm #95494airoospParticipanteIshii,
Para verificar se a DBMS_STANDARD esta disponível é consultar DBA_OBJECTS?
Obrigado.
Airton
12 de agosto de 2010 às 5:16 pm #95495IshiiParticipanteOlá
Se você conseguir dar um DESC DBMS_STANDARD e retornar já significa que está disponível…
[]s Ishii
12 de agosto de 2010 às 5:45 pm #95498airoospParticipanteSim executei o desc que apareceu o conteúdo da package.
12 de agosto de 2010 às 5:55 pm #95499IshiiParticipanteOlá,
Então mude a rotina removendo o IF para ver se o insert ocorre com qualquer usuário…
[]s Ishii
12 de agosto de 2010 às 6:01 pm #95500airoospParticipanteO IF foi retirado e não funcionou, nenhum registro gravado na tabela.
12 de agosto de 2010 às 6:56 pm #95503airoospParticipanteIshii,
Executei novamente /rdbms/admin/dbmsstdx.sql e não houve erro. Após isso recompilei os objetos e fiz o teste da trigger.
O problema continua nenhum registro é gravado em tabela, parece que a trigger não é executada.
Falta fazer alguma configuração no banco 9i?
Obrigado.
Airton
12 de agosto de 2010 às 8:06 pm #95507IshiiParticipanteOlá
Deixe sua trigger apenas com o insert removendo tudo inclusive a variável prog. Se funcionar assim, sabemos que a trigger de logon está funcionando. Então será necessário rever a lógica.
[]s Ishii
12 de agosto de 2010 às 11:10 pm #95508airoospParticipanteIshii,
Descobri o problema, há um parâmetro chamado “_system_trig_enabled” que precisa estar configurado como TRUE para que as triggers de sistema funcionem.
Verifiquei e o mesmo estava como FALSE, foi modificado com alter system para TRUE e a trigger funcionou.
O interessante é que tentei alterar a trigger com o este parâmetro habilitado e não consegui. Foi alterado novamente para FALSE e consegui alterar a TRIGGER.
Será que é necessário desabilitar o parâmetro para poder mexer na trigger sem causar impacto caso algum usuário esteja fazendo o login no momento.Obrigado.
Airton
13 de agosto de 2010 às 3:49 pm #95519jspaulonciParticipanteOlha, isso pra é novidade realmente não sabia disso,
Mas vamos por partes, pelo que eu entendi vc quer alterar a trigger e não está conseguindo ?
Que erro que dá ? tem que funcionar normal , não tem porque dar problema.
-
AutorPosts
- Você deve fazer login para responder a este tópico.