Bruno,

    Aqui tem uma pronta, acho que na sua só falta um exception, essa
manda e-mail para vc caso alguém esteja tentando acesso.

CREATE OR REPLACE TRIGGER SYS.user_login_trig
    AFTER LOGON ON DATABASE
DECLARE
    v_username   SYS.gv_$session.username%TYPE;
    v_machine    SYS.gv_$session.machine%TYPE;
    v_command    SYS.gv_$session.command%TYPE;
    v_program    SYS.gv_$session.program%TYPE;
    v_osuser     SYS.gv_$session.osuser%TYPE;
    v_module     SYS.gv_$session.module%TYPE;
    v_hora       NUMBER;
    v_sid        SYS.gv_$session.SID%TYPE;
    v_serial#    SYS.gv_$session.serial#%TYPE;
    v_string          varchar2(1000);
    v_conn            utl_smtp.connection;
    v_crlf            varchar2 (2) := chr (13) || chr (10);
    v_mesg            varchar2 (1000);
    v_instance        SYS.v_$instance.INSTANCE_NAME%TYPE;

BEGIN
    SELECT instance_name into v_instance from SYS.v_$instance;

    SELECT username,
       machine,
       NVL (command, '0'),
       NVL (program, 'OAS10G'),
       TO_NUMBER (TO_CHAR (SYSDATE, 'HH24')),
     NVL (osuser, 'OAS10G'),
       MODULE,
       SID,
       serial#
      INTO v_username,
       v_machine,
       v_command,
       v_program,
       v_hora,
       v_osuser,
       v_module,
       v_sid,
       v_serial#
      FROM SYS.gv_$session
     WHERE audsid = USERENV ('SESSIONID')
       AND audsid != 0
       AND ROWNUM = 1;

   IF  ( v_username = 'USUARIO_SUA_APPS' AND UPPER(v_module) =
'TESTE.EXE') THEN  -- Bloqueia conexão e envia email

      v_conn := utl_smtp.open_connection ('ip_seu_servidor_correio', 25);
                utl_smtp.helo (v_conn, 'ip_seu_servidor_correio');
                utl_smtp.mail (v_conn, '[EMAIL PROTECTED]');
                   utl_smtp.rcpt (v_conn, '[EMAIL PROTECTED]');
                   utl_smtp.rcpt (v_conn, '[EMAIL PROTECTED]');
        v_mesg :=
              'Date: '
           || to_char (sysdate, 'dd Mon yy hh24:mi:ss')
           || v_crlf
           || 'From: Mufalani  <[EMAIL PROTECTED]> '
           || v_crlf
           || 'Subject: Tentativa de acesso a base de dados'
           || v_crlf
           || ''
           || v_crlf
           ||
'***************************************************************************'
           || ''
           || v_crlf
           || ' O usuário "' || v_osuser|| '/'|| v_username|| '" tentou
acesso a base de dados da máquina "'|| v_machine || '"'
           || v_crlf
           || ' com o programa "'|| v_program || '"'
           || v_crlf
           || ' na instancia "'|| v_instance || '"'
           || v_crlf
           || ' Como ele nao deveria ter acesso foi negado!!! '
           || v_crlf
           || ''
           || v_crlf
           || 'Atenciosamente,'
           || v_crlf
           || 'Mufalani'
           || v_crlf
           ||
