Pessoal, boa tarde.
Estou precisando bloquear o uso de alguns software’s que fazem conexao com o banco de dados como “TOAD”, “PL-SQL” entre outros e liberar somente alguns usuarios para acesso aos programas.
Criei entao uma trigger de AFTER LOGON ON DATABASE segue abaixo a mesma. O problema e que ela nao dispara no momento da conexao do software.
CREATE OR REPLACE TRIGGER AUDIT_LOGON
AFTER LOGON ON DATABASE
DECLARE
V_SID NUMBER;
V_PROGRAM VARCHAR2(64);
V_MSG VARCHAR2(200);
V_OSUSER VARCHAR2(64);
BEGIN
EXECUTE IMMEDIATE ‘SELECT DISTINCT sid FROM sys.v_$mystat’
INTO V_SID;
EXECUTE IMMEDIATE ‘SELECT program FROM sys.v_$session WHERE sid = :b1’
INTO V_PROGRAM
USING V_SID;
EXECUTE IMMEDIATE ‘SELECT osuser FROM sys.v_$session WHERE sid = :b1’
INTO V_OSUSER
USING V_SID;
V_MSG := ‘Tentativa de conexao com: ‘ || V_PROGRAM || ‘ recusada! ‘
|| ‘Entre em contato com o Administrador!’;
— programas bloqueados
IF (UPPER(V_PROGRAM) LIKE ‘%TOAD%’ OR UPPER(V_PROGRAM) LIKE ‘%PLSQLDEV%’ OR
UPPER(V_PROGRAM) LIKE ‘%MSACCESS%’ OR UPPER(V_PROGRAM) LIKE ‘%EXCEL%’ OR
UPPER(V_PROGRAM) LIKE ‘%PLUS%’) AND
(UPPER(V_OSUSER) NOT IN (‘Filipe’,
‘mgeweb’,
‘ADMINISTRATOR’,
‘ORACLE’)) THEN
RAISE_APPLICATION_ERROR(-20000, V_MSG, TRUE);
END IF;
END;