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 :

Cache de requête


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Cache de requête
    Hello,

    J'ai entendu dire que si on execute 2 fois une requête strictement identique et non paramétrée dans Oracle, celle ci n'est pas recompilée la deuxième fois et le plan d'exécution n'est pas recalculé dans la mesure où la requête est encore dans le cache des requêtes.

    Alors voici mes 4 questions en une :

    1 - Est ce que c'est vrai ?
    2 - Avez vous des documents qui expliquent (en francais) le mode de fonctionnement du cache ?
    3 - Y a t il un paramètre qui permet de dimensionner ce cache (dans la mesure ou celui-ci existe bien sur ) ?
    4 - Est ce que ce cache peut être désactivé ?

    Merci beaucoup

  2. #2
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 119
    Points : 74
    Points
    74
    Par défaut
    A peu près toutes les réponses et un peu plus encore...
    là -> Instance Oracle par Helyos

  3. #3
    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
    Bonjour et bienvenue sur le forum Oracle ,
    Ici tu fait allusion à la library cache et aux différentes phases d'une requête Oracle :

    En plus du bon document d'Helyos je te conseille de lire ces deux sources :
    Hard parse et soft parse

    Les différentes phases d'une requête .

    La library cache se paramétre avec :shared_pool_size

    Bonne lecture

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup pour les réponses et les références de docs.

    Donc c'est la shared_pool_size qui permet de la dimensionner.

    Mais peut elle être fixée à 0 ? Autrement dit, est ce qu'il est possible de supprimer l'utilisation du shared_pool_size par configuration sans faire planter Oracle ?

    Salutations à celui qui me repond à cette question basique.

  5. #5
    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
    Non ,
    malheuresement la shared_pool_size englobe d'autres parties comme le dictionnary cache , on contraire il faut bien dimensionner cette partie

    Pourquoi souhaitez vous , vous passez de la library cache

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    En fait je suis plutot développeur d'application web.

    Revenons sur les faits :

    J'ai pretendu que lorsque nous executons 2 fois la même requete assez rapidement (sans trop savoir ce qu'il y a derrière ), que la phase de compilation et de résolution de la requête non paramétrée n'est pas réexécutée. J'avais remarqué cela plusieurs fois et demandé confirmation il y a quelques temps à un dba Oracle qui m'avais confirmé cela.

    Mais une autre personne dans mon équipe plus expérimentée m'a dit que :
    Ca c'est un paramètre de la base. Il n'est pas dit que tu l'aies sur toutes les bases.

    J'ai répondu "Euh .... peut etre !!!!"

    Mais à vous lire, je vois que la base ne fonctionnera pas bien sur le paramètre shared_pool_size est mis à 0.
    J'en conclus que pour un bon fonctionnement d'une base Oracle, il est nécessaire de bien configurer le shared_pool_size et que par conséquent le cache de la compilation et la résolution de la requête est quasiment toujours présent.

    Est ce que vous me confirmait Ô grand dba ?

    Mais je demande l'avis de spécialiste en la matière, cette personne ne pouvant pas m'en dire plus.

    En tout cas merci beaucoup Jaoud

  7. #7
    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
    Citation Envoyé par brunoz
    Est ce que vous me confirmait Ô grand dba ?
    Hmm je sens de l'ironie ..

    Tout d'abord as tu lu les liens que je t'ai envoyé ainsi que ceux d'HELYOS :
    Ces liens vont te permettre de quoi est constituer la shared_pool mais également quelles sont les différentes phases d'une requête .

    Il n'est non seulement impossible de mettre la shared_pool_size à 0 mais de plus il est conseillé de bien la paramétré afin qu'Oracle dispose des ressources nécessaires pour un fonctionnement optimum :

    Voila ce qui se passe lorsque l'on démarre une base avec shared_pool_size = 0 (8174)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL> startup
    ORA-01078: failure in processing system parameters

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Point d'ironie. : :

    J'envie juste un niveau de maitrise incomparable.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Effectivement, en lisant le chapitre sur Shared pool size / Library cache, je me rends mieux compte de l'intérêt de la chose.

    Mais en fin de compte, la library cache, elle, peut être mise à 0 sans que la shared pool size le soit.

    Désolé d'abuser...

  10. #10
    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
    Citation Envoyé par brunoz
    J'envie juste un niveau de maitrise incomparable.
    Mon niveau est largement comparable et même inférieur à d'autres personnes ( ne serait ce qu'a d'autres personnes présentes dans le forum ) , d'ailleurs ne sommes nous pas le disciple de quelqu'un ?

    Jaouad

    Si le sujet est pour toi résolu merci de le taguer ainsi ..

  11. #11
    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
    Citation Envoyé par brunoz
    Effectivement, en lisant le chapitre sur Shared pool size / Library cache, je me rends mieux compte de l'intérêt de la chose.

    Mais en fin de compte, la library cache, elle, peut être mise à 0 sans que la shared pool size le soit.

    Désolé d'abuser...
    Le paramétre d'initialisation shared_pool_size englobe plusieurs cache :
    Dictionnary , library .

    La library cache ne peut pas être initialisé toute seule.

    Jaouad

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Si le dictionnary n'est pas vide et si la library cache l'est alors le shared pool size ne sera pas vide. Je suis d'accord.

    >> La library cache ne peut pas être initialisé toute seule.

    Ok mais elle peut être égale à 0.

    Une p'tit' dernière et je tag le thread.

  13. #13
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Oui le parametre shared_pool_size peut être à zero (Voir version) mais pas le shared pool.

    dans ma base 10g :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQL> show parameter shared_pool
     
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ----------
    shared_pool_reserved_size            big integer 3565158
    shared_pool_size                     big integer 0
    EDIT: Tout simplement en 10g oracle gére automatiquement ce paramètre
    pour plus d'information voir le parametre caché _shared_pool_size

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Et en ce qui concerne la library cache sur une 8.1.7 ???

  15. #15
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Je ne pense pas que la librarie cache peut être initialiser à zero.
    essaye d'enlever toutes la mémoire de ton PC puis redemarre ta machine.
    Si ca marche alors tu peut mettre zero au library cache.

  16. #16
    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 librairie cache ne peut pas être initalisé à 0 car elle n'a pas de paramêtres le pouvant ( c'est la shared_pool_size )
    En 8i si tu essaye de démarrer avec une shared pool à 0 alors tu as le message décrit au dessus .

    Bouyao il me semble tout simplement que depuis la 10 le plus important est shared_pool_reserved_size car c'est Oracle qui prend la mémoire nécessaire en fonction de ces besoins


    Jaouad

  17. #17
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Citation Envoyé par Jaouad
    Bouyao il me semble tout simplement que depuis la 10 le plus important est shared_pool_reserved_size car c'est Oracle qui prend la mémoire nécessaire en fonction de ces besoins
    Oui c'est juste.
    Voici 3 parametes cachés concernant le pool partagée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    _shared_pool_reserved_pct
    _shared_pool_reserved_min_alloc       
    _shared_pool_max_size

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

Discussions similaires

  1. Cache pour requête SQL?
    Par bobymaw dans le forum Débuter
    Réponses: 2
    Dernier message: 22/07/2011, 20h52
  2. Réponses: 0
    Dernier message: 01/02/2011, 13h39
  3. Configuration du cache de requêtes
    Par ulysse031 dans le forum Requêtes
    Réponses: 9
    Dernier message: 07/01/2008, 11h14
  4. [PERL] NET::LDAP : Mise en cache des requêtes
    Par ricomervin dans le forum Modules
    Réponses: 1
    Dernier message: 17/04/2007, 10h36
  5. Mettre en cache une requête sql
    Par mims1664 dans le forum Langage
    Réponses: 7
    Dernier message: 07/03/2007, 14h19

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