Se ocorrer uma expiração de senha de usuário no meio de uma conexão (sessão) já estabelecida, ele não encerrará uma sessão de usuário - a sessão não será encerrada automaticamente. O usuário poderá prosseguir e será solicitado (SQL*PLUS ou outras ferramentas) a alterar sua senha na primeira tentativa de login após a expiração. Que o comportamento certo. Deixe um usuário terminar o que ele já começou. Se você conseguir fechar uma conexão matando uma sessão de usuário logo após a expiração, provavelmente não fará isso limpo e o trabalho do usuário será perdido.
Editar
Primeiramente vamos definir a sessão e a conexão. A sessão é uma entidade lógica e a conexão é física. E uma conexão pode ter de 0 a n sessões estabelecidas nela (você pode testá-la usando sql*plus CLI e informações de
v$process
Visão). Assim, a expiração da senha se inclina mais para a sessão do usuário do que para a conexão e quando um usuário efetua logout, sua sessão deixa de existir, mas a conexão ainda pode ser estabelecida e fechada quando um aplicativo cliente é fechado. Sim é possivel. se você tiver certeza absoluta de que um usuário ou um aplicativo fez seu trabalho e simplesmente esqueceu de fechar uma sessão, você pode usar
alter system kill session <<SID>>, <<Serial_Number>>
para matar (você tem que receber alter system privilege
) as sessões). Você pode criar um perfil com
IDLE_TIME
opção especificada. create profile <<Profile_name>> limit idle_time <<num_of_minutes>>
e atribua-o a um usuário. Quando o tempo de inatividade de uma sessão - o tempo em que uma sessão não está fazendo nenhuma chamada SQL excede
<<num_of_minutes>>
O Oracle reverterá a transação atual e encerrará essa sessão. Você também pode configurar o encerramento de uma conexão que não está mais em uso definindo
SQLNET.EXPIRE_TIME
parâmetro
, em minutos, no sqlnet.ora
Arquivo.