Oracle
 sql >> Base de données >  >> RDS >> Oracle

Mot de passe de base de données expiré et connexions toujours actives

Si l'expiration d'un mot de passe utilisateur se produit au milieu d'une connexion (session) déjà établie, cela ne mettra pas fin à une session utilisateur - la session ne sera pas automatiquement fermée. L'utilisateur pourra continuer et sera invité (SQL*PLUS ou d'autres outils) à changer son mot de passe lors de la première tentative de connexion après l'expiration. C'est le bon comportement. Laissez un utilisateur terminer ce qu'il a déjà commencé. Si vous parvenez à fermer une connexion en tuant une session utilisateur juste après l'expiration, vous ne le ferez probablement pas proprement et le travail de l'utilisateur sera perdu.

Modifier

Tout d'abord, définissons session et connexion. La session est une entité logique et la connexion est une entité physique. Et une connexion peut avoir de 0 à n sessions établies dessus (vous pouvez la tester en utilisant sql*plus CLI et les informations de v$process voir). Ainsi, l'expiration du mot de passe penche davantage vers la session utilisateur que vers la connexion et lorsqu'un utilisateur se déconnecte, sa session cesse d'exister, mais la connexion peut toujours être établie et fermée lorsqu'une application cliente est fermée.

Oui c'est possible. si vous êtes absolument sûr qu'un utilisateur ou une application a fait son travail et a simplement oublié de fermer une session, vous pouvez utiliser alter system kill session <<SID>>, <<Serial_Number>> tuer (vous devez avoir le alter system privilege ) la ou les sessions.

Vous pouvez créer un profil avec IDLE_TIME option spécifiée.

create profile <<Profile_name>> limit idle_time <<num_of_minutes>>

et attribuez-le à un utilisateur. Lorsqu'une durée d'inactivité de session - durée pendant laquelle une session n'effectue aucun appel SQL dépasse <<num_of_minutes>> Oracle annulera la transaction en cours et mettra fin à cette session.

Vous pouvez également configurer la fin d'une connexion qui n'est plus utilisée en définissant SQLNET.EXPIRE_TIME paramètre , en minutes, dans sqlnet.ora dossier.