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 :

Analyse de Lock conflicts


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 18
    Par défaut Analyse de Lock conflicts
    Bonjour,

    suite à une alerte de "Lock conflicts" de supervision (sans détail supplémentaire) sur une BDD Oracle 10, j'analyse et le lock n'est plus effectif maintenant, cependant je ne trouve rien dans mes logs d'alert.log + traces.
    Je cherche soit à voir l'historique détaillé du lock conflicts qui s'est produit ou bien de démarrer un audit sur cette erreur pour pouvoir mieux analyser d'où ça vient si ça se reproduit.
    Mes recherches sur le net n'ont pas été trop fructueuse.
    J'ai testé le script utllockt.sql sans succès, pas de retour.

    J'ai les statpack à disposition où le TOP 5 time Event au moment du lock conflict me remonte de la contention sans trop savoir si c'est en lien :

    Top 5 Timed Events Avg %Total
    ~~~~~~~~~~~~~~~~~~ wait Call
    Event Waits Time (s) (ms) Time
    ----------------------------------------- ------------ ----------- ------ ------
    enq: TM - contention 3,952 11,467 2902 86.9
    db file scattered read 27,633 848 31 6.4
    direct path read temp 44,552 271 6 2.0
    CPU time 195 1.5
    log file parallel write 4,765 117 25 .9
    -------------------------------------------------------------
    ^LHost CPU (CPUs: 16)
    ~~~~~~~~ Load Average
    Avg
    %Time Total Wait wait Waits
    Event Waits -outs Time (s) (ms) /txn
    --------------------------------- ------------ ------ ---------- ------ --------
    enq: TM - contention 3,952 98 11,467 2902 4.9
    db file scattered read 27,633 0 848 31 34.0
    direct path read temp 44,552 0 271 6 54.9
    log file parallel write 4,765 0 117 25 5.9
    db file sequential read 9,145 0 111 12 11.3
    log file sequential read 2,511 0 96 38 3.1
    control file sequential read 13,242 0 37 3 16.3
    direct path write temp 5,338 0 18 3 6.6
    control file parallel write 1,495 0 16 11 1.8
    row cache lock 8 38 9 1099 0.0
    log file sync 856 1 8 9 1.1
    log file switch completion 28 0 2 74 0.0
    J'ai vu notamment ce sujet ici pour tracer l'event 10704 mais je ne sais pas si ça correspond bien à mon cas :
    https://blog.developpez.com/pachot/event-10704/

    Merci de votre aide.
    Fred

  2. #2
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Je ne vais pas pouvoir beaucoup t'aider mais, perso, je ne passerai pas trop de temps sur la piste de l'évènement 10704. Lire ces traces est compliqué, avoir un fichier bien formaté pas toujours simple (utiliser tkprof pour cela), quant aux dumps, ils sont illisibles sauf aux spécialistes comme Franck Pachot.

    Je ne connais pas l'outil dont tu parles, "BMC PATROL for Oracle Database Monitoring 9.5" mais il est étonnant qu'un outil tiers ne donne pas facilement l'info que tu cherches.

    Si jamais on t'alerte que le problème de lock est encore effectif, essaye de lancer la requête suivante avant que le lock ne disparaisse:
    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
    SELECT
                        SBLOCKED.BLOCKING_SESSION AS "SESSION BLOQUANTE",
                        SBLOCKED.SID AS "SESSION BLOCKED",
                        SBLOCKING.OSUSER AS "OSUSER BLOQUANT",
                        SBLOCKED.OSUSER AS "OSUSER BLOCKED",
                        SBLOCKING.USERNAME AS "USERNAME BLOQUANT",
                        SBLOCKED.USERNAME AS "USERNAME BLOCKED",
                        SBLOCKING.PROGRAM AS "PROGRAMME BLOQUANT",
                        SBLOCKED.PROGRAM AS "PROGRAMME BLOCKED",
                        SBLOCKED.STATE AS "ETAT BLOCKED",
                        SBLOCKED.WAIT_TIME_MICRO / (1000000 *60) AS "BLOCAGE MINUTES",
                        SBLOCKED.ROW_WAIT_OBJ#,
                        OB.OBJECT_NAME AS "OBJET BLOCKED",
                        SBLOCKED.ROW_WAIT_FILE#,
                        SBLOCKED.ROW_WAIT_BLOCK#,
                        SBLOCKED.ROW_WAIT_ROW# AS "NUMERO ENREGISTREMENT BLOCKED",
                        SBLOCKED.SQL_ID AS "SQL ID BLOCKED",
                        SQL_BLOQUE.sql_text AS "ORDRE SQL BLOCKED"
              FROM
                        V$SESSION SBLOCKED,
                        V$SESSION SBLOCKING,
                        V$SQL SQL_BLOQUE,
                        DBA_OBJECTS OB
              WHERE
                        SBLOCKED.BLOCKING_SESSION = SBLOCKING.SID AND
                        SBLOCKED.SQL_ID = SQL_BLOQUE.SQL_ID AND
                        SBLOCKED.ROW_WAIT_OBJ# = OB.OBJECT_ID AND
                        SBLOCKED.STATUS = 'ACTIVE' AND
                        SBLOCKED.BLOCKING_SESSION IS NOT NULL
              ORDER BY 
                        SBLOCKED.BLOCKING_SESSION;
    ROW_WAIT_ROW# : ATTENTION, ce champ de V$SESSION commence à 0 (zéro) et pas à 1, ça signifie que si je locke la ligne 1 (rownum = 1), alors ROW_WAIT_ROW# renvoie 0 et pas 1.

  3. #3
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 18
    Par défaut
    Merci pour ta réponse Ikebukuro, je vais automatisé un script tous les 15 secondes qui lancerai une requête comme la tienne pour voir le lock conflict quand il se produit.

    PS : pour faire fonctionner ta requête sous Oracle 10, j'ai du enlever la colonne WAIT_TIME_MICRO qui n'existe pas dans V$SESSION :
    ERROR at line 11:
    ORA-00904: "SBLOCKED"."WAIT_TIME_MICRO": invalid identifier

  4. #4
    Membre chevronné
    Homme Profil pro
    xxxxxxxxx
    Inscrit en
    Avril 2015
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : xxxxxxxxx

    Informations forums :
    Inscription : Avril 2015
    Messages : 395
    Par défaut Analyse de lock conflicts
    Ce wait event correspondrait-il pas aux clés étrangères NON INDEXEES ??

  5. #5
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005

Discussions similaires

  1. lock conflict on wait transaction
    Par taze1 dans le forum InterBase
    Réponses: 1
    Dernier message: 20/08/2008, 21h15
  2. Lock conflict on no wait transaction
    Par VLDG dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 15/09/2007, 12h15
  3. Analyse d'un dead lock graph
    Par n8ken dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 04/12/2006, 11h29
  4. Réponses: 2
    Dernier message: 10/11/2006, 10h26
  5. lock conflict sur une req select
    Par veronique dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 02/02/2005, 09h12

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