Wanderson, eu não entendi, este erro ocorre quando você tentar criar a Trigger 
ou depois de criada ao tentar logar no DataBase?
 
Alessandro Lúcio Cordeiro da Silva 
        Analista de Sistema

þ http://alecordeirosilva.blogspot.com/

Porque esta é a vontade de Deus, a saber, a vossa 
santificação: que vos abstenhais da prostituição.
(1º Tessalonicenses 4:3)




Em Quarta-feira, 12 de Março de 2014 13:04, Wanderson Barrence 
<wbarre...@gmail.com> escreveu:
 
  
Olá Pessoal,

Estou fazendo uma trigger de logon para monitorar todos os usuários que acessam 
o banco de dados, tanto o usuário da aplicação, como usuário cliente oracle e 
qualquer tipo de acesso com SYSDBA, os dados são armazenados numa tabela 
chamada userlogon, mas por algum motivo a minha trigger está dando um erro, já 
segui vários tutoriais no google e ainda não consegui resolver o problema.

Segue a trigger:

CREATE TABLE loguser.userlogon (
       user_name VARCHAR2(300),
       login_date DATE,
       osuser VARCHAR2(300),
       terminal VARCHAR(300),
       program VARCHAR(300),
       ipadress VARCHAR(46)
       );

CREATE OR REPLACE TRIGGER sys.audit_userlogon
after LOGON ON DATABASE 

DECLARE
wuser varchar2(300);
wosuser varchar2(300);
wterminal varchar2(300);
wprogram varchar2(300);
wipadress varchar2(46);

BEGIN
SELECT username, osuser, machine, program INTO wuser, wosuser, wterminal, 
wprogram
  FROM v$session 
  WHERE audsid = userenv('sessionid')
  AND ROWNUM = 1;

wipadress := sys_context('userenv','ip_address');

INSERT INTO loguser.userlogon( 
    user_name,
    login_date,
    osuser,
    terminal,
    program,
    ipadress 
    ) VALUES ( 
    wuser,
 SYSDATE,
    wosuser,
    wterminal,
    wprogram,
    wipadress );
    
END audit_userlogon;
/

Erro:
ORA-00604: ocorreu um erro no nível 1 SQL recursivo
ORA-01422: a extração exata retorna mais do que o número solicitado de linhas
ORA-06512: em line 35

Att,

Wanderson

Responder a