Pular para o conteúdo

Fóruns Banco de dados Oracle Limite Logons por “OSUSER” Limite Logons por “OSUSER”

#101483
felipeg
Participante

    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.