Oracle “Lock”

Une session Lockée peut provoquer des ralentissements voir même un blocage au niveau de l’application ainsi que des erreurs techniques.

Une session lockée peut être identifiée simplement et supprimée. Il est même possible de connaître les objets Oracle concernés par le blocage.

Voici comment savoir si votre problème est dû à un Lock en base de données et comment le résoudre.

Exemples d’erreurs qui peuvent vous amener à vérifier les Locks en base de données :

 

  1. ORA-02049 : timeout: distributed transaction waiting for lock
    Cause: exceeded INIT.ORA distributed_lock_timeout seconds waiting for lock.
    Action: treat as a deadlock

Voici comment rechercher dans la base de données les sessions lockées et les supprimer :

1° –  Recherches les objets lockés et les sessions concernées
select oracle_username,object_id,session_id from v$locked_object;

 

2° – Avec l’object_id, il est possible de savoir quel objet exact est locké (Ex. le nom de la table)
select object_name from dba_objects where object_id = [résultat du n°1 - object_id];

 

3° – Récupérer l’identifiant de la session à supprimer
select ''' || sid || ',' || serial# || ''' from v$session where sid=[résultat du n°1 - session_id];

 

4° – Avec le compte SYSTEM, supprimer la session
alter system kill session [résultat du n°3];

Laisser un commentaire

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