'***************************************************************************';
        utl_smtp.data (v_conn, v_mesg);
        utl_smtp.quit (v_conn);
  raise_application_error (-20000, 'Não é permitido o acesso usando
este aplicativo!' );
    END IF;
EXCEPTION
    WHEN NO_DATA_FOUND THEN
       NULL;
END;
/

Atenciosamente,

Rodrigo Mufalani
OCP 10g & 11g
[EMAIL PROTECTED]
http://mufalani.blogspot.com



> Mensagem Original:
> Data: 15:06:18 16/09/2008
> De: Bruno Fantin <[EMAIL PROTECTED]>
> Assunto: Re: [oracle_br] Trigger after logon

> Rodrigo.
>
> Obrigado pela atenção, mas no meu caso, não preciso se preocupar com 
> esse mudança no nome do exe.
>
> E mesmo criando a triggre para o SYS não deu certo.
>
> Eu criei um log na triggre, ele entra nela, faz o select certo, 
> retorna o valor correto e entra no if, mas por algum motivo ele não 
> dar o erro e nem corta a conexão.
>
> Valeu.
>
> Bruno Fantin.
>
>   ----- Original Message -----
>   From: Rodrigo Mufalani
>   To: oracle_br@yahoogrupos.com.br
>   Sent: Tuesday, September 16, 2008 3:00 PM
>   Subject: Re: [oracle_br] Trigger after logon
>
>
>
>   Boa tarde Bruno,
>
>   SELECT Upper(Module)
>   INTO Programa
>   FROM V$SESSION
>   WHERE AUDSID = USERENV('sessionid');
>
>   Na boa, program pode ser mudado por um simples rename no EXE, um
>   usuário mais malandrinho faz bypass nisso mole.
>
>   create or replace trigger SYS.TRG_TESTE
>   after logon on database
>   declare
>   Programa varchar2(100);
>   begin
>   SELECT Upper(Program)
>   INTO Programa
>   FROM V$SESSION
>   WHERE AUDSID = USERENV('sessionid');
>
>   if Programa = 'TESTE.EXE' then
>   raise_application_error(-20001, 'Não pode entrar');
>   end if;
>   end;
>   /
>
>   Atenciosamente,
>
>   Rodrigo Mufalani
>   OCP 10g & 11g
>   [EMAIL PROTECTED]
>   http://mufalani.blogspot.com
>
>   > Mensagem Original:
>   > Data: 14:49:13 16/09/2008
>   > De: Bruno Fantin <[EMAIL PROTECTED]>
>   > Assunto: [oracle_br] Trigger after logon
>
>   > Galera.
>   >
>   > Estou tentanto usar uma trigger aftor logon para limitar acessos ao
>   > banco. Mas não esta dando certo. O que estou fazendo de errado?
>   >
>   > create or replace trigger TRG_TESTE
>   > after logon on database
>   > declare
>   > Programa varchar2(100);
>   > begin
>   > SELECT Upper(Program)
>   > INTO Programa
>   > FROM V$SESSION
>   > WHERE AUDSID = USERENV('sessionid');
>   >
>   > if Programa = 'TESTE.EXE' then
>   > raise_application_error(-20001, 'Não pode entrar');
>   > end if;
>   > end;
>   >
>   > [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/
>   > ----------------------------------------------------------
>   >> Funções, Procedures, propostas de emprego - O GRUPO ORACLE_BR TEM
>   >> SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/
>   > ---------------------------------------------------------- Links 
> do Yahoo!
>   > Grupos
>   >
>   >
>   >
>   >
>
>   ----------------------------------------------------------
>   Na Oi Internet você ganha ou ganha. Além de acesso grátis com
>   qualidade, você pode ter contas ilimitadas de email com 1 giga cada uma,
>   suporte grátis e muito mais. Baixe grátis o Discador Oi em
>   http://www.oi.com.br/discador e comece a ganhar.
>
>   Agora, se o seu negócio é voar alto na internet,
>   assine Oi Internet Banda Larga e ganhe o modem grátis. Clique em
>   http://www.oi.com.br/bandalarga e aproveite essa moleza!
>
>
>
>
>
> [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/
> --------------------------------------------------------------------------------------------------------------------------
>> Funções, Procedures, propostas de emprego - O GRUPO ORACLE_BR TEM 
>> SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/
> ------------------------------------------------------------------------------------------------------------------------
>  Links do Yahoo! 
> Grupos
>
>
>
>




--------------------------------------------------------------------------------
Na Oi Internet você ganha ou ganha. Além de acesso grátis com
qualidade, você pode ter contas ilimitadas de email com 1 giga cada uma,
suporte grátis e muito mais. Baixe grátis o Discador Oi em
http://www.oi.com.br/discador e comece a ganhar.

Agora, se o seu negócio é voar alto na internet,
assine Oi Internet Banda Larga e ganhe o modem grátis. Clique em
http://www.oi.com.br/bandalarga e aproveite essa moleza!



Responder a