Situação/Requisito: | Não é possível saber quando uma sessão está inativa ao utilizar a funcionalidade de Controle de sessões Progress Exemplos de inatividade: - Ao cair a rede de uma sessão client progress, a sessão é mantida no Oracle até que ocorra o seu timeout removendo a sessão.
- Este cenário também ocorre ao cair a energia de uma estação
- Para estes casos, ao tentar abrir uma nova sessão Progress e essa nova sessão chegue no seu limite de sessões configurada para o usuário, não será possível abrir o Datasul Interactive.
- Será informada uma mensagem, que o usuário atingiu o seu limite de sessões conectadas.
A tabela de sessões do Oracle possui alguns campos que podem ser utilizados para verificação de inatividade sendo eles: - SECONDS_IN_WAIT: É o tempo que a sessão está inativa
- STATUS: É o estado da sessão
- STATUS=INACTIVE não quer dizer que seja uma sessão 'perdida', pode ser uma sessão ainda válida que não recebeu nenhuma atividade do client.
- Exemplo o Datasul Interactive aberto porém sem uso.
|
Solução/Implementação: | Foi implementada a ativação de STATUS na sessão do Oracle. - A ativação é feita a cada 2 minutos por meio do Datasul Interactive
- É feito um "count" por usuário na tabela de sessão do Oracle.
O campo SECONDS_IN_WAIT, será utilizado para os casos de queda de Rede/Energia onde a sessão Client Progress é perdida, porém a sessão do banco de dados Oracle é mantida pelo banco até que o mesmo faça o seu timeout. - Nesses casos, o Client Progress não existindo não será mais enviado o sinal de atividade para o oracle (por meio do Datasul Interactive a cada 2 minutos), sendo assim o seu tempo de inatividade (SECONDS_IN_WAIT) será crescente.
- Por padrão definimos que uma sessão Client Progress com 30 minutos (1800 segundos) de inatividade, será desconsiderado na contagem de sessões da verificação do limite de sessões conectadas por usuário.
- Esse tempo padrão de 30 minutos de inatividade pode ser sobrescrito, basta adicionar a propriedade oracle.session.minutes.in.wait no arquivo de propriedades datasul_framework.properties
- Exemplo de configuração para 20 minutos oracle.session.minutes.in.wait=20
- O valor minimo aceito é de 5 minutos
- Caso o administrador do ambiente não queira que seja avaliada a inatividade de sessões, deve ser informado o valor 0 "zero" na configuração oracle.session.minutes.in.wait=0
- Assim não serão mais enviados os sinais de atividade para a sessão do Oracle a cada 2 minutos
- Não será mais feita a verificação do tempo de inatividade de sessão, realizando a contagem de limite de sessões com as sessões de tempo crescente e sem inatividade.
|