Um outro detalhe: eu reparei no seu script que vc ainda está conectado como SYS quando tenta fazer connect abc123/abc123. Pode ser esse o motivo de estar gravando SYS na tabela de log. Experimenta abrir outro putty e fazer sqlplus abc123/abc123 pra ver o q grava.
Em 29 de novembro de 2011 16:12, Marcos de Moura Gonçalves < [email protected]> escreveu: > Realmente, não percebi que no seu script vc se conecta como /. Eu vi o > create trigger sem especificar o owner e achei que ficava em um outro owner. > > Não sei se ajuda, mas segue o código do trigger e tabela q eu fiz na > época: > > CREATE TABLE marcos.erro_logon > (dt_erro DATE DEFAULT SYSDATE > ,txt_oracle_user VARCHAR2(30) > ,txt_ip VARCHAR2(15) > ,txt_maquina VARCHAR2(50) > ,txt_os_user VARCHAR2(50) > ,txt_software VARCHAR2(50) > ,txt_tipo_autenticacao VARCHAR2(50) > ,txt_erro VARCHAR2(100)) > / > CREATE OR REPLACE TRIGGER SYS.trg_as_erro_logon > AFTER SERVERERROR ON DATABASE > BEGIN > IF ( is_servererror (1004) > OR is_servererror (1005) > OR is_servererror (1017) > OR is_servererror (1035) > OR is_servererror (1045) > ) > THEN > INSERT INTO marcos.erro_logon > (txt_oracle_user, > txt_ip, > txt_maquina, > txt_os_user, > txt_software, > txt_tipo_autenticacao, > txt_erro > ) > VALUES (SYS_CONTEXT ('USERENV', 'CURRENT_USER'), > SYS_CONTEXT ('USERENV', 'IP_ADDRESS'), > SYS_CONTEXT ('USERENV', 'HOST'), > SYS_CONTEXT ('USERENV', 'OS_USER'), > SYS_CONTEXT ('USERENV', 'MODULE'), > SYS_CONTEXT ('USERENV', 'AUTHENTICATION_TYPE'), > DBMS_UTILITY.format_error_stack > ); > COMMIT; > END IF; > END trg_as_erro_logon; > / > > Erros logados: > 1004: ORA-01004: default username feature not supported; logon denied > 1005: ORA-01005: null password given; logon denied > 1017: ORA-01017: invalid username/password; logon denied > 1035: ORA-01035: ORACLE only available to users with RESTRICTED SESSION > privilege > 1045: ORA-01045: user ... lacks CREATE SESSION privilege; logon denied > []s > > Marcos > > Em 29 de novembro de 2011 16:08, JLSilva <[email protected]>escreveu: > > ** >> >> >> Olha, não entendo qual seria a diferença. A trigger e a tabela já está no >> schema SYS. >> De qualquer forma, executei este procedimento, mas o resultado foi >> exatamente o mesmo, ou seja, o CURRENT_USER retorna o SYS e o SESSION_USER >> retorna nulo, independente de existir ou não no banco o usuário informado >> no login. >> >> Se tiver mais alguma dica, agradeço! >> >> connect / as sysdba >> >> create user jlsilva identified by jlsilva quota unlimited on users; >> grant create session, create table to jlsilva; >> >> drop table jlsilva.log_falha_logon_tt purge; >> create table jlsilva.log_falha_logon_tt as >> >> select >> --ORA_LOGIN_USER SESSION_USER, >> sys_context('USERENV','CURRENT_USER') SESSION_USER, >> --sys_context('USERENV','SESSION_USER') SESSION_USER, >> --sys_context('USERENV','SESSION_USERID') SESSION_USERID, >> sys_context('USERENV','AUTHENTICATION_TYPE') AUTHENTICATION_TYPE, >> ORA_DATABASE_NAME DATABASE_NAME, >> ORA_INSTANCE_NUM INSTANCE_NUM, >> ORA_SERVER_ERROR(1) SERVER_ERROR, >> sysdate HORA_OCORR, >> sys_context('USERENV','IP_ADDRESS') IP_ADDRESS, >> sys_context('USERENV','HOST') HOST, >> sys_context('USERENV','TERMINAL') TERMINAL, >> sys_context('USERENV','OS_USER') OS_USER, >> sys_context('USERENV','NETWORK_PROTOCOL') NETWORK_PROTOCOL >> from dual >> where 1=2; >> >> create or replace trigger sys.tr_falha_logon_tt >> >> AFTER SERVERERROR ON DATABASE >> declare >> BEGIN >> IF IS_SERVERERROR(1017) THEN >> insert into jlsilva.log_falha_logon_tt >> >> ( >> SESSION_USER, >> AUTHENTICATION_TYPE, >> DATABASE_NAME, >> INSTANCE_NUM, >> SERVER_ERROR, >> HORA_OCORR, >> IP_ADDRESS, >> HOST, >> TERMINAL, >> OS_USER, >> NETWORK_PROTOCOL >> ) >> values >> ( >> --ORA_LOGIN_USER, >> sys_context('USERENV','CURRENT_USER'), >> --sys_context('USERENV','SESSION_USER'), >> --sys_context('USERENV','SESSION_USERID'), >> sys_context('USERENV','AUTHENTICATION_TYPE'), >> ORA_DATABASE_NAME, >> ORA_INSTANCE_NUM, >> ORA_SERVER_ERROR(1), >> sysdate, >> sys_context('USERENV','IP_ADDRESS'), >> sys_context('USERENV','HOST'), >> sys_context('USERENV','TERMINAL'), >> sys_context('USERENV','OS_USER'), >> sys_context('USERENV','NETWORK_PROTOCOL') >> ); >> END IF; >> END; >> / >> >> connect abc123/abc123 >> connect / as sysdba >> >> set linesize 999 pagesize 1000 >> column SESSION_USER format a15 >> column SESSION_USERID format a15 >> column AUTHENTICATION_TYPE format a15 >> column DATABASE_NAME format a15 >> column INSTANCE_NUM format 999 >> column SERVER_ERROR format 999999 >> column IP_ADDRESS format a15 >> column HOST format a35 >> column TERMINAL format a15 >> column OS_USER format a15 >> column NETWORK_PROTOCOL format a15 >> select * from jlsilva.log_falha_logon_tt order by hora_ocorr; >> >> >> On Nov 29, 2011, at 15:55 , Marcos de Moura Gonçalves wrote: >> >> > Cara, a minha trigger é muito parecida com a sua, o mesmo conceito. Fiz >> > essa trigger a um tempo já, e lembro que li alguma coisa sobre a >> diferença >> > entre essa trigger estar ou não no usuário SYS. O motivo, honestamente, >> não >> > lembro, mas lembro que minha tabela de log ficava dentro do meu schema, >> mas >> > a trigger eu criei dentro do schema sys. Experimenta dropar a sua >> trigger e >> > recompilá-la, igualzinha, apenas especificando: >> > create or replace trigger SYS.tr_falha_logon_tt >> > >> > Em 29 de novembro de 2011 15:49, JLSilva <[email protected]> >> escreveu: >> > >> >> ** >> >> >> >> >> >> >> Ah, entendi. >> >> Você deve estar fazendo uma trigger de login, comum. >> >> Veja meu processo e veja se é isto que você está fazendo: >> >> >> >> connect / as sysdba >> >> >> >> drop table log_falha_logon_tt purge; >> >> create table log_falha_logon_tt as >> >> select >> >> --ORA_LOGIN_USER SESSION_USER, >> >> sys_context('USERENV','CURRENT_USER') SESSION_USER, >> >> --sys_context('USERENV','SESSION_USER') SESSION_USER, >> >> --sys_context('USERENV','SESSION_USERID') SESSION_USERID, >> >> sys_context('USERENV','AUTHENTICATION_TYPE') AUTHENTICATION_TYPE, >> >> ORA_DATABASE_NAME DATABASE_NAME, >> >> ORA_INSTANCE_NUM INSTANCE_NUM, >> >> ORA_SERVER_ERROR(1) SERVER_ERROR, >> >> sysdate HORA_OCORR, >> >> sys_context('USERENV','IP_ADDRESS') IP_ADDRESS, >> >> sys_context('USERENV','HOST') HOST, >> >> sys_context('USERENV','TERMINAL') TERMINAL, >> >> sys_context('USERENV','OS_USER') OS_USER, >> >> sys_context('USERENV','NETWORK_PROTOCOL') NETWORK_PROTOCOL >> >> from dual >> >> where 1=2; >> >> >> >> create or replace trigger tr_falha_logon_tt >> >> AFTER SERVERERROR ON DATABASE >> >> declare >> >> BEGIN >> >> IF IS_SERVERERROR(1017) THEN >> >> insert into log_falha_logon_tt >> >> ( >> >> SESSION_USER, >> >> AUTHENTICATION_TYPE, >> >> DATABASE_NAME, >> >> INSTANCE_NUM, >> >> SERVER_ERROR, >> >> HORA_OCORR, >> >> IP_ADDRESS, >> >> HOST, >> >> TERMINAL, >> >> OS_USER, >> >> NETWORK_PROTOCOL >> >> ) >> >> values >> >> ( >> >> --ORA_LOGIN_USER, >> >> sys_context('USERENV','CURRENT_USER'), >> >> --sys_context('USERENV','SESSION_USER'), >> >> --sys_context('USERENV','SESSION_USERID'), >> >> sys_context('USERENV','AUTHENTICATION_TYPE'), >> >> ORA_DATABASE_NAME, >> >> ORA_INSTANCE_NUM, >> >> ORA_SERVER_ERROR(1), >> >> sysdate, >> >> sys_context('USERENV','IP_ADDRESS'), >> >> sys_context('USERENV','HOST'), >> >> sys_context('USERENV','TERMINAL'), >> >> sys_context('USERENV','OS_USER'), >> >> sys_context('USERENV','NETWORK_PROTOCOL') >> >> ); >> >> END IF; >> >> END; >> >> / >> >> >> >> connect abc123/abc123 >> >> connect / as sysdba >> >> >> >> set linesize 999 pagesize 1000 >> >> column SESSION_USER format a15 >> >> column SESSION_USERID format a15 >> >> column AUTHENTICATION_TYPE format a15 >> >> column DATABASE_NAME format a15 >> >> column INSTANCE_NUM format 999 >> >> column SERVER_ERROR format 999999 >> >> column IP_ADDRESS format a15 >> >> column HOST format a35 >> >> column TERMINAL format a15 >> >> column OS_USER format a15 >> >> column NETWORK_PROTOCOL format a15 >> >> select * from log_falha_logon_tt order by hora_ocorr; >> >> >> >> >> >> On Nov 29, 2011, at 15:43 , Marcos de Moura Gonçalves wrote: >> >> >> >>> Engraçado cara, eu fiz exatamente isso e trouxe o usuário da >> conexão... >> >>> Talvez seja porquê a minha trigger está no usuário SYS. Experimenta >> >> criá-la >> >>> para o usuário SYS. >> >>> >> >>> Em 29 de novembro de 2011 15:40, JLSilva <[email protected]> >> >> escreveu: >> >>> >> >>>> ** >> >> >> >>>> >> >>>> >> >>>> Marcos, é por aí, mas o sys_context('USERENV','CURRENT_USER') >> retornou o >> >>>> usuário proprietário da trigger. >> >>>> Precisaria de uma função que retornasse o usuário informado no login. >> >>>> Valeu! >> >>>> >> >>>> >> >>>> On Nov 29, 2011, at 15:33 , Marcos de Moura Gonçalves wrote: >> >>>> >> >>>>> Boa tarde JLSilva, >> >>>>> >> >>>>> Experimenta SYS_CONTEXT ('USERENV', 'CURRENT_USER'). >> >>>>> >> >>>>> []s >> >>>>> >> >>>>> Marcos >> >>>>> >> >>>>> Em 29 de novembro de 2011 13:47, JLSilva <[email protected]> >> >>>> escreveu: >> >>>>> >> >>>>>> ** >> >>>> >> >>>>>> >> >>>>>> >> >>>>>> Pessoal, alguém teria uma trigger que consiga registrar o nome do >> >>>> usuário >> >>>>>> quando ocorre falha no login? >> >>>>>> As funções ora_login_user e sys_context('USERENV','SESSION_USER') >> não >> >>>>>> registram nenhum valor quando ocorre erro de login (trigger "AFTER >> >>>>>> SERVERERROR ON DATABASE"). >> >>>>>> Consegui registrar todas as demais informações (osuser, machine, >> >>>>>> ipaddress), exceto o nome do usuário. >> >>>>>> Obrigado. >> >>>>>> >> >>>>>> Oracle11gR2 11.2.0.2.0 Standard Edition. >> >>>>>> >> >>>>>> >> >>>>> >> >>>>> >> >>>>> [As partes desta mensagem que não continham texto foram removidas] >> >>>>> >> >>>>> >> >>>>> >> >>>>> ------------------------------------ >> >>>>> >> >>>>> ---------------------------------------------------------- >> >>>>>> Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de >> >>>> inteira responsabilidade de seus remetentes. >> >>>>> Acesse: http://www.mail-archive.com/[email protected]/ >> >>>>> ---------------------------------------------------------- >> >>>>>> Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » >> >>>> Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO >> >> ESPAÇO! >> >>>> VISITE: http://www.oraclebr.com.br/ >> >>>>> ---------------------------------------------------------- Links do >> >>>> Yahoo! Grupos >> >>>>> >> >>>>> >> >>>> >> >>>> >> >>>> >> >>> >> >>> >> >>> [As partes desta mensagem que não continham texto foram removidas] >> >>> >> >>> >> >>> >> >>> ------------------------------------ >> >>> >> >>> ---------------------------------------------------------- >> >>>> Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de >> >> inteira responsabilidade de seus remetentes. >> >>> Acesse: http://www.mail-archive.com/[email protected]/ >> >>> ---------------------------------------------------------- >> >>>> Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » >> >> Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO >> ESPAÇO! >> >> VISITE: http://www.oraclebr.com.br/ >> >>> ---------------------------------------------------------- Links do >> >> Yahoo! Grupos >> >>> >> >>> >> >> >> >> >> >> >> > >> > >> > [As partes desta mensagem que não continham texto foram removidas] >> > >> > >> > >> > ------------------------------------ >> > >> > ---------------------------------------------------------- >> >> Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de >> inteira responsabilidade de seus remetentes. >> > Acesse: http://www.mail-archive.com/[email protected]/ >> > ---------------------------------------------------------- >> >> Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » >> Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! >> VISITE: http://www.oraclebr.com.br/ >> > ---------------------------------------------------------- Links do >> Yahoo! Grupos >> > >> > >> >> >> > > [As partes desta mensagem que não continham texto foram removidas] ------------------------------------ -------------------------------------------------------------------------------------------------------------------------- >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira >responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/[email protected]/ -------------------------------------------------------------------------------------------------------------------------- >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » >Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: >http://www.oraclebr.com.br/ ------------------------------------------------------------------------------------------------------------------------ Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [email protected] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
