Vous êtes sur la page 1sur 7

12/03/2019 Comment expliquer les caprices de l'optimiseur Oracle et y faire face - partie 2 | Digora

En poursuivant votre navigation sur ce site, vous acceptez l’utilisation de cookies pour réaliser des
Oui, je suis d'accord
statistiques de visites, améliorer l'expérience utilisateur et vous proposer des contenus et services adaptés
à vos centres d’intérêt. En savoir plus

évènements
carrières
contact

Rechercher Entrer votre recherche


Search

recherche
Espace client
en

recherche
Espace client
en

Solutions
Conseil & Transformation numérique
Conseil
Infrastructure Provider
Appliances
Base as a Box
Cloud
IoT
Services managés
Administration
Supervision
Support Technologique
Exploitation
Digora Suite

https://www.digora.com/fr/blog/comment-expliquer-les-caprices-de-loptimiseur-oracle-et-y-faire-face-partie-2 1/7
12/03/2019 Comment expliquer les caprices de l'optimiseur Oracle et y faire face - partie 2 | Digora

SOLUTIONS
Découvrez nos 3 solutions pour booster vos projets IT : Conseil & Transformation Numérique, Infrastructure Provider et Services Managés.

Expertises
Données
cloud
IoT
Sécurité

EXPERTISES
Nos experts vous accompagnent pour trouver les meilleures solutions (Data, Cloud, IoT et Sécurité) pour maintenir, optimiser, valoriser et protéger votre système d’information.

A propos
A propos
Nos valeurs
Actions sociétales
Presse
Partenaires
Nos agences

A PROPOS
Créée en 1997, Digora est fière de compter aujourd’hui 130 collaborateurs répartis en France, au Maroc et au Luxembourg. Cela a notamment été possible grâce à nos valeurs
fortes et à un écosystème de partenaires.

Carrières
https://www.digora.com/fr/blog/comment-expliquer-les-caprices-de-loptimiseur-oracle-et-y-faire-face-partie-2 2/7
12/03/2019 Comment expliquer les caprices de l'optimiseur Oracle et y faire face - partie 2 | Digora
Carrières
Références
Secteurs d'activité
Références par Technologies

Références
Découvrez les success stories de nos clients.

Contact
Evènements
Blog

Rechercher Entrer votre recherche


Search

https://www.digora.com/fr/blog/comment-expliquer-les-caprices-de-loptimiseur-oracle-et-y-faire-face-partie-2 3/7
12/03/2019 Comment expliquer les caprices de l'optimiseur Oracle et y faire face - partie 2 | Digora

Journal / Blog

Vous êtes ici


Accueil > Blog > Comment expliquer les caprices de l'optimiseur Oracle et y faire face - partie 2

Comment expliquer les caprices de l'optimiseur Oracle et y faire face - partie 2


Blog

https://www.digora.com/fr/blog/comment-expliquer-les-caprices-de-loptimiseur-oracle-et-y-faire-face-partie-2 4/7
12/03/2019 Comment expliquer les caprices de l'optimiseur Oracle et y faire face - partie 2 | Digora

 11gR2,database,Digora,expertise,OEM,Tuning

 0 Commentaires

Après avoir posé les bases dans le premier article de cette série, abordons les différentes méthodes permettant de "dompter" l'optimiseur Oracle...

