Comment vérifier les verrous actuels dans une base de données Oracle

Oracle utilise une fonction de verrouillage pour assurer que les données ne sont pas mis à jour par plus d'une fonction à la fois de maintenir l'intégrité des données. Blocage se produit à plusieurs niveaux, y compris des lignes, des tables et des espaces table. Sur le verrouillage au niveau de l'utilisateur, le "commettre" commande fait des changements permanents et supprime le verrou. Le "rollback" commande inverse les changements avant de relâcher le verrou. Oracle enregistre les informations de verrouillage dans une table système appelé "v $ lock" qui peut être interrogé à l'aide Structured Query Language (SQL).

Instructions

  1. Revoir le "v $ lock" Table Oracle pour les informations de verrouillage. Utilisez le "sélectionner" commander pour voir "sid," "Type," "lmode" et "demande." Sid se tient pour la session numéro d'identification et identifie la session qui détient le verrou.

    sélectionner

    sid,

    Type,

    lmode,

    demande

    de v $ serrure;

  2. Joignez-vous à l'Oracle "v $ session" table à la "v $ lock" table pour déterminer qui est le verrouillage de la base de données. Rejoignez par sid (ID de session) pour trouver le nom d'utilisateur.




    sélectionner

    s.username,

    S.sid,

    l.type,

    l.lmode,

    l.request

    de v $ lock l, v $ session s

    où l.sid = S.sid;

  3. Interrogez la "v $ locked_object" table pour des informations supplémentaires sur ce qui est verrouillée. Joignez-vous à la "dba_objects" table pour le nom et le type. Le nom de l'objet indique ce qui est verrouillé et les colonnes de nom d'utilisateur d'identifier qui a créé la serrure.

    sélectionner




    oracle_username

    os_user_name,

    locked_mode,

    nom_objet,

    object_type

    à partir de

    v $ locked_object lo, font dba_objects

    lo.object_id = do.object_id;

Conseils & Avertissements

  • Avant d'interroger pour les serrures, demander l'accès de l'administrateur de base de données (DBA).
  • Si un verrou ne libère pas dans un délai acceptable, le DBA peut annuler la session et libérer la ressource. Recyclage de la base de données est rarement nécessaire de libérer un verrou.
  • Dans le "$ Lock" table, les valeurs de type comprennent "TM" pour des verrous de table, "TX" pour les verrous de transaction, "M" pour les serrures de récupération des médias et "ST" pour les serrures de l'espace disque.
  • "Lmode" et "demande" sont significatifs lorsque leurs valeurs sont comparées ensemble. Un seul peut être égal à zéro ou un à la fois. La colonne qui ne soit pas égal à zéro ou à un indique le mode de verrouillage. Modes de verrouillage valides sont un pour null (ou pas de blocage), deux pour les parts de ligne (SS), trois pour la ligne exclusive (SX), quatre pour les parts (S), cinq pour la part rangée exclusive (SSX) et six pour exclusif (X ).
  • Annulation d'une session pourrait provoquer des erreurs fatales.
» » » » Comment vérifier les verrous actuels dans une base de données Oracle