Uso de profiles no Oracle — Limite de Tempo inativo da Sessão

Usando profiles para eliminar sessões que ficam inativas por um longo tempo
consumindo recursos do servidor Oracle.

1). Altere o parâmetro de inicialização RESOURCE_LIMIT para TRUE, vem default FALSE

ALTER SYSTEM SET RESOURCE_LIMIT=TRUE SCOPE=BOTH;

2). Crie um profile com um nome desejado por você

Create profile Meu_profile
limit idle_time 1 — Tempo em Minutos (1 minuto)
;

3). Crie um usuário ou associe um pré-existente

create user teste identified by teste
profile meu_profile;

grant create session to teste;

4. Conecte-se ao Oracle com este usuário

Connect teste/teste@ORCL

SELECT SYSDATE FROM DUAL

SYSDATE
——————–
09-MAR-2009 10:39:43

> /
SELECT SYSDATE FROM DUAL
*
ERRO na linha 1:
ORA-02396: tempo inativo máximo excedido; conecte-se novamente

5). Verifique o que ocorreu na sessão do usuário Teste com outro usuário (SYSTEM)

SQL> select username,status
2 from v$session
3* where username is not null

USERNAME STATUS
—————————— ——–
TESTE SNIPED
SYSMAN ACTIVE
SYSMAN INACTIVE
SYSMAN INACTIVE
SYSMAN INACTIVE
DBSNMP ACTIVE
SYSMAN INACTIVE
DBSNMP INACTIVE
SYSTEM ACTIVE

9 linhas selecionadas.

Neste ponto sua sessão inativa foi morta pelo Oracle. Também podemos controlar diversos outros recursos de CPU e senha como mostrado abaixo:

RESOURCE_PARAMETERS

SESSIONS_PER_USER
Especifica o número de sessões concorrentes por usuário.

CPU_PER_SESSION
Especifica o tempo limite de CPU para uma sessão dada em milissegundos

CPU_PER_CALL
Especifica o tempo limite de CPU para uma chamada (parse, execute, fetch), dado em milissegundo.

CONNECT_TIME
Especifica o tempo limite de uma sessão expressado em Minutos (Mesmo se ela estiver ativa).

IDLE_TIME
Foi o do nosso teste, especifica o tempo limite de inatividade para uma sessão dado em minutos.

LOGICAL_READS_PER_SESSION
Número máximo de blocos lidos em uma sessão, tanto para memória como em disco.

LOGICAL_READS_PER_CALL
Número máximo de blocos lidos em uma sessão, tanto para memória como em disco para um processo SQL (parse, execute, fetch).

PRIVATE_SGA
Especifica a quantidade de espaço que uma sessão pode alocar na shared pool.
Obs.: Esse só se aplica se estiver usando Shared Server.

COMPOSITE_LIMIT
Este é um total de recursos que o Oracle calcula em unidades de serviço que é a soma de CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION e PRIVATE_SGA.

PASSWORD_PARAMETERS

Como os parâmetros de senha normalmente são expressados em dias, podemos usar em Minutos (x/1440) ou em segundos (x/86400).

FAILED_LOGIN_ATTEMPTS
Especifica o número de vezes que uma conta pode tentar logar e não conseguir antes de a mesma ser travada (locked) automaticamente pelo Oracle.

PASSWORD_LIFE_TIME
Especifica o número de dias que a mesma senha pode ser utilizada, em conjunto você também deve configurar um valor para PASSWORD_GRACE_TIME para que a senha expire se não for trocada no tempo exato, pois isso pode causar um erro no sistema deixando o usuário conectando indefinidamente.

PASSWORD_REUSE_TIME e PASSWORD_REUSE_MAX
Eles devem ser usados em conjunto, PASSWORD_REUSE_TIME para especificar o número de dias em que a senha não possa ser reutilizada. PASSWORD_REUSE_MAX para especificar o número de vezes que precisa colocar outras senhas antes de utilizar uma senha já informada anteriormente.

PASSWORD_LOCK_TIME
Especifica o número de dias que conta será bloqueada depois de algumas tentativas erradas (no 10g isso vem default como 10), depois desse período o Oracle desbloqueia a conta novamente.

PASSWORD_GRACE_TIME
Especifica o número em dias para que o usuário possa trocar a senha antes de ela expirar, o Oracle dá uma mensagem para o usuário mas permite o logon.

PASSWORD_VERIFY_FUNCTION
Uma função pl/sql que para controlar os requisitos de senha no seu banco de dados, o oracle já fornece uma com implementação de travas bem comuns as senhas de usuário como mesmo nome, abc e etc. O script para criar a função está em:

@?/rdbms/admin/utlpwdmg.sql

Podemos combinar vários desses recursos, ou utilizar somente os que desejarmos, cabe a cada DBA julgar o que será necessário para cada ambiente.
Os valores permitidos são DEFAULT, UNLIMITED e os configuráveis, sejam em dias ou milissegundos de acordo com o que está escrito acima.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios são marcados com *