http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:453256655431#65270909632298
 explica , mas resumidamente é o seguinte :

a) o limite de IDLE_TIME é aplicado pelo PMON, é ele que marca a sessão pra ser 
removida quando o tempo se esgota - o ponto é que o PMON **** Não **** fica 
constantemente a cada segundo ativo checando isso , então num banco muito 
ativo, que tem muitos outras trabalhos pra executar,  pode demorar pracas pro 
pmon ser ativado

b) o funcionamento é : após a sessão ficar marcada pelo PMON, apenas quando a 
sessão tentar enviar algum trabalho pro database é que aí sim o banco envia a 
msg "vc foi desconectado" , e aí sim, com o usuário Notificado, a sessão pode 
ser removida

c) isso funciona APENAS e TÃO SOMENTE pra sessões aonde NÃO haja um pool de 
conexões, ou mecanismos assemelhados que removem o controle de sessões do banco

d) ululantemente Óbvio, IDLE é a sessão que está conectada , não fazendo nada 
MAS 'saudável', presente, com a máquina cliente lá ativa e bonitinha... CLARO, 
se o usuário desliga a máquina , ou fecha a aplicação no X da janela, ou tem um 
crash, enfim QUALQUER saída não-limpa, via de regra IDLE_TIME não vai funcionar 
pra isso, pra esses casos vc implementa o DCD (dead client detection)

OKDOC ? Sendo assim, SE vc quiser algo diferente desse comportamento, vc cria 
um JOB pra eliminar as sessões que queira, quando e onde queira... E lembro 
também que além de poder especificar IDLE_TIME e DCD, vc ainda tem a chance de 
limitar TEMPO TOTAL DE CONEXÃo num profile, o que muitas vezes é apropriado 
também, nesse processo de controlar usuários... Num banco sem controle, vc se 
arrisca a ter aberrações tal como a que eu tive hoje no trabalho, um snapshot 
too old pra uma query com duzentos e não sei quanto mil como Duration  ... gee, 
it´s too bad ...

==> Meu exemplo de IDLE_TIME num banco 10.2.0.5 EE na minha máquina pessoal, 
sem nenhum job rodando no momento :

SYSTEM@o10gr2:SQL>show parameters limit

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
asm_power_limit                      integer     1
java_soft_sessionspace_limit         integer     0
resource_limit                       boolean     FALSE

SYSTEM@o10gr2:SQL>alter system set resource_limit=TRUE;

Sistema alterado.

==> vc tinha dito que pediu o CREATE abaixo mas claro que a syntax tá 
incompleta, imagino que foi erro de digitação ao postar :

SYSTEM@o10gr2:SQL>CREATE PROFILE TESTE IDLE_TIME 1;
CREATE PROFILE TESTE IDLE_TIME 1
                     *
ERRO na linha 1:
ORA-02000: palavra-chave LIMIT não encontrada

==> criação com a syntax CORRETA :

SYSTEM@o10gr2:SQL>CREATE PROFILE TESTE LIMIT IDLE_TIME 1;

Perfil criado.

SYSTEM@o10gr2:SQL>alter user scott profile TESTE;

Usuário alterado.

==> conecto com o usuário :

SCOTT@o10gr2:SQL>

==> usuário não está fazendo nada , espero e espero, veja que o tempo de IDLE 
já passou :

SYSTEM@o10gr2:SQL>SYSTEM@o10gr2:SQL>select sid, serial#, logon_time, 
last_call_et, SECONDS_IN_WAIT,event
  2 from v$session where username='SCOTT';

 SID SERIAL# LOGON_TIME                LAST_CALL_ET    SECONDS_IN_WAIT EVENT
---- ------- ------------------- ------------------ ------------------ 
-----------------------------
 146    2951 04/04/2011 19:57:07                126                126 SQL*Net 
message from client

=> veja que ainda não foi :

SCOTT@o10gr2:SQL>select 1 from dual;

                 1
------------------
                 1

==> a sessão fez algo e só depois voltou a ficar IDLE, o contador do evento 
zerou e voltou a crescer :

SYSTEM@o10gr2:SQL>/

 SID SERIAL# LOGON_TIME                LAST_CALL_ET    SECONDS_IN_WAIT EVENT
---- ------- ------------------- ------------------ ------------------ 
------------------------------
 146    2951 04/04/2011 19:57:07                  3                  3 SQL*Net 
message from client

SYSTEM@o10gr2:SQL>/

 SID SERIAL# LOGON_TIME                LAST_CALL_ET    SECONDS_IN_WAIT EVENT
---- ------- ------------------- ------------------ ------------------ 
------------------------------
 146    2951 04/04/2011 19:57:07                 72                 72 SQL*Net 
message from client

SYSTEM@o10gr2:SQL>/

 SID SERIAL# LOGON_TIME                LAST_CALL_ET    SECONDS_IN_WAIT EVENT
---- ------- ------------------- ------------------ ------------------ 
------------------------------
 146    2951 04/04/2011 19:57:07                189                189 SQL*Net 
message from client

e espero, e espero, por coisa de 3 minutos, aí quando tento de novo usar a 
sessão depois de uma longa espera :

SCOTT@o10gr2:SQL>l
  1* select 1 from dual
SCOTT@o10gr2:SQL>/
select 1 from dual
*
ERRO na linha 1:
ORA-02396: tempo inativo máximo excedido; conecte-se novamente


==> agora sim, PMON atuou, usuário recebeu a msg, agora sim a sessão se foi :

SYSTEM@o10gr2:SQL>/

não há linhas selecionadas



  []s

   Chiappa

--- Em [email protected], Márcio Ricardo Alves da Silva 
<marcio_cbj@...> escreveu
>
> Boas.
> 
> Estou testando o profile IDLE_TIME e não está funcionando.
> 
> ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;
> 
> CREATE PROFILE TESTE IDLE_TIME 1;
> 
> ALTER USER XXX PROFILE TESTE;
> 
> conectei com o usuário e depois executei um select, após dois minutos a 
> sessão ainda estava ativa.
> 
> usuário com grant de connect e resource.
> 
> Release 10.2.0.5
> 
> Márico.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>


Responder a