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

SQL Oracle Discussion :

verrous sur tables


Sujet :

SQL Oracle

  1. #1
    Membre éclairé Avatar de olivanto
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2005
    Messages
    513
    Détails du profil
    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2005
    Messages : 513
    Par défaut verrous sur tables
    bonjour,

    Voilà, je cherche à créer un état /requête qui me sort les verrous sur des tables (j'ai une application de gestion un peu fantaisiste là dessus !)

    Pour l'instant, je passe par Toad, mais il lui faut pas moins de dix minutes pour arriver à me faire une vue des verrous (pire, avec les verrous bloquants) ! Quand je capte sa requête et que je l'execute, en effet, c'est très long...

    J'ai trouvé deux exemples sur ce forum, mais aucun ne marche...

    Exemples ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT session_id , oracle_username , os_user_name
      FROM V$LOCKED_OBJECT VLO INNER JOIN dba_objects DO ON VLO.object_id = DO.object_id
     WHERE object_name = 'object_name'
       AND owner = 'owner';
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    SELECT   /*+ choose */ 
             bs.username "Blocking User", 
             bs.username "DB User", 
             ws.username "Waiting User", 
             bs.sid "SID", 
             ws.sid "WSID", 
             bs.sql_address "address", 
             bs.sql_hash_value "Sql hash", 
             bs.program "Blocking App", 
             ws.program "Waiting App", 
             bs.machine "Blocking Machine", 
             ws.machine "Waiting Machine", 
             bs.osuser "Blocking OS User", 
             ws.osuser "Waiting OS User", 
             bs.serial# "Serial#", 
             DECODE ( 
                wk.TYPE, 
                'MR', 'Media Recovery', 
                'RT', 'Redo Thread', 
                'UN', 'USER Name', 
                'TX', 'Transaction', 
                'TM', 'DML', 
                'UL', 'PL/SQL USER LOCK', 
                'DX', 'Distributed Xaction', 
                'CF', 'Control FILE', 
                'IS', 'Instance State', 
                'FS', 'FILE SET', 
                'IR', 'Instance Recovery', 
                'ST', 'Disk SPACE Transaction', 
                'TS', 'Temp Segment', 
                'IV', 'Library Cache Invalidation', 
                'LS', 'LOG START OR Switch', 
                'RW', 'ROW Wait', 
                'SQ', 'Sequence Number', 
                'TE', 'Extend TABLE', 
                'TT', 'Temp TABLE', 
                wk.TYPE 
             ) lock_type, 
             DECODE ( 
                hk.lmode, 
                0, 'None', 
                1, 'NULL', 
                2, 'ROW-S (SS)', 
                3, 'ROW-X (SX)', 
                4, 'SHARE', 
                5, 'S/ROW-X (SSX)', 
                6, 'EXCLUSIVE', 
                TO_CHAR (hk.lmode) 
             ) mode_held, 
             DECODE ( 
                wk.request, 
                0, 'None', 
                1, 'NULL', 
                2, 'ROW-S (SS)', 
                3, 'ROW-X (SX)', 
                4, 'SHARE', 
                5, 'S/ROW-X (SSX)', 
                6, 'EXCLUSIVE', 
                TO_CHAR (wk.request) 
             ) mode_requested, 
           object_name , 
             TO_CHAR (hk.id1) lock_id1, 
             TO_CHAR (hk.id2) lock_id2 
    FROM     v$lock hk, v$session bs, v$lock wk, v$session ws ,  V$LOCKED_OBJECT a , 
    dba_objects b 
    WHERE    hk.BLOCK = 1 
    AND      hk.lmode != 0 
    AND      hk.lmode != 1 
    AND      wk.request != 0 
    AND      wk.TYPE(+) = hk.TYPE 
    AND      wk.id1(+) = hk.id1 
    AND      wk.id2(+) = hk.id2 
    AND      hk.sid = bs.sid(+) 
    AND      wk.sid = ws.sid(+) 
    AND      a.object_id=b.object_id 
    AND      hk.sid=a.session_id 
    ORDER BY 1;
    Un spécialiste pourrait me donner qq pistes ?

  2. #2
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Par défaut
    Bonjour

    pour ma part, j'utilise les requetes suivantes, çà tourne sans pbs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select sid, serial#,username, program, terminal from v$session;
    select * from v$lock;
    select * from v$locked_object;
    select * from v$open_cursor where user_name= :V_USER;
    select * from dba_waiters;
    select * from dba_blockers;
    =>en cas de lignes dans dba_waiters faire un
    alter system kill session 'sid, serial#';
    où sid est indiqué dans la colonne WAITING_SESSION de dba_waiters

    Nota : les requetes
    1/ select sid, serial#,username, program, terminal from v$session;
    me permet juste de voir mes sessions actives avant d'étudier mes verrous

    2/ select * from v$open_cursor where user_name= :V_USER;
    me permet de voir les curseurs éventuels pour le user qui me provoque mes locks

    Voici ma maigre participation. Je ne suis guére un spécialiste du domaine.

    @

  3. #3
    Membre éclairé Avatar de olivanto
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2005
    Messages
    513
    Détails du profil
    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2005
    Messages : 513
    Par défaut
    merci merci, pas mal du tout !

    je vais creuser çà, mais c'est un très bon début !

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par PpPool
    =>en cas de lignes dans dba_waiters faire un
    alter system kill session 'sid, serial#';
    où sid est indiqué dans la colonne WAITING_SESSION de dba_waiters
    oui enfin, c'est quand même bon de voir d'abord ce que fais la requête

  5. #5
    Membre éclairé Avatar de olivanto
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2005
    Messages
    513
    Détails du profil
    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2005
    Messages : 513
    Par défaut
    noté !

  6. #6
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Par défaut
    Citation Envoyé par Fred_D
    oui enfin, c'est quand même bon de voir d'abord ce que fais la requête
    salut fred
    tout à fait d'accord
    ce pq j'interroge au préalable V_OPEN_CURSOR, pour identifier ce qui a pu provoquer le lock

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/06/2010, 11h14
  2. Erreur 145 sur table mysql
    Par ramses83 dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/09/2007, 21h09
  3. verrous sur les tables
    Par rv66 dans le forum Paradox
    Réponses: 2
    Dernier message: 04/09/2005, 20h15
  4. [firebird 1.5] Probleme sur tables de grande taille
    Par iguanevif dans le forum Débuter
    Réponses: 2
    Dernier message: 12/08/2004, 13h33
  5. [Sybase] Utilisation indexes sur table Proxy
    Par MashiMaro dans le forum Sybase
    Réponses: 2
    Dernier message: 20/02/2004, 10h20

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