Sessions concurrentes ?

Lors de l’exécution de transactions sur une base de données, il est possible qu’un ou plusieurs objets soient bloqués par une session. Ainsi, lorsqu’une autre session voudra accéder à ces mêmes objets, il y aura un blocage de celle-ci (par exemple : Plusieurs mise à jours sont effectués en même temps).

Dans la plupart des cas, il suffit d’effectuer un commit pour résoudre ce problème, ceci aura pour conséquence de libérer le verrou sur la session.
Toutefois, il se peut que certains blocages nécessitent un arrêt de la session. Pour identifier la ou les sessions qui bloquent les traitements, nous pouvons exécuter la requête suivante :

SQL> SELECT l.sid , ' BLOQUE ', s.sid
FROM v$lock l, v$lock s
WHERE l.block =1 AND s.request > 0 AND l.id1 = s.id1 AND l.id2 = s.id2;

Une fois cette requête effectuée, nous pouvons vérifier à quel utilisateur appartient la session qui bloque notre travail.

SQL> SELECT l.SID, l.TYPE, l.ID1, l.ID2, l.CTIME, l.BLOCK, s.username, s.program, s.module
FROM v$lock l
JOIN v$session s ON (l.sid = s.sid)
WHERE l.sid = <SID>;

Remarque :<SID> correspond au numéro retourné par la 1ère requête.

L’administrateur peut maintenant effectuer les opérations nécessaires pour déverrouiller la base de données (par exemple : contacteur l’utilisateur, détruire la session, etc…).

Lien pour marque-pages : Permaliens.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *