JBoss: Application server baixa, mas as conexões continuam ativas no Oracle

Contribuição Marcos Esplugues

A conexão de fato não existirá mais desde que o application server esteja desligado; quem estaria ligado então? Só faltaria desligar a máquina e a conexão continuar… onde estará o problema.

Realmente não tem nada a ver com a aplicação. O Oracle mantém as sessões porque ele não sabe que o client caiu. Há um parâmetro que pode  ser configurado no arquivo sqlnet.ora que faz com que o Oracle, de tempos em tempos, verifique se o cliente está vivo. É o sqlnet_expire_time, configurado em segundos. Um valor muto baixo pode causar excesso de tráfego de rede. Um valor muito alto pode não ter serventia. A Oracle recomenda colocar 10 segundos neste parâmetro:

SQLNET.EXPIRE_TIME=10

É importante que isso não seja passado como uma recomendação ao cliente, mas como uma sugestão ao DBA do ambiente.