1. Vue d'ensemble
Conscient que son optimiseur est quelquefois capricieux, Oracle fournit plusieurs méthodes pour contrôler son fonctionnement. A la décharge d'Oracle, il faut reconnaître que la
complexité des requêtes (rédigées par les développeurs d'applications ou générées par les applications) est souvent énorme ! On peut se demander parfois si les inventeurs du
langage SQL avaient imaginé jusqu'à quelle complexité le SQL allait être utilisé... Certaines requêtes font plusieurs milliers de lignes... Voici quelques méthodes proposées par Oracle
pour influencer l'optimiseur sans modifier (ou presque) le code SQL :

les Hints
les Stored Outlines
le SQL Profile
Le SQL Plan Management

2. Comment in uencer l'optimiseur ?


2.1 Les Hints
Oracle permet d'insérer dans l'ordre SQL des indications (Hints) en tant que commentaire permettant d'influencer l'optimiseur sur le choix du plan d'exécution. Même si il faut éviter au
maximum cette méthode, elle peut rendre de grands services. Une modification dans le code SQL est néanmoins nécessaire. Il existe un grand nombre de Hints différents. Exemple
de Hint (en rouge) :
select /*+ index(emp_alias ix_emp) */ ... from scott.emp emp_alias

2.2 Les Stored Outlines


Les Stored Outlines sont disponibles avec Oracle 8i EE, 9i EE, 10g SE et EE et obsolètes depuis Oracle 11g. Les Stored Outlines permettent de forcer le plan via des Hints,
sans modifier la requête. Pour créer un Stored Outline, il suffit de modifier le contexte de la session pour obtenir le bon plan d'exécution, de spécifier à Oracle de créer l'Outline et de
lancer la requête. Pour que les Outlines soient utilisées, il faut mettre en place un paramètre au niveau de la session ou du système. Attention, il n'est pas possible de positionner ce
paramètre dans l'init.ora ou le spfile; il faut le repositionner à chaque démarrage d'instance. Inconvénient du Stored Outline : on ne peut pas profiter d’évolutions de l'optimiseur ou du
schéma permettant une requête plus rapide (un nouvel index par exemple).

2.3 Le SQL Pro le


La fonctionnalité SQL Profile est disponible à partir de la version Oracle 10g. Elle nécessite l'édition Enterprise et les options Diagnostick Pack et Tuning Pack. Le SQL Profile,
contrairement à un Outline, n'est en règle générale pas directif (nous verrons l'exception plus loin). Il est peut être créé via le SQL Tuning Advisor. Cette méthode rajoute des
indications d'ajustements qui seront utilisées par l'optimiseur Oracle. Il peut également être utilisé (et c'est un de ses gros avantages) en mode "force match" ce qui lui permet
de s'appliquer même pour des requêtes dont les valeurs des constantes sont différentes. Voici un inconvénient de l'utilisation du SQL Profile : on ne maîtrise pas les Hints ajoutés par
Oracle, et, comme les Hints sont des ajustements , il se peut qu'avec l'évolution des données, ceux-ci deviennent caduques et que la requête repasse par un mauvais plan
d'exécution.

https://www.digora.com/fr/blog/comment-expliquer-les-caprices-de-loptimiseur-oracle-et-y-faire-face-partie-2 5/7
12/03/2019 Comment expliquer les caprices de l'optimiseur Oracle et y faire face - partie 2 | Digora

 2.4 Le SQL Plan Management


La fonctionnalité SQL Plan Management est disponible à partir de la version Oracle 11g. Elle nécessite l'édition Enterprise. Les options Diagnostick Pack et Tuning Pack sont
nécessaires pour une utilisation automatisée via des Tuning Sets. Le SQL Plan Management est une évolution des Stored Outlines : il permet de forcer un plan via des Hints. Mais
contrairement aux Stored Outlines, il est possible de valider plusieurs plans différents pour une même requête et ainsi de faire évoluer les plans disponibles. L'optimiseur choisira
au moment de l'exécution un de ces différents plans pré-validés. Le SQL Plan Management ne dispose pas d’un mode « force match ».

3. Exemple d'utilisation avancée


Dernièrement, suite à une migration d'Oracle 10g à Oracle 11g chez un client de Digora, plusieurs requêtes sont devenues très lentes et très consommatrices en ressources,
entraînant la saturation du serveur. Le code de l'application n'était pas modifiable de manière rapide. Les requêtes n'utilisant pas de variables (les valeurs des champs étaient en dur),
le SQL Plan Management et les Stored Outlines n'étaient donc pas utilisables. Un SQL Profile a été créé, mais certains Hints n'étaient pas satisfaisants comparativement à la
https://www.digora.com/fr/blog/comment-expliquer-les-caprices-de-loptimiseur-oracle-et-y-faire-face-partie-2 6/7
12/03/2019 Comment expliquer les caprices de l'optimiseur Oracle et y faire face - partie 2 | Digora
g p Q , p p
situation précédente : utilisation du parallélisme de manière forcée et utilisation d'une valeur de Dynamic Sampling élevée. La requête utilisait plus de ressources et restait plus lente
qu'en Oracle 10g. Une investigation poussée a permis de trouver une solution plus satisfaisante. Elle utilise un script disponible sur le site du support Oracle :
"coe_xfr_sql_profile.sql". Grace à ce script, il est possible de générer manuellement des SQL Profiles utilisant les mêmes Hints que les Stored Outlines ou le SQL Plan
Management. Après quelques tests, nous avons donc mis en place les SQL profiles générés manuellement et avons ainsi résolu les problèmes de performances sur ces
requêtes. Dans la partie 3 de cette série d'articles, DIGORA vous apportera d'autres précisions sur l'optimiseur Oracle. Vous souhaitez en savoir plus ? Contactez-nous ici

Partager cet article

NEWSLETTER
 Inscrivez vous à notre newsletter

Commentaires (0)

Rechercher Tapez et validez pour la


Search

Catégories
Non catégorisé (58)
Blog (16)
Engagement (3)
Oracle (2)

Archives du blog
mars 2019 (1)
février 2019 (1)
décembre 2018 (1)
novembre 2018 (1)
octobre 2018 (5)
septembre 2018 (1)
août 2018 (2)
juillet 2018 (1)
juin 2018 (2)
mai 2018 (2)

plus
 SUIVEZ-NOUS   

12 Mar., 2019 - @DigoraBlog [Emploi] Nous cherchons un(e) Consultant(e) Avant-Vente pour accompagner nos clients sur les aspects techniques de… https://t.co/6E1LsmkiBi
12 Mar., 2019 - @DigoraBlog Aujourd'hui, nous célébrons les 30 ans du World Wide Web ! Du coup, on est allé chercher un screenshot du site web… https://t.co/h3XuA8tqPg
12 Mar., 2019 - @DigoraBlog [Emploi] Nous cherchons un Consultant / Administrateur Système pour rejoindre notre super équipe de Digoriens 😊… https://t.co/1rBvsiDiEt

Digora - Copyright © 2019. All rights reserved.


Mentions légales - Politique de confidentialité - Charte éthique - CGV - Newsletter   
VUXE
https://www.digora.com/fr/blog/comment-expliquer-les-caprices-de-loptimiseur-oracle-et-y-faire-face-partie-2 7/7

Vous aimerez peut-être aussi