Re: [oracle_br] Trigger para registrar tentativa de login

2011-11-29 Por tôpico Marcos de Moura Gonçalves
O ORA_LOGIN_USER retorna o login do usuário para outros erros, que não
erros de login... Acontece que no erro de login, na prática, o cliente não
fez login, por isso o ORA_LOGIN_USER não retorna nada... Só por
curiosidade, se vc tentar logar com um usuário que existe e tem grant de
create session, mas coloca a senha errada, o CURRENT_USER não traz o nome
do usuário?

Em 29 de novembro de 2011 16:49, JLSilva  escreveu:

> **
>
>
> Marcos, fiz os testes desconectando e tentando conectar diretamente com um
> usuário que não existe ou que não tenha permissão de create session.
> Sua trigger funciona da mesma forma que a minha: o SYS_CONTEXT ('USERENV',
> 'CURRENT_USER') retorna o usuário SYS e as demais funções para pegar o nome
> do usuário do login retornam nulo.
> O que mais me incomoda é que a documentação diz que o ORA_LOGIN_USER
> deveria conter valor no evento SERVERERROR.
> E até tem valor, exceto quando é um erro de conexão ao banco de dados.
> Sua trigger tem uma evolução: ela registra a mensagem completa de erro
> através da função DBMS_UTILITY.format_error_stack.
> Desta forma, se o erro for, por exemplo, ORA-01045, aparece o nome do
> usuário aqui:
> ORA-01045: user JLSILVA lacks CREATE SESSION privilege; logon denied
> Mas, no caso do usuário inexistente, não é mostrado o nome do usuário que
> tentou a conexão. A mensagem fica assim:
>
> ORA-01017: invalid username/password; logon denied
> E era justamente esta a informaçào que mais me interessaria! rsrs..
> Tamo quase chegando lá..
>
>
> On Nov 29, 2011, at 16:32 , Marcos de Moura Gonçalves wrote:
>
> > 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  >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 t

Re: [oracle_br] Trigger para registrar tentativa de login

2011-11-29 Por tôpico Marcos de Moura Gonçalves
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  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 
> 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 pages

Re: [oracle_br] Trigger para registrar tentativa de login

2011-11-29 Por tôpico Marcos de Moura Gonçalves
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 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'),
>>> s

Re: [oracle_br] Trigger para registrar tentativa de login

2011-11-29 Por tôpico JLSilva
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  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 99
>> column IP_ADDRESS format a15
>> column HOST format a35
>> c

Re: [oracle_br] Trigger para registrar tentativa de login

2011-11-29 Por tôpico Marcos de Moura Gonçalves
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 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 99
>> column IP_ADDRESS format a15
>> column HOST format a35
>> column TERMINAL format a15
>> colum

Re: [oracle_br] Trigger para registrar tentativa de login

2011-11-29 Por tôpico Marcos de Moura Gonçalves
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  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 99
> 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. Experime

Re: [oracle_br] Trigger para registrar tentativa de login

2011-11-29 Por tôpico JLSilva
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_NAMEDATABASE_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_USERformat a15
column SESSION_USERID  format a15
column AUTHENTICATION_TYPE format a15
column DATABASE_NAME   format a15
column INSTANCE_NUMformat 999
column SERVER_ERRORformat 99
column IP_ADDRESS  format a15
column HOSTformat a35
column TERMINALformat a15
column OS_USER format a15
column NETWORK_PROTOCOLformat 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  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',

Re: [oracle_br] Trigger para registrar tentativa de login

2011-11-29 Por tôpico Marcos de Moura Gonçalves
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  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 99
> 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 
> 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 
> >> 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 rem

Re: [oracle_br] Trigger para registrar tentativa de login

2011-11-29 Por tôpico JLSilva
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_NAMEDATABASE_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 99
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  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 
>> 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/ 
> --
>> Apost

Re: [oracle_br] Trigger para registrar tentativa de login

2011-11-29 Por tôpico Marcos de Moura Gonçalves
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  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 
> 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

<*> 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




Re: [oracle_br] Trigger para registrar tentativa de login

2011-11-29 Por tôpico Marcos de Moura Gonçalves
Boa tarde JLSilva,

Experimenta SYS_CONTEXT ('USERENV', 'CURRENT_USER').

[]s

Marcos

Em 29 de novembro de 2011 13:47, JLSilva  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

<*> 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




Re: [oracle_br] Trigger para registrar tentativa de login

2011-11-29 Por tôpico JLSilva
Capin, obrigado pela resposta, mas a ideia é outra.

Imagine que:
1. um usuário tente conectar muitas vezes com senha incorreta: quero registrar 
isto (osuser, username, máquina etc.).
2. um usuário inexistente tenta conectar no banco: quero registrar isto 
(osuser, username - mesmo sendo inexistente, máquina etc.).

A trigger desse link nào serve para o meu objetivo.

Para entender melhor: preciso fazer algo semelhante à auditoria do enterprise 
edition (audit session whenever not successful), mas no Oracle Standard Edition.

Valeu.

On Nov 29, 2011, at 14:20 , Fernando Franquini 'capin' wrote:

> Aqui tem um exemplo de alterar sessao com a trigger de logon.
> 
> http://franquini.wordpress.com/2011/07/19/trigger-de-logon/
> 
> Somente modificar para anteder a sua necessidade.
> 
> Att,
> capin
> 
> 2011/11/29 JLSilva 
> 
>> 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.
>> 
>> 
>> 
>> 
>> --
>>> 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
>> 
>> 
>> 
> 
> 
> -- 
> Fernando Franquini - Capin
> Bacharel em Ciencias da Computacao - UFSC
> Analista de Sistemas e de Banco de Dados / DBA
> Contatos: fernando.franqu...@gmail.com / 48.9902.4047
> Florianópolis - SC - Brasil
> http://franquini.wordpress.com/
> 
> http://br.linkedin.com/in/capin
> 
> 
> [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
> 
>