IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration Oracle Discussion :

Oracle 10g : Lock sur un objet par session introuvable


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 6
    Par défaut Oracle 10g : Lock sur un objet par session introuvable
    Bonjour,

    nous rencontrons fréquemment des problèmes de lock sur des lignes de table sans pouvoir trouver qui détient le lock.
    A force de chercher, je me suis aperçu qu'en lançant depuis une session un
    select for update sur la ligne bloquée et qu'en parallèle j'exécute le script suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    select     oracle_username || ' (' || s.osuser || ')' username
       ,  s.sid || ',' || s.serial# sess_id
       ,  owner || '.' || object_name object
       ,  object_type
       ,  decode( l.block
          ,       0, 'Not Blocking'
          ,       1, 'Blocking'
          ,       2, 'Global') status
       ,  decode(v.locked_mode
         ,       0, 'None'
         ,       1, 'Null'
         ,       2, 'Row-S (SS)'
         ,       3, 'Row-X (SX)'
         ,       4, 'Share'
         ,       5, 'S/Row-X (SSX)'
         ,       6, 'Exclusive', TO_CHAR(lmode)) mode_held
      from       v$locked_object v
      ,  dba_objects d
      ,  v$lock l
      ,  v$session s
      where      v.object_id = d.object_id
      and        v.object_id = l.id1
      and        v.session_id = s.sid
      order by oracle_username
      ,  session_id
    Je récupère mon SID de session et un SID d'une autre session qui est logiquement la session bloquante. J'ai tenté un alter system kill sur cette session mais le lock est toujours là.
    Si je recherche dans v$process, je n'ai aucune ligne correspondant à son SID, Serial#

    Quelqu'un aurait-il une solution ou ne reste-t'-il que le redémarrage de base dans ce cas là?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Par défaut
    Il faut killer le process de la session après l'avoir killé sous oracle.

    Cordialement,
    Laurent

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 6
    Par défaut
    Merci, mais le problème est que je n'ai aucun process correspondant à cette session sous v$process!

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Par défaut
    Le killer sous ton OS, mais en effet il faut récupérer le num de session avant de le killer sous oracle ... là il faudrait faire l'inverse rechercher la session sous ton os mais il faut être sûr de trouver la bonne, c'est pas gagné !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 6
    Par défaut
    Merci Laurent pour tes suggestions, je dois avouer que je ne me suis pas lancé la dedans...

    En revanche, ce matin, en lançant le session browser de Toad, j'ai vu apparaitre la fameuse session bloquante qui est sur un insert depuis plus d'une journée... Elle apparait dans le sous-onglet session de l'onglet sessions.
    J'ai un identifiant de process 404:416 que je retrouve une ligne plus bas pour une autre session lancée depuis le même poste 30 minutes avant.

    Est-ce qu'il y a moyen de faire quelque chose à partir de ça?

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    La session qui fait un insert depuis plus de 24h doit avoir oublier de faire un commit / rollback.

    Vous pouvez tuer cette session (ça fera un rollback implicite) depuis Toad ou trouver la personne qui lock pour lui demander de faire un commit !

Discussions similaires

  1. lock () sur quel objet?
    Par yridwenn dans le forum C#
    Réponses: 3
    Dernier message: 30/07/2007, 16h34
  2. [Oracle 10g] Question sur les sous-requetes
    Par hotkebab99 dans le forum Oracle
    Réponses: 2
    Dernier message: 27/10/2006, 11h25
  3. LOCK sur des objets
    Par Nick_Holmes dans le forum Oracle
    Réponses: 11
    Dernier message: 01/06/2006, 16h25
  4. [Oracle 9i] Déclencheur sur table objet
    Par Process Linux dans le forum Oracle
    Réponses: 5
    Dernier message: 28/01/2006, 09h53
  5. Install Oracle 10g R2 sur Mandrake 10.1 ORA-12547
    Par jellox dans le forum Installation
    Réponses: 1
    Dernier message: 22/10/2005, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo