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


Responder a