› Fóruns › Banco de dados Oracle › Limite Logons por “OSUSER” › Limite Logons por “OSUSER”
Opa,
De qualquer forma, você pode bloquear desta maneira, apenas altere o valor pelo usuário do banco da aplicação.
CREATE OR REPLACE TRIGGER LIMITE_LOGON AFTER LOGON ON DATABASE
DECLARE
v_machine varchar2(200);
v_qtde_sess number;
v_msg varchar2(200);
BEGIN
SELECT sys_context('USERENV', 'HOST') into v_machine FROM DUAL;
SELECT COUNT(*) into v_qtde_sess FROM V$SESSION
WHERE machine = v_machine
and username = '';
v_msg := 'Tentativa de conexao recusada. Limite máximo de 1 conexão!';
-- Verifica se o usuário já possui conexão em aberto
IF (v_qtde_sess > 1) THEN
RAISE_APPLICATION_ERROR(-20000,v_msg,true);
END IF;
END;
E outra coisa, o PROFILE vai sim limitar o número de sessões, só que será para o Banco inteiro, logo, se o limite de sessões for 10, um usuário pode conectar com 9 e o outro com 1, triste isso.
Uma idéia também é monitorar o tempo médio de trabalho e começar a varrer as conexões que ficarem muito tempo inativas (como com IDLE_TIME por exemplo).
Enfim, esse tipo de aceso de aplicação é problemático mesmo, boa sorte.
Atenciosamente,
Felipe.