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 :

[11g-11.2.0.3.0] Plans d'exécution déconnants.


Sujet :

Administration Oracle

  1. #1
    Membre averti Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Points : 433
    Points
    433
    Par défaut [11g-11.2.0.3.0] Plans d'exécution déconnants.
    Bonjour,

    Je travaille sur une base de données infocentre sur lequel nous subissons aléatoirement de gros problèmes de dégradation de plans.

    Des requêtes qui mettent 4 mins, vont du jour au lendemain passer à 6 heures, sans que rien ne le justifie (pas de recalcul de stats entre temps, plan validé dans la base line).

    La seule solution que nous avons trouvée pour l'instant est de passer par un hint pour l'obliger à passer par les index clé primaires.

    Et c'est cela qui nous étonne le plus. Par défaut le plan choisi fait un Full sur toutes les tables de la requête alors que les conditions de jointures sont correctes et faites sur les clés primaires.

    En ajoutant les hints /*+ Index(table indexPK)*/ le temps passe à 2 mins ! De plus il faut pour chacune des tables indiquer l'index par lequel passer, sinon c'est un FULL qui est choisi.

    Nous avons retourné le problème dans tous les sens impossible de comprendre :

    - d'où vient ce changement de plan
    - pourquoi il nous est impossible de faire choisir le bon plan naturellement (sans hint) à l'optimiseur.

    A vrai dire nous ne savons plus trop par où prendre le problème et où regarder.

    Si vous avez des idées, je ne met pas plus de précisions sur le paramétrage pour l'instant car je ne sais quoi mettre tellement le problème nous paraît insoluble.

    Macben

  2. #2
    Membre expérimenté

    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
    Points : 1 359
    Points
    1 359
    Par défaut
    Normalement l’Optimisateur d’Oracle(CBO) fournit le meilleur plan d’exécution possible s’il a une vue fidèle et représentative du volume de données que vous voulez rapatrier ainsi que de sa répartition dans la base de données (bien sûr sauf bug et parfois paramètres non adéquats du CBO). Prenez donc le problème d’une manière scientifique et commencez par poster le plan d’exécution de votre requête avec les estimations (E-Rows) faites par le CBO et les valeurs réelles (A-Rows). Utilisez pour cela le package dbms_xplan dont plusieurs exemples se trouvent déjà dans ce site. En procédant ainsi, vous aurez déjà accompli un pas : savoir si vos statistiques reflètent la réalité ou pas ?

    D’ailleurs, à votre place, moi j’aurai tout de suite comparé le bon plan avec le mauvais à la recherche de la différence qui peut s’avérer être un problème de statistiques
    Bien Respectueusement
    www.hourim.wordpress.com

    "Ce qui se conçoit bien s'énonce clairement"

  3. #3
    Membre averti Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Points : 433
    Points
    433
    Par défaut
    J'applique la méthode pour comparer avec dbms_xplan.

    Concernant la comparaison, je l'ai effectuée, le mauvais fait un FULL TABLE sur les 8 tables en jointures, le bon plan fait un INDEX_PK sur chacune des 8 tables.

    Je sais que mes statistiques ne sont pas fraîches (la volumétrie a augmenté) car les tables étant volumineuses leur rafraichissement est mensuel, mais dans tous les cas je ne comprend pas qu'un FULL soit privilégié à un INDEX_PK.

    Je suis certainement exigeant avec lui mais là, quand même, l'optimiseur et moi on ne se comprend pas.

  4. #4
    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
    En plus de ce que Mohamed vous a déjà recommandé, faite une trace de l’optimiseur (événement 10053) pour essayer de trouver des indices en ce qui concerne ses choix.
    Mais je commencerais aussi par l’étude de la requête, de son plan d’exécution, des statistiques, des paramètres de l'optimiseur et des données.

  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
    Citation Envoyé par macben Voir le message
    ...je ne comprend pas qu'un FULL soit privilégié à un INDEX_PK.
    Si un full est plus efficace pourquoi pas ? La question est plutôt pourquoi croit-il que c’est plus efficace quand la réalité démontre le contraire.

  6. #6
    Membre expérimenté

    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
    Points : 1 359
    Points
    1 359
    Par défaut
    dans tous les cas je ne comprend pas qu'un FULL soit privilégié à un INDEX_PK.
    Ah que la Philosophy numéro 15 de Jonathan Lewis sied parfaitement à votre question.

    Allez au commentaire 7 pour trouver la traduction en Français de cette philosophie 15
    Bien Respectueusement
    www.hourim.wordpress.com

    "Ce qui se conçoit bien s'énonce clairement"

  7. #7
    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
    Citation Envoyé par Mohamed.Houri Voir le message
    All is takes is one row (that the optimizer knows about) to change from one plan to another ...
    Je sais que mes statistiques ne sont pas fraîches (la volumétrie a augmenté) car
    ...
    Bon il reste un niveau de dynamic samping plus agressif [edit] et
    "How Does An Execution Plan Suddenly Change When The Statistics (And Everything Else) Remains The Same ? " [/edit]

Discussions similaires

  1. Plans d'exécution 10g/11g
    Par tropiko dans le forum Oracle
    Réponses: 1
    Dernier message: 12/12/2012, 11h31
  2. Plans d'exécution en 11g
    Par zidane2012 dans le forum Oracle
    Réponses: 6
    Dernier message: 27/11/2012, 13h14
  3. Réponses: 12
    Dernier message: 22/06/2006, 10h26
  4. Plan d' exécution
    Par rod59 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 15/06/2006, 21h50
  5. Comparer des plan d'exécution
    Par sygale dans le forum Oracle
    Réponses: 7
    Dernier message: 06/04/2006, 17h58

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