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!