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 :

Différence de performance Oracle 10 - Oracle 11


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2012
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 56
    Par défaut Différence de performance Oracle 10 - Oracle 11
    Bonjour

    Je viens d'installer un nouveau serveur avec BDD Oracle 11g pour délester un serveur avec Oracle 10G.

    C'est deux serveurs (Virtuels) ont les mêmes spécifications hardware.

    Mon problème et quel e serveur 11 G est moins performant que mon serveur 10G.....en tout cas pour une requete.

    Sur le serveur 10G 12 secondes de Traitement, sur le serveur 11G 1minute et des poussieres......

    Cette requete est construite via un document Webi sur un Univers BO XI R2 et voici a quoi elle ressemble

    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
    78
    79
    80
    81
    SELECT
      VEHICULE.PARC,
      T_AFFECT4.CLIENT,
      T_AFFECT2.FILIALE,
      sum(DONNEE_TX.DISTANCE),
      DONNEE_TX.CONSO_TOT_AVG,
      sum(DONNEE_TX.CONSO_TOTAL),
      DONNEE_TX.DATEJ,
      to_char(DONNEE_TX.DATEJ,'WW'),
      nvl(INDIVIDU.NOM, TR_TRA_PERSON.NM_NAME),
      ETABSECT.LIB,
      SOCIETE.RAIS,
      DONNEE_TX.ID_CONDUCTEUR,
      DONNEE_TX.SPEED_AVG,
       case   when (MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12)<30  then '1- Moins de 30 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 30 and MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 < 40 then '2- De 30 à 39 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 40 and MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 < 50 then '3- De 40 à 49 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 50 then '4- Plus de 50 ans'  end,
      sum(DONNEE_TX.CONSO_IDLE),
      sum(DONNEE_TX.CONSO_COND),
      MARQUE.LIBELLE,
      CATVEHIC.LIBELLE,
      decode(INDIVIDU.SEXE,'F','Femme','Homme'),
      to_char(DONNEE_TX.DATEJ,'YYYYMM'),
      round(MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12,2)
    FROM
      VEHICULE,
      t_AFFECT4,
      t_AFFECT2,
      DONNEE_TX,
      TR_TRA_PERSON,
      INDIVIDU,
      ETABSECT,
      SOCIETE,
      MARQUE,
      CATVEHIC,
      VEHICULE_AFFECTATION,
      INFSAL
    WHERE
      ( VEHICULE_AFFECTATION.ID_VEHICULE=DONNEE_TX.PARCID and VEHICULE_AFFECTATION.DATE_DEBUT<=DONNEE_TX.DATEJ and VEHICULE_AFFECTATION.DATE_FIN>DONNEE_TX.DATEJ  )
      AND  ( VEHICULE_AFFECTATION.ID_CLIENT=T_AFFECT4.ID_AFFECT4  )
      AND  ( VEHICULE_AFFECTATION.ID_FILIALE=T_AFFECT2.ID_AFFECT2  )
      AND  ( DONNEE_TX.PARCID=VEHICULE.VEHICULE_ID  )
      AND  ( DONNEE_TX.ID_CONDUCTEUR=TR_TRA_PERSON.CNR_EXTCODE  )
      AND  ( VEHICULE.COD_CATEGORIE=CATVEHIC.COD_CATEGORIE  )
      AND  ( VEHICULE.MARQUE=MARQUE.COD_MARQUE  )
      AND  ( INFSAL.NOBUL(+)=1 and( DONNEE_TX.id_conducteur=to_char(INFSAL.individu(+)) and  to_number(to_char(DONNEE_TX.datej,'YYYYMM'))= case when to_char(sysdate,'DD')<='09' then to_number(to_char(add_months(to_date(INFSAL.anmois(+),'YYYYMM'),2),'YYYYMM'))  when   to_char(DONNEE_TX.datej,'YYYYMM')=to_char(sysdate,'YYYYMM') then  to_number(to_char(add_months(to_date(INFSAL.anmois(+),'YYYYMM'),1),'YYYYMM'))  else to_number(INFSAL.anmois(+)) end  )  )
      AND  ( to_char(INDIVIDU.INDIVIDU(+))=DONNEE_TX.ID_CONDUCTEUR  )
      AND  ( INFSAL.SOCIETE=ETABSECT.SOCIETE(+) AND INFSAL.ETAB=ETABSECT.ETAB(+) AND INFSAL.SECTION=ETABSECT.SECTION(+)  )
      AND  ( INFSAL.SOCIETE=SOCIETE.SOCIETE(+)  )
      AND  
      (
       (
        SOCIETE.RAIS  =  'GT BRETAGNE'
        OR
        T_AFFECT2.FILIALE  =  'BRETAGNE'
       )
       AND
       DONNEE_TX.CONSO_TOT_AVG  >  0
       AND
       DONNEE_TX.IND_CONF  =  '0'
       AND
       to_char(DONNEE_TX.DATEJ,'YYYYMM')  =  '201209'
      )
    GROUP BY
      VEHICULE.PARC, 
      T_AFFECT4.CLIENT, 
      T_AFFECT2.FILIALE, 
      DONNEE_TX.CONSO_TOT_AVG, 
      DONNEE_TX.DATEJ, 
      to_char(DONNEE_TX.DATEJ,'WW'), 
      nvl(INDIVIDU.NOM, TR_TRA_PERSON.NM_NAME), 
      ETABSECT.LIB, 
      SOCIETE.RAIS, 
      DONNEE_TX.ID_CONDUCTEUR, 
      DONNEE_TX.SPEED_AVG, 
       case   when (MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12)<30  then '1- Moins de 30 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 30 and MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 < 40 then '2- De 30 à 39 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 40 and MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 < 50 then '3- De 40 à 49 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 50 then '4- Plus de 50 ans'  end, 
      MARQUE.LIBELLE, 
      CATVEHIC.LIBELLE, 
      decode(INDIVIDU.SEXE,'F','Femme','Homme'), 
      to_char(DONNEE_TX.DATEJ,'YYYYMM'), 
      round(MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12,2)
    HAVING
      sum(DONNEE_TX.DISTANCE)  >  0
    En cherchant d'ou pouvait provenir le problème j'ai refait la requete à la main en sortant les jointures de mon Where et la miracle 12 secondes pour répondre. Voici la requete, celle ci renvoie les même données.

    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
    select 
       VEHICULE.PARC,
      T_AFFECT4.CLIENT,
      T_AFFECT2.FILIALE,
      sum(DONNEE_TX.DISTANCE),
      DONNEE_TX.CONSO_TOT_AVG,
      sum(DONNEE_TX.CONSO_TOTAL),
      DONNEE_TX.DATEJ,
      to_char(DONNEE_TX.DATEJ,'WW'),
      nvl(INDIVIDU.NOM, TR_TRA_PERSON.NM_NAME),
      ETABSECT.LIB,
      SOCIETE.RAIS,
      DONNEE_TX.ID_CONDUCTEUR,
      DONNEE_TX.SPEED_AVG,
       case   when (MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12)<30  then '1- Moins de 30 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 30 and MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 < 40 then '2- De 30 à 39 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 40 and MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 < 50 then '3- De 40 à 49 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 50 then '4- Plus de 50 ans'  end,
      sum(DONNEE_TX.CONSO_IDLE),
      sum(DONNEE_TX.CONSO_COND),
      MARQUE.LIBELLE,
      CATVEHIC.LIBELLE,
      decode(INDIVIDU.SEXE,'F','Femme','Homme'),
      to_char(DONNEE_TX.DATEJ,'YYYYMM'),
      round(MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12,2)
     from donnee_tx 
        left join infsal on infsal.anmois=to_number(to_char(datej,'YYYYMM')) and to_char(infsal.individu)=donnee_tx.id_conducteur and nobul=1 and anmois='201209'
        left join individu on to_char(individu.individu)=donnee_tx.id_conducteur
        join vehicule_affectation on  VEHICULE_AFFECTATION.ID_VEHICULE=DONNEE_TX.PARCID and VEHICULE_AFFECTATION.DATE_DEBUT<=DONNEE_TX.DATEJ and VEHICULE_AFFECTATION.DATE_FIN>DONNEE_TX.DATEJ
        join T_AFFECT4 on VEHICULE_AFFECTATION.ID_CLIENT=T_AFFECT4.ID_AFFECT4 
        join T_AFFECT2 on VEHICULE_AFFECTATION.ID_FILIALE=T_AFFECT2.ID_AFFECT2
        join vehicule on  DONNEE_TX.PARCID=VEHICULE.VEHICULE_ID  
        join TR_TRA_PERSON on  DONNEE_TX.ID_CONDUCTEUR=TR_TRA_PERSON.CNR_EXTCODE
        join MARQUE on VEHICULE.MARQUE=MARQUE.COD_MARQUE
        join CATVEHIC on VEHICULE.COD_CATEGORIE=CATVEHIC.COD_CATEGORIE 
       left  join SOCIETE on  INFSAL.SOCIETE=SOCIETE.SOCIETE
        left join ETABSECT on INFSAL.SOCIETE=ETABSECT.SOCIETE AND INFSAL.ETAB=ETABSECT.ETAB AND INFSAL.SECTION=ETABSECT.SECTION  
    where 
      (
       (
        SOCIETE.RAIS  =  'GT BRETAGNE'
        OR
        T_AFFECT2.FILIALE  =  'BRETAGNE'
       )
       AND
       DONNEE_TX.CONSO_TOT_AVG  >  0
       AND
       DONNEE_TX.IND_CONF  =  '0'
       AND
       to_char(DONNEE_TX.DATEJ,'YYYYMM')  = '201209'
      )
       group by 
        VEHICULE.PARC,
      T_AFFECT4.CLIENT,
      T_AFFECT2.FILIALE,
      DONNEE_TX.CONSO_TOT_AVG,
      DONNEE_TX.DATEJ,
      to_char(DONNEE_TX.DATEJ,'WW'),
      nvl(INDIVIDU.NOM, TR_TRA_PERSON.NM_NAME),
      ETABSECT.LIB,
      SOCIETE.RAIS,
      DONNEE_TX.ID_CONDUCTEUR,
      DONNEE_TX.SPEED_AVG,
       case   when (MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12)<30  then '1- Moins de 30 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 30 and MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 < 40 then '2- De 30 à 39 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 40 and MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 < 50 then '3- De 40 à 49 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 50 then '4- Plus de 50 ans'  end,
      MARQUE.LIBELLE,
      CATVEHIC.LIBELLE,
      decode(INDIVIDU.SEXE,'F','Femme','Homme'),
      to_char(DONNEE_TX.DATEJ,'YYYYMM'),
      round(MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12,2)
      HAVING  sum(DONNEE_TX.DISTANCE)  >  0
    Est ce que ce problème de perf et du a un mauvais paramétrage de mon serveur? à la version de Oracle? Peut etre au fait que la requête n'est pas super optimisé. Mais dans ce cas pourquoi un tel écart.
    Je tiens à préciser que certaines des tables sont des synonyms faisant référence a une autre BDD via un Dblink.

    Je n'ai fait aucun paramétrage spécifique sur mon serveur 11G car je n'y connais pas grand chose en Oracle.

    D'avance merci de votre aide

  2. #2
    Membre Expert

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Par défaut
    A votre place moi j'aurai procédé comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    11g> alter session set OPTIMIZER_FEATURES_ENABLE = '10.2.0.4'; -- la version oracle exacte de votre base de données 10g 
    11g> re-exécutez la même requête sans modification par rapport à celle de 10g
    Si vous arrivez à retrouver vos 12 secondes, alors vous avez déjà accompli un premier pas vers la solution définitive.

    Il faudrait alors dans ce cas continuer en prenant les deux plan d'exécutions (a) celui de 11g sans changement du paramètre OPTIMIZER_FEATURES_ENABLE (b) celui de 11g avec changement de OPTIMIZER_FEATURES_ENABLE = '10.2.0.4'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    11g> alter session set statistics_level=ALL;
    11g> alter session set OPTIMIZER_FEATURES_ENABLE = '10.2.0.4'; 
    11g> exécutez la requête d origine
    11g> select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    11g> alter session set statistics_level=ALL; 
    11g> exécutez la requête d origine
    11g> select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));
    et postez ici les deux plan d'executions pour analyse des différences

    Un post sur otn hier ressemble au votre; on y parle manifestement des synonymes aussi.

  3. #3
    Expert confirmé 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
    Par défaut
    Sont vos statistiques à jour sur le nouveau serveur? Le paramétrage des ceux deux serveurs est-il identique ?
    D’une manière générale l’optimiseur 11g est bien différente de celui d’Oracle 10g. Et il incorpore des mécanismes évolués de feedback de l’exécution des requêtes qui peuvent induire un changement de du plan d’exécution entre deux exécutions de la même requête.

  4. #4
    Membre Expert

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Sont vos statistiques à jour sur le nouveau serveur?
    S'il nous donne les deux plans d'exécutions comme demandés avec E-Rows et A-Rows on verra cela très rapidement.

    Le paramétrage des ceux deux serveurs est-il identique ?
    Cela peut s'avérer très important

    Et il incorpore des mécanismes évolués de feedback de l’exécution des requêtes qui peuvent induire un changement de du plan d’exécution entre deux exécutions de la même requête.
    Cardinality Feedback ,dont vous faites allusion ici, telle qu'elle est implémentée aujourd'hui, produit plus de problèmes que de solutions

    cardinality feedback

  5. #5
    Membre averti
    Inscrit en
    Novembre 2012
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 56
    Par défaut
    Bonjour et merci pour vos réponses ca fait plaisir

    Alors malgrés la modification

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER session SET OPTIMIZER_FEATURES_ENABLE = '10.2.0.1';
    Le temps est encore plus long 1min30.

    qu 'elle sont les paramètres que je peux vérifier sur mes deux serveurs pour trouver une différence?

    Voulez vous tout de meme les plan?

  6. #6
    Membre Expert

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Par défaut
    Citation Envoyé par sebgoe Voir le message
    Bonjour et merci pour vos réponses ca fait plaisir

    Alors malgrés la modification

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER session SET OPTIMIZER_FEATURES_ENABLE = '10.2.0.1';
    Le temps est encore plus long 1min30.

    qu 'elle sont les paramètres que je peux vérifier sur mes deux serveurs pour trouver une différence?

    Voulez vous tout de meme les plan?
    Oui on veut bien les plans générés tels que demandés s'il vous plaît

  7. #7
    Expert confirmé 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
    Par défaut
    Citation Envoyé par Mohamed.Houri Voir le message
    Cardinality Feedback ,dont vous faites allusion ici, telle qu'elle est implémentée aujourd'hui, produit plus de problèmes que de solutions
    @Mohammed,
    Le problème ici n'est pas de savoir il est bon ou mauvais mais tout simplement qu'il existe dans une version et pas dans une autre. Et surtout qu'il peut déterminer le changement du plan d'exécution de la même requête entre deux exécutions consécutives. Je ne suis pas certain que beaucoup des utilisateurs sont bien conscient de ce fait quand il analyse les requêtes sur 11g.

  8. #8
    Membre averti
    Inscrit en
    Novembre 2012
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 56
    Par défaut
    Effectivement en sql plus cela fonctionne mieux.....

    Le resultat apparement c est le la table infsal qui ralentit le tout...

    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
    78
    79
    80
    81
    82
    83
    84
    SQL> SELECT * FROM TABLE(dbms_xplan.display_cursor(NULL,NULL,'ALLSTATS LAST'));
     
    PLAN_TABLE_OUTPUT                                                                                                                                                                                                                                         
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    SQL_ID  3zxw1wha1y0ty, child number 1                                                                                                                                                                                                                     
    -------------------------------------                                                                                                                                                                                                                     
    SELECT   VEHICULE.PARC,   T_AFFECT4.CLIENT,   T_AFFECT2.FILIALE,                                                                                                                                                                                          
    sum(DONNEE_TX.DISTANCE),   DONNEE_TX.CONSO_TOT_AVG,                                                                                                                                                                                                       
    sum(DONNEE_TX.CONSO_TOTAL),   DONNEE_TX.DATEJ,                                                                                                                                                                                                            
    to_char(DONNEE_TX.DATEJ,'WW'),   case  INDIVIDU.NOM || 'toto'  when                                                                                                                                                                                       
    'toto' then  TR_TRA_PERSON.NM_NAME else INDIVIDU.NOM || ' ' ||                                                                                                                                                                                            
    INDIVIDU.PRENOM   end,   ETABSECT.LIB,   SOCIETE.RAIS,                                                                                                                                                                                                    
    DONNEE_TX.ID_CONDUCTEUR,   DONNEE_TX.SPEED_AVG,    case   when                                                                                                                                                                                            
    (MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12)<30  then                                                                                                                                                                                   
    '1- Moins de 30 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'                                                                                                                                                                                  
    YYYYMMDD'))/12 >= 30 and MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'Y                                                                                                                                                                                  
    YYYMMDD'))/12 < 40 then '2- De 30 … 39 Ans' when                                                                                                                                                                                                          
    MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 40 and                                                                                                                                                                                    
    MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 < 50 then                                                                                                                                                                                    
    '3- De 40 … 49 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'Y                                                                                                                                                                                  
    YYYMMDD'))/12 >= 50 then '4- Plus de 50 ans'  end,                                                                                                                                                                                                        
    sum(DONNEE_TX.CONSO_IDLE),   sum(DONNEE_TX.CONS                                                                                                                                                                                                           
     
    Plan hash value: 1167207911                                                                                                                                                                                                                               
     
    -----------------------------------------------------------------------------------------------------------------------------------------------------                                                                                                     
    | Id  | Operation                      | Name                 | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  |  OMem |  1Mem | Used-Mem |                                                                                                     
    -----------------------------------------------------------------------------------------------------------------------------------------------------                                                                                                     
    |   0 | SELECT STATEMENT               |                      |      1 |        |   1009 |00:01:30.76 |    1378 |   1000 |       |       |          |                                                                                                     
    |*  1 |  FILTER                        |                      |      1 |        |   1009 |00:01:30.76 |    1378 |   1000 |       |       |          |                                                                                                     
    |   2 |   HASH GROUP BY                |                      |      1 |     53 |   1009 |00:01:30.75 |    1378 |   1000 |   804K|   804K| 1226K (0)|                                                                                                     
    |*  3 |    HASH JOIN OUTER             |                      |      1 |   1049 |   1009 |00:01:30.71 |    1378 |   1000 |   706K|   706K| 1272K (0)|                                                                                                     
    |*  4 |     HASH JOIN                  |                      |      1 |     23 |   1009 |00:01:30.53 |    1378 |   1000 |   709K|   709K|  918K (0)|                                                                                                     
    |*  5 |      HASH JOIN                 |                      |      1 |     23 |   1009 |00:01:30.51 |    1365 |   1000 |   855K|   855K| 1220K (0)|                                                                                                     
    |   6 |       TABLE ACCESS FULL        | T_AFFECT2            |      1 |     37 |     37 |00:00:00.01 |       3 |      0 |       |       |          |                                                                                                     
    |*  7 |       HASH JOIN                |                      |      1 |    629 |   4009 |00:01:30.46 |    1362 |   1000 |  1123K|   946K| 1400K (0)|                                                                                                     
    |   8 |        NESTED LOOPS OUTER      |                      |      1 |    296 |   4009 |00:01:30.01 |    1236 |   1000 |       |       |          |                                                                                                     
    |   9 |         NESTED LOOPS OUTER     |                      |      1 |    296 |   4009 |00:01:23.37 |    1236 |   1000 |       |       |          |                                                                                                     
    |* 10 |          HASH JOIN OUTER       |                      |      1 |    296 |   4009 |00:01:16.78 |    1236 |   1000 |   962K|   962K| 1423K (0)|                                                                                                     
    |* 11 |           HASH JOIN            |                      |      1 |    296 |   3959 |00:00:00.51 |    1236 |   1000 |   816K|   816K| 1231K (0)|                                                                                                     
    |  12 |            TABLE ACCESS FULL   | CATVEHIC             |      1 |    196 |    196 |00:00:00.01 |       3 |      0 |       |       |          |                                                                                                     
    |* 13 |            HASH JOIN           |                      |      1 |    296 |   3959 |00:00:00.46 |    1233 |   1000 |   888K|   888K| 1225K (0)|                                                                                                     
    |  14 |             TABLE ACCESS FULL  | MARQUE               |      1 |    154 |    154 |00:00:00.01 |       3 |      0 |       |       |          |                                                                                                     
    |* 15 |             HASH JOIN          |                      |      1 |    296 |   3959 |00:00:00.41 |    1230 |   1000 |   870K|   870K| 1417K (0)|                                                                                                     
    |* 16 |              HASH JOIN         |                      |      1 |    337 |   3983 |00:00:00.29 |    1041 |   1000 |   821K|   821K| 1421K (0)|                                                                                                     
    |* 17 |               TABLE ACCESS FULL| DONNEE_TX            |      1 |    336 |   3953 |00:00:00.22 |    1005 |   1000 |       |       |          |                                                                                                     
    |* 18 |               TABLE ACCESS FULL| TR_TRA_PERSON        |      1 |    854 |    854 |00:00:00.01 |      36 |      0 |       |       |          |                                                                                                     
    |* 19 |              TABLE ACCESS FULL | VEHICULE             |      1 |   4116 |   4699 |00:00:00.02 |     189 |      0 |       |       |          |                                                                                                     
    |  20 |           REMOTE               | INFSAL               |      1 |   9578 |    194K|00:01:13.46 |       0 |      0 |       |       |          |                                                                                                     
    |  21 |          REMOTE                | ETABSECT             |   4009 |      1 |   3854 |00:00:06.50 |       0 |      0 |       |       |          |                                                                                                     
    |  22 |         REMOTE                 | SOCIETE              |   4009 |      1 |   3854 |00:00:06.57 |       0 |      0 |       |       |          |                                                                                                     
    |  23 |        TABLE ACCESS FULL       | VEHICULE_AFFECTATION |      1 |  28064 |  28064 |00:00:00.09 |     126 |      0 |       |       |          |                                                                                                     
    |  24 |      TABLE ACCESS FULL         | T_AFFECT4            |      1 |    526 |    526 |00:00:00.01 |      13 |      0 |       |       |          |                                                                                                     
    |  25 |     REMOTE                     | INDIVIDU             |      1 |  25491 |  10325 |00:00:00.06 |       0 |      0 |       |       |          |                                                                                                     
    -----------------------------------------------------------------------------------------------------------------------------------------------------                                                                                                     
     
    Predicate Information (identified by operation id):                                                                                                                                                                                                       
    ---------------------------------------------------                                                                                                                                                                                                       
     
       1 - filter(SUM("DONNEE_TX"."DISTANCE")>0)                                                                                                                                                                                                              
       3 - access("DONNEE_TX"."ID_CONDUCTEUR"=TO_CHAR("INDIVIDU"."INDIVIDU"))                                                                                                                                                                                 
       4 - access("VEHICULE_AFFECTATION"."ID_CLIENT"="T_AFFECT4"."ID_AFFECT4")                                                                                                                                                                                
       5 - access("VEHICULE_AFFECTATION"."ID_FILIALE"="T_AFFECT2"."ID_AFFECT2")                                                                                                                                                                               
           filter(("SOCIETE"."RAIS"='GT BRETAGNE' OR "T_AFFECT2"."FILIALE"='BRETAGNE'))                                                                                                                                                                       
       7 - access("VEHICULE_AFFECTATION"."ID_VEHICULE"="DONNEE_TX"."PARCID")                                                                                                                                                                                  
           filter(("VEHICULE_AFFECTATION"."DATE_DEBUT"<="DONNEE_TX"."DATEJ" AND "VEHICULE_AFFECTATION"."DATE_FIN">"DONNEE_TX"."DATEJ"))                                                                                                                       
      10 - access("DONNEE_TX"."ID_CONDUCTEUR"=TO_CHAR("INFSAL"."INDIVIDU"))                                                                                                                                                                                   
           filter(TO_NUMBER(TO_CHAR(INTERNAL_FUNCTION("DONNEE_TX"."DATEJ"),'YYYYMM'))=CASE  WHEN (TO_CHAR(SYSDATE@!,'DD')<='09') THEN                                                                                                                         
                  TO_NUMBER(TO_CHAR(ADD_MONTHS(TO_DATE("INFSAL"."ANMOIS",'YYYYMM'),2),'YYYYMM')) WHEN                                                                                                                                                         
                  (TO_CHAR(INTERNAL_FUNCTION("DONNEE_TX"."DATEJ"),'YYYYMM')=TO_CHAR(SYSDATE@!,'YYYYMM')) THEN                                                                                                                                                 
                  TO_NUMBER(TO_CHAR(ADD_MONTHS(TO_DATE("INFSAL"."ANMOIS",'YYYYMM'),1),'YYYYMM')) ELSE TO_NUMBER("INFSAL"."ANMOIS") END )                                                                                                                      
      11 - access("VEHICULE"."COD_CATEGORIE"="CATVEHIC"."COD_CATEGORIE")                                                                                                                                                                                      
      13 - access("VEHICULE"."MARQUE"="MARQUE"."COD_MARQUE")                                                                                                                                                                                                  
      15 - access("DONNEE_TX"."PARCID"="VEHICULE"."VEHICULE_ID")                                                                                                                                                                                              
      16 - access("DONNEE_TX"."ID_CONDUCTEUR"="TR_TRA_PERSON"."CNR_EXTCODE")                                                                                                                                                                                  
      17 - filter(("DONNEE_TX"."IND_CONF"='0' AND TO_CHAR(INTERNAL_FUNCTION("DONNEE_TX"."DATEJ"),'YYYYMM')='201209' AND                                                                                                                                       
                  "DONNEE_TX"."CONSO_TOT_AVG">0))                                                                                                                                                                                                             
      18 - filter("TR_TRA_PERSON"."CNR_EXTCODE" IS NOT NULL)                                                                                                                                                                                                  
      19 - filter(("VEHICULE"."VEHICULE_ID" IS NOT NULL AND "VEHICULE"."MARQUE" IS NOT NULL AND "VEHICULE"."COD_CATEGORIE" IS NOT NULL))                                                                                                                      
     
     
    76 ligne(s) sélectionnée(s).
     
    SQL> spool off;
    Et voila le resultat avec la requete qui fonctionne

    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    SQL> SELECT * FROM TABLE(dbms_xplan.display_cursor(NULL,NULL,'ALLSTATS LAST'));
     
    PLAN_TABLE_OUTPUT                                                               
    --------------------------------------------------------------------------------
    SQL_ID  81t4gt3b23wnf, child number 0                                           
    -------------------------------------                                           
    select    VEHICULE.PARC,   T_AFFECT4.CLIENT,   T_AFFECT2.FILIALE,               
    sum(DONNEE_TX.DISTANCE),   DONNEE_TX.CONSO_TOT_AVG,                             
    sum(DONNEE_TX.CONSO_TOTAL),   DONNEE_TX.DATEJ,                                  
    to_char(DONNEE_TX.DATEJ,'WW'),   case  INDIVIDU.NOM || 'toto'  when             
    'toto' then  TR_TRA_PERSON.NM_NAME else INDIVIDU.NOM || ' ' ||                  
    INDIVIDU.PRENOM   end,   ETABSECT.LIB,   SOCIETE.RAIS,                          
    DONNEE_TX.ID_CONDUCTEUR,   DONNEE_TX.SPEED_AVG,    case   when                  
    (MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12)<30  then         
    '1- Moins de 30 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'        
     
    PLAN_TABLE_OUTPUT                                                               
    --------------------------------------------------------------------------------
    YYYYMMDD'))/12 >= 30 and MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'Y        
    YYYMMDD'))/12 < 40 then '2- De 30 … 39 Ans' when                                
    MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 >= 40 and          
    MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'YYYYMMDD'))/12 < 50 then          
    '3- De 40 … 49 Ans' when MONTHS_BETWEEN(sysdate,to_date(INDIVIDU.dnai,'Y        
    YYYMMDD'))/12 >= 50 then '4- Plus de 50 ans'  end,                              
    sum(DONNEE_TX.CONSO_IDLE),   sum(DONNEE_TX.CON                                  
     
    Plan hash value: 1312641855                                                     
     
    --------------------------------------------------------------------------------
     
    PLAN_TABLE_OUTPUT                                                               
    --------------------------------------------------------------------------------
    ---------------------------------------------------------------                 
     
    | Id  | Operation                         | Name                 | Starts | E-Ro
    ws | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |                 
     
    --------------------------------------------------------------------------------
    ---------------------------------------------------------------                 
     
    |   0 | SELECT STATEMENT                  |                      |      1 |     
       |   1009 |00:00:12.79 |    1378 |       |       |          |                 
     
     
    PLAN_TABLE_OUTPUT                                                               
    --------------------------------------------------------------------------------
    |*  1 |  FILTER                           |                      |      1 |     
       |   1009 |00:00:12.79 |    1378 |       |       |          |                 
     
    |   2 |   HASH GROUP BY                   |                      |      1 |     
    53 |   1009 |00:00:12.79 |    1378 |   804K|   804K| 1274K (0)|                 
     
    |*  3 |    HASH JOIN                      |                      |      1 |   10
    49 |   1009 |00:00:12.74 |    1378 |   842K|   842K| 1220K (0)|                 
     
    |   4 |     TABLE ACCESS FULL             | T_AFFECT4            |      1 |    5
    26 |    526 |00:00:00.01 |      13 |       |       |          |                 
     
    PLAN_TABLE_OUTPUT                                                               
    --------------------------------------------------------------------------------
     
    |*  5 |     HASH JOIN                     |                      |      1 |   10
    49 |   1009 |00:00:12.72 |    1365 |   855K|   855K| 1218K (0)|                 
     
    |   6 |      TABLE ACCESS FULL            | T_AFFECT2            |      1 |     
    37 |     37 |00:00:00.01 |       3 |       |       |          |                 
     
    |*  7 |      HASH JOIN                    |                      |      1 |  285
    43 |   4009 |00:00:12.67 |    1362 |  1911K|  1055K| 2837K (0)|                 
     
    |   8 |       TABLE ACCESS FULL           | VEHICULE_AFFECTATION |      1 |  280
     
    PLAN_TABLE_OUTPUT                                                               
    --------------------------------------------------------------------------------
    64 |  28064 |00:00:00.08 |     126 |       |       |          |                 
     
    |*  9 |       HASH JOIN OUTER             |                      |      1 |  134
    06 |   4009 |00:00:12.27 |    1236 |  1123K|   946K| 1409K (0)|                 
     
    |* 10 |        HASH JOIN                  |                      |      1 |    2
    96 |   4009 |00:00:12.03 |    1236 |   816K|   816K| 1228K (0)|                 
     
    |  11 |         TABLE ACCESS FULL         | CATVEHIC             |      1 |    1
    96 |    196 |00:00:00.01 |       3 |       |       |          |                 
     
     
    PLAN_TABLE_OUTPUT                                                               
    --------------------------------------------------------------------------------
    |* 12 |         HASH JOIN                 |                      |      1 |    2
    96 |   4009 |00:00:11.97 |    1233 |   888K|   888K| 1225K (0)|                 
     
    |  13 |          TABLE ACCESS FULL        | MARQUE               |      1 |    1
    54 |    154 |00:00:00.01 |       3 |       |       |          |                 
     
    |* 14 |          HASH JOIN                |                      |      1 |    2
    96 |   4009 |00:00:11.92 |    1230 |   962K|   962K| 1409K (0)|                 
     
    |* 15 |           HASH JOIN               |                      |      1 |    3
    37 |   4033 |00:00:11.79 |    1041 |   862K|   862K| 1229K (0)|                 
     
    PLAN_TABLE_OUTPUT                                                               
    --------------------------------------------------------------------------------
     
    |* 16 |            TABLE ACCESS FULL      | TR_TRA_PERSON        |      1 |    8
    54 |    854 |00:00:00.01 |      36 |       |       |          |                 
     
    |  17 |            NESTED LOOPS OUTER     |                      |      1 |    3
    36 |   4003 |00:00:11.71 |    1005 |       |       |          |                 
     
    |  18 |             NESTED LOOPS OUTER    |                      |      1 |    3
    36 |   4003 |00:00:06.13 |    1005 |       |       |          |                 
     
    |* 19 |              HASH JOIN RIGHT OUTER|                      |      1 |    3
     
    PLAN_TABLE_OUTPUT                                                               
    --------------------------------------------------------------------------------
    36 |   4003 |00:00:00.38 |    1005 |   766K|   766K| 1289K (0)|                 
     
    |  20 |               REMOTE              | INFSAL               |      1 |     
    96 |   1408 |00:00:00.12 |       0 |       |       |          |                 
     
    |* 21 |               TABLE ACCESS FULL   | DONNEE_TX            |      1 |    3
    36 |   3953 |00:00:00.10 |    1005 |       |       |          |                 
     
    |  22 |              REMOTE               | SOCIETE              |   4003 |     
     1 |   3848 |00:00:05.64 |       0 |       |       |          |                 
     
     
    PLAN_TABLE_OUTPUT                                                               
    --------------------------------------------------------------------------------
    |  23 |             REMOTE                | ETABSECT             |   4003 |     
     1 |   3848 |00:00:05.51 |       0 |       |       |          |                 
     
    |* 24 |           TABLE ACCESS FULL       | VEHICULE             |      1 |   41
    16 |   4699 |00:00:00.02 |     189 |       |       |          |                 
     
    |  25 |        REMOTE                     | INDIVIDU             |      1 |  254
    91 |  10325 |00:00:00.07 |       0 |       |       |          |                 
     
    --------------------------------------------------------------------------------
    ---------------------------------------------------------------                 
     
    PLAN_TABLE_OUTPUT                                                               
    --------------------------------------------------------------------------------
     
     
    Predicate Information (identified by operation id):                             
    ---------------------------------------------------                             
     
       1 - filter(SUM("DONNEE_TX"."DISTANCE")>0)                                    
       3 - access("VEHICULE_AFFECTATION"."ID_CLIENT"="T_AFFECT4"."ID_AFFECT4")      
       5 - access("VEHICULE_AFFECTATION"."ID_FILIALE"="T_AFFECT2"."ID_AFFECT2")     
           filter(("SOCIETE"."RAIS"='GT BRETAGNE' OR "T_AFFECT2"."FILIALE"='BRETAGNE
    '))                                                                             
     
     
    PLAN_TABLE_OUTPUT                                                               
    --------------------------------------------------------------------------------
       7 - access("VEHICULE_AFFECTATION"."ID_VEHICULE"="DONNEE_TX"."PARCID")        
           filter(("VEHICULE_AFFECTATION"."DATE_DEBUT"<="DONNEE_TX"."DATEJ" AND "VEH
    ICULE_AFFECTATION"."DATE_FIN">"DONNEE_TX"."DATEJ"))                             
     
       9 - access("DONNEE_TX"."ID_CONDUCTEUR"=TO_CHAR("INDIVIDU"."INDIVIDU"))       
      10 - access("VEHICULE"."COD_CATEGORIE"="CATVEHIC"."COD_CATEGORIE")            
      12 - access("VEHICULE"."MARQUE"="MARQUE"."COD_MARQUE")                        
      14 - access("DONNEE_TX"."PARCID"="VEHICULE"."VEHICULE_ID")                    
      15 - access("DONNEE_TX"."ID_CONDUCTEUR"="TR_TRA_PERSON"."CNR_EXTCODE")        
      16 - filter("TR_TRA_PERSON"."CNR_EXTCODE" IS NOT NULL)                        
      19 - access("DONNEE_TX"."ID_CONDUCTEUR"=TO_CHAR("INFSAL"."INDIVIDU") AND      
     
    PLAN_TABLE_OUTPUT                                                               
    --------------------------------------------------------------------------------
                  TO_NUMBER("ANMOIS")=TO_NUMBER(TO_CHAR(INTERNAL_FUNCTION("DATEJ"),'
    YYYYMM')))                                                                      
     
      21 - filter(("DONNEE_TX"."IND_CONF"='0' AND TO_CHAR(INTERNAL_FUNCTION("DONNEE_
    TX"."DATEJ"),'YYYYMM')='201209' AND                                             
     
                  "DONNEE_TX"."CONSO_TOT_AVG">0))                                   
      24 - filter(("VEHICULE"."VEHICULE_ID" IS NOT NULL AND "VEHICULE"."MARQUE" IS N
    OT NULL AND "VEHICULE"."COD_CATEGORIE" IS NOT NULL))                            
     
     
     
    73 ligne(s) sélectionnée(s).
     
    SQL> spool off;
    D'avance merci de votre aide

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/05/2010, 19h09
  2. Réponses: 1
    Dernier message: 27/05/2009, 10h18
  3. Différence entre PeopleSoft-Oracle /DataStage-Oracle
    Par vincent1 dans le forum Autres outils décisionnels
    Réponses: 1
    Dernier message: 02/04/2009, 15h44
  4. Performance des recherches Oracle Text
    Par methosxp dans le forum SQL
    Réponses: 0
    Dernier message: 04/09/2007, 16h49
  5. Performances et sizing Oracle
    Par lecharcutierdelinux dans le forum Administration
    Réponses: 1
    Dernier message: 14/05/2007, 11h32

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