Mais uma pergunta: o usuário abc123 existe? A situação que eu logava era pq queria saber quem estava bloqueando o usuário da aplicação o tempo todo por excesso de tentativas de login com senha errada. No meu caso, o usuário sempre existia, só a senha era errada. Não sei o que acontece qdo tenta logar com usuário que não existe no banco...
Em 29 de novembro de 2011 16:29, Marcos de Moura Gonçalves < mgmar...@gmail.com> escreveu: > 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 < > mgmar...@gmail.com> 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 <jljlsi...@yahoo.com.br>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 <jljlsi...@yahoo.com.br> >>> 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 <jljlsi...@yahoo.com.br> >>> >> 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 <jljlsi...@yahoo.com.br> >>> >>>> 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/oracle_br@yahoogrupos.com.br/ >>> >>>>> ---------------------------------------------------------- >>> >>>>>> 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/oracle_br@yahoogrupos.com.br/ >>> >>> ---------------------------------------------------------- >>> >>>> 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/oracle_br@yahoogrupos.com.br/ >>> > ---------------------------------------------------------- >>> >> 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/oracle_br@yahoogrupos.com.br/ -------------------------------------------------------------------------------------------------------------------------- >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: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html