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 :

Changement de profil des requêtes SQL


Sujet :

Oracle

  1. #1
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut Changement de profil des requêtes SQL
    Bonjour a tous,

    /!\ oracle 11g sous linux

    J'ai monté un repository AWR ou je place les DMP des diferentes bases de notre system d'information.
    Donc j'ai tous les awr de 15 db.

    je voudrais faire une requête qui detecte les changements apres une release. Par exemple, lundi 22 septembre dans mon code y'a 200 sql_id, et ces 200 sql_id ont un plan:hash_value x
    Demain on fait une release, pleins de changements dans le code... Je voudrais pouvoir faire une sql qui detecte s'il y a des sql_id nouveau.. et si ceux qui existaient avant ont subi un changement de plan_hash_value.

    J'ai fait cette requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select snap.end_interval_time,stat.sql_id,stat.PLAN_HASH_VALUE
    from  dba_hist_sqlstat stat
    inner join DBA_HIST_SNAPSHOT snap on snap.dbid=stat.dbid
    where stat.dbid=3765810940 
    and sql_id='bv1dqn6ug91u5';
    Ça me donne ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    END_INTERVAL_TIME              SQL_ID        PLAN_HASH_VALUE
    ------------------------------ ------------- ---------------
    19-SEP-14 01.15.04.283 AM      bv1dqn6ug91u5      2200565844
    18-SEP-14 10.45.32.554 PM      bv1dqn6ug91u5      2200565844
    18-SEP-14 08.00.55.730 PM      bv1dqn6ug91u5      2200565844
    18-SEP-14 11.45.45.608 PM      bv1dqn6ug91u5      2200565844
    18-SEP-14 07.15.45.817 PM      bv1dqn6ug91u5      2200565844
    18-SEP-14 07.00.42.033 PM      bv1dqn6ug91u5      2200565844
    18-SEP-14 06.00.27.229 PM      bv1dqn6ug91u5      2200565844
    Donc c'est pas mal, mais je voudrais avoir seulement les lignes ou il y a un changement par rapport a la ligne d'avant ; comme ceci par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    END_INTERVAL_TIME              SQL_ID        PLAN_HASH_VALUE
    ------------------------------ ------------- ---------------
    19-SEP-14 01.15.04.283 AM      bv1dqn6ug91u5      2200565846
    18-SEP-14 10.45.32.554 PM      bv1dqn6ug91u5      2200565845
    18-SEP-14 08.00.55.730 PM      bv1dqn6ug91u5      2200565844
    17-SEP-14 11.45.45.608 PM      bv1dqn6ug91u5      2200565841
    Quelqu'un saurais comment grouper ça?
    D'avance merci

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Comme ceci :

    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
     
    WITH CTE AS (
        SELECT 
            snap.end_interval_time,
            stat.sql_id,
            stat.PLAN_HASH_VALUE,
            LAG(stat.PLAN_HASH_VALUE) OVER(PARTITION BY stat.SQL_ID ORDER BY snap.END_INTERVAL_TIME) AS PlanPrecedent
        FROM  dba_hist_sqlstat stat
        INNER JOIN DBA_HIST_SNAPSHOT snap ON snap.dbid=stat.dbid
        WHERE stat.dbid=3765810940
    )
    SELECT 
            snap.end_interval_time,
            stat.sql_id,
            stat.PLAN_HASH_VALUE
    FROM CTE
    WHERE PlanPrecedent IS NULL
    OR PlanPrecedent <> PLAN_HASH_VALUE

  3. #3
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Mmmm
    non ça ne donne pas le resultat escompté. Regarde

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    END_INTERVAL_TIME              SQL_ID        PLAN_HASH_VALUE
    ------------------------------ ------------- ---------------
    22-SEP-14 03.45.48.769 AM      gx4mv66pvj3xz               0
    22-SEP-14 03.45.48.769 AM      gx4mv66pvj3xz      3886069984
    22-SEP-14 03.45.48.769 AM      gx4mv66pvj3xz               0
    22-SEP-14 03.45.48.769 AM      gx4mv66pvj3xz      3886069984
    22-SEP-14 03.45.48.769 AM      gx4mv66pvj3xz               0
    22-SEP-14 03.45.48.769 AM      gx4mv66pvj3xz      3886069984

    J'ai essayé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select max(snap.end_interval_time), stat.sql_id, stat.PLAN_HASH_VALUE
    from dba_hist_sqlstat stat
    inner join DBA_HIST_SNAPSHOT snap on snap.dbid=stat.dbid
    where to_char(begin_interval_time,'DD-Mon-YYYY')> '10-Sep-2014'
    and to_char(end_interval_time,'DD-Mon-YYYY')< '23-Sep-201'
    and stat.dbid=3765810940
    and stat.sql_id='gx4mv66pvj3xz'
    group by stat.sql_id,stat.PLAN_HASH_VALUE;
    et le resultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MAX(SNAP.END_INTERVAL_TIME)                                                 SQL_ID        PLAN_HASH_VALUE
    --------------------------------------------------------------------------- ------------- ---------------
    22-SEP-14 05.45.12.973 AM                                                   gx4mv66pvj3xz      3886069984
    22-SEP-14 05.45.12.973 AM                                                   gx4mv66pvj3xz               0
    Je crois que c'est ça.. Je vais verifier.

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

Discussions similaires

  1. Valeur des formulaire réutilisées dans des requètes SQL.
    Par cotmar dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 09/05/2006, 11h16
  2. Fabriquer des requêtes sql à partir d'un document xml
    Par ktel dans le forum XQUERY/SGBD
    Réponses: 4
    Dernier message: 18/10/2005, 17h45
  3. [MFC] comment écrire des requêtes SQL
    Par kitsune dans le forum MFC
    Réponses: 9
    Dernier message: 27/09/2005, 16h23
  4. Journal des requêtes SQL effectuées
    Par Kcirtap dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 18/07/2005, 10h58
  5. Recherche ibrairie pour éxécuter des requêtes SQL via C++
    Par daemon dans le forum Choisir un environnement de développement
    Réponses: 5
    Dernier message: 14/06/2004, 11h28

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