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 :

Session bloquée : où est l'ordre SQL bloquant? [11gR2]


Sujet :

Administration Oracle

  1. #1
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    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 : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut Session bloquée : où est l'ordre SQL bloquant?
    Bonjour,

    J'ai une session qui est bloquée par une autre.
    L'ordre SQL ci-dessous me ramène les infos dont j'ai besoin SAUF l'ordre SQL qui bloque ma session.

    J'ai cherché dans V$SQL mais il ne s'y trouve pas. Je crois que cette vue a une durée de rétention pour stocker les ordres SQL mais là, au bout d'une heure sur une abse avec quasiment pas d'activité il ne s'y trouve plus!

    Si vous pouviez me dire où chercher, ce serait sympa.


    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
    SELECT 
        SBLOCKED.BLOCKING_SESSION AS "SESSION BLOQUANTE", 
        SBLOCKED.SID AS "SESSION BLOQUEE",
        SBLOCKING.OSUSER AS "OSUSER BLOQUANT", 
        SBLOCKED.OSUSER AS "OSUSER BLOQUE", 
        SBLOCKING.USERNAME AS "USERNAME BLOQUANT",
        SBLOCKED.USERNAME AS "USERNAME BLOQUE",
        SBLOCKING.PROGRAM AS "PROGRAMME BLOQUANT",
        SBLOCKED.PROGRAM AS "PROGRAMME BLOQUE", 
        SBLOCKED.STATE AS "ETAT BLOQUE", 
        SBLOCKED.WAIT_TIME_MICRO / (1000000 *60) AS "BLOCAGE MINUTES", 
        SBLOCKED.ROW_WAIT_OBJ#, 
        OB.OBJECT_NAME AS "OBJET BLOQUE", 
        SBLOCKED.ROW_WAIT_FILE#, 
        SBLOCKED.ROW_WAIT_BLOCK#, 
        SBLOCKED.ROW_WAIT_ROW#, 
        SBLOCKED.SQL_ID AS “SQL ID BLOQUE”,
        SQL_BLOQUE.sql_text AS "ORDRE SQL BLOQUE"
    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;
     
     
    SESSION BLOQUANTE:   255
    SESSION BLOQUEE:     297
    OSUSER BLOQUANT:     X097933
    OSUSER BLOQUE:       X097933
    USERNAME BLOQUANT:   AFPL
    USERNAME BLOQUE:     ACCBATCH
    PROGRAMME BLOQUANT:  toad.exe
    PROGRAMME BLOQUE:    toad.exe
    ETAT BLOQUE:         WAITING
    BLOCAGE MINUTES:     227.179176983333
    ROW_WAIT_OBJ#:       333618
    OBJET BLOQUE:        ZZZ_TEST_DDU
    ROW_WAIT_FILE#:      35
    ROW_WAIT_BLOCK#:     1524406
    ROW_WAIT_ROW#:       0
    SQL_ID BLOQUE:              6mc4jxxmqdxkr
    ORDRE SQL BLOQUE:    update ZZZ set LIB = '02' where ID = 1
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

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

    Informations professionnelles :
    Activité : xxxxxxxxx

    Informations forums :
    Inscription : Avril 2015
    Messages : 392
    Points : 552
    Points
    552
    Par défaut Session bloquée : ou est la requête SQL bloquant?
    Salue,
    Tout d'abord, le code est peut être dans la vue v$sqlarea,
    et voici un script qui utilise cette vue, qui te donnera la
    requête en question :

    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
     
    select  p.username  pu , s.username su, s.status  stat, 
             s.sid  ssid,  s.serial# sser,  substr(p.spid,1,8) spid, 
             substr(sa.sql_text,1,2000) sqltxt
    from  v$process p, v$session s,  v$sqlarea sa 
         where    p.addr = s.paddr and  s.username  is not null and s.sql_address = sa.address(+)  and  
     
    s.sql_hash_value = sa.hash_value(+)
    and s.sid in (select s.sid ifrom
    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 1,2,7  ;
    Bonne chance !

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 49
    Points : 134
    Points
    134
    Par défaut
    Bonjour,
    si le sql text n'est plus ni dans v$sql ni v$sqlarea, essaie de voir cote
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select SQL_ID, SQL_TEXT from sys.wrh$_sqltext where SQL_ID like '&sqlid';
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select SQL_ID, SQL_TEXT from DBA_HIST_SQLTEXT where SQL_ID ='&sql_id';
    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
     
    set lines 10000
    set pages 50000
    set longchunksize 1000
    col MODULE for a15
    col PARSING_SCHEMA_NAME for a20
    col BEGIN_INTERVAL_TIME for a30
    col END_INTERVAL_TIME for a30
    select dhs.SNAP_ID, dhs.BEGIN_INTERVAL_TIME, dhss.SQL_ID , dhss.PLAN_HASH_VALUE, dhss.MODULE, dhss.PARSING_SCHEMA_NAME, dhst.SQL_TEXT
    from DBA_HIST_SNAPSHOT dhs, DBA_HIST_SQLSTAT dhss, DBA_HIST_SQLTEXT dhst
    where dhss.SNAP_ID = dhs.SNAP_ID
    and dhst.SQL_ID = dhss.SQL_ID
    and dhs.BEGIN_INTERVAL_TIME between to_date('12/05/2016 14:00:00' , 'DD/MM/YYYY HH24:MI:SS') and to_date('12/05/2016 17:00:00' , 'DD/MM/YYYY HH24:MI:SS') 
    and dhss.SQL_ID in ('&sql_id')
    order by dhs.BEGIN_INTERVAL_TIME;

    Il y a aussi v$active_session_history (qui elle meme est archivee apres dans dba_hist_active_sess_history ), mais ca requiert le Diagnostic pack :



    Il y a aussi v$active_session_history (qui elle meme est archivee apres dans dba_hist_active_sess_history ), mais ca requiert le Diagnostic pack :

  4. #4
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    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 : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Merci beaucoup pour vos réponses mais pour le moment j'ai fait chou blanc

    J'ai la désagréable impression que seul le dernier ordre SQL de la session est stocké dans V$SQL...
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  5. #5
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Pour la session qui bloque, l'ordre SQL qui détermine le blocage d'une (des) autre(s) session(s) a été exécuté et il ne peut plus être visible dans v$session; de plus des autres ordres sql on pu être exécutés par cette session depuis celui qui a initialisé le verrouillage. Il y a des chances que cette ordre se trouve encore (avec des autres ordres sql) dans v$open_cursor pour la session (sid) qui a initialisé le blocage.

  6. #6
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    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 : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Merci mnitu, je vais voir ça.

    En tout cas je suis sur le cul de voir le nombre de vues où on peut trouver les ordres SQL mais aussi la vitesse à laquelle ils disparaissent; on s'y perd facilement!
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Oracle9i] Sessions et/ou cookies en PL/SQL?
    Par NPortmann dans le forum PL/SQL
    Réponses: 2
    Dernier message: 22/02/2008, 12h00
  2. Réponses: 6
    Dernier message: 22/06/2006, 22h57
  3. Syntaxe tableaux dans ordre SQL INSERT
    Par lio33 dans le forum SQL
    Réponses: 6
    Dernier message: 19/10/2005, 17h07
  4. Optimisation du code des ordres SQL
    Par Titouf dans le forum Langage SQL
    Réponses: 1
    Dernier message: 14/08/2005, 22h08
  5. presentation d'un ordre SQL
    Par waffle200 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/10/2003, 15h17

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