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

Oracle Discussion :

Surveillance de requête


Sujet :

Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Points : 120
    Points
    120
    Par défaut Surveillance de requête
    Bonjour, j'aimerais savoir si l'un d'entre vous connait un petit logiciel qui permettrais de suivre l'avancement des requêtes sous Oracle...
    En effet, nos requêtes sont souvent longues, et il serais intéressant pour nous d'avoir une idée de leur avancement...
    Pour l'instant on utilise des requêtes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    select 
      sa.address, st.sql_text, 
      ses.username||'('||sw.sid||','||serial#||')' users, 
      decode(event, null, '(vide)', event) event
    from 
      v$session ses, v$session_wait sw, v$sqlarea sa, v$sqltext st
    where ses.sid = sw.sid
      and ses.sql_address = sa.address
      and ses.sql_hash_value = sa.hash_value
      and st.address = ses.sql_address
      and ses.status = 'ACTIVE'
      and type <> 'BACKGROUND'
    order by users, st.address, st.piece
    également celles ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select distinct
      to_char(s.sid, '99999') sid, to_char(s.serial#, '99999') "serial#",
      sl.sofar, sl.totalwork, sl.start_time, sl.current_time, msg
    from v$session s, v$session_longops sl
    where s.sid = sl.sid
      and s.serial# = sl.serial#
      and type <> 'BACKGROUND'
      and status = 'ACTIVE'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select distinct
      to_char(s.sid, '99999') sid, to_char(s.serial#, '99999') "serial#", spid pid, s.status, 
      decode(s.lockwait, null, '(vide)', s.lockwait) lockwait,
      s.username, s.osuser, s.machine, 
      decode(s.program, null, '(vide)', s.program) program
    from v$session s, v$process p
    where s.paddr = p.addr 
      and type <> 'BACKGROUND'
    Mais ca donne un résultat vraiment approximatif...donc si quelqu'un connais une meilleure méthode, je suis preneur...

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    La premiére requête est pas mal , mais si tu veux un rapport détaille , une trace de session et un formatage TKPROF ( option waits=y ) te donnera une idée sur l'eventuelle optimisation

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    dans OEM dans la liste des sessions tu vois la requête en cours en double-cliquant dessus

    Sinon, rien de tel qu'une trace

  4. #4
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Vous n'aurez une estimation de leur avancement qu'à partir du moment où Oracle aura décidé que cette requête mérite de passer en LONG_OPS !

    Sinon, vous ne saurez simplement qu'elle est en cours d'exécution.

    Par contre, une fois en LONG_OPS, vous verrez dans OEM ou le studio, les actions en cours (Sort/...) ainsi que le nombre de blocs traités et restant, et une estimation du temps nécessaire.

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    ce qui est pas mal lors du rebuild des indexes par exemple

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Points : 120
    Points
    120
    Par défaut
    Merci pour vos réponse a tous...je vais regarder ca...

Discussions similaires

  1. surveillance des requêtes longues
    Par moi26 dans le forum SQL
    Réponses: 7
    Dernier message: 10/08/2010, 10h03
  2. Réponses: 0
    Dernier message: 30/12/2008, 23h58
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 19h38
  4. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 16h26

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