Pois é, muito parecida. Eu guardei esse código, mas não trabalho mais no
ambiente onde ela era usada. Onde eu tô agora nem tenho Oracle pra
testar... Mas o resultado que eu obtia, com certeza, era o usuário da
tentativa errada de login, e não SYS...

Em 29 de novembro de 2011 16:31, JLSilva <[email protected]> escreveu:

> **
>
>
> Marcos, realmente muito semelhante sua trigger.
> provavelmente me baseei nos mesmos exemplos.. rsrs..
> mas, seguinte.. o TXT_ORACLE_USER sempre retorna SYS, porque a trigger
> executa no "contexto" do owner dela.
> pelo menos é o que está ocorrendo aqui no banco onde estou testando.
> será q você conseguiu um resultado diferente nessa coluna?
>
>
> On Nov 29, 2011, at 16:12 , Marcos de Moura Gonçalves wrote:
>
> > 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
> >
> >
>
>  
>


[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


Responder a