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 :

[DBA] Gestion de la mémoire


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 19
    Par défaut [DBA] Gestion de la mémoire
    Bonjours

    Je sais que le SGBD ORACLE utilise le fichiers init.ora pour defenir certaines paramettres, Parmi ses paramattre la taille de la mémoire.

    Ma question est la suivante :
    Si parexemple mon serveur dispose de 100Mo, et que le fichier init.ora specifie 40Mo. Est ce que ORACLE peu toucher au 60Mo restante de la memoir, pour les utiliser

    merci encore à vous tous

  2. #2
    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
    Par défaut
    Bonjour ,
    merci de bien indiquer la version d'oracle que vous utilisez .

    Oracle n'alloue pas dynqmiquement de la mémoire qu'il n'a pas monopolisé au démarrage .Même si dans les derniéres versions orale veut nous faire croire à une allocation dynamique via le spfile, cette allocation n'est possible que si Oracle à préalablement réservé cette mémoire au démarrage même s'il ne l'occupe pas entiérement au startup.

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    je pense qu'il faut également faire la distinction entre
    • la SGA, en général de taille fixe allouée au démarrage de l'instance)qui est de la mémoire partagée par tous les processus serveurs et
      la PGA qui est de la mémoire privée allouée par chaque processus serveur en fonction de différents paramètres (SORT_AREA_SIZE, HASH_AREA_SIZE, BITMAP_MERGE_AREA_SIZE and CREATE_BITMAP_AREA_SIZE en versions 8/9/10 ou PGA_AGGREGATE_TARGET en version 10).


    Une réponse détaillée dépend donc de la version que vous utilisez, des paramètres de votre init.ora (qui détermine aussi le fonctionnement en mode serveur dédié ou serveur partagés (MTS)).

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Citation Envoyé par Jaouad
    Bonjour ,
    merci de bien indiquer la version d'oracle que vous utilisez .

    Oracle n'alloue pas dynqmiquement de la mémoire qu'il n'a pas monopolisé au démarrage .Même si dans les derniéres versions orale veut nous faire croire à une allocation dynamique via le spfile, cette allocation n'est possible que si Oracle à préalablement réservé cette mémoire au démarrage même s'il ne l'occupe pas entiérement au startup.
    Ca appelle quelques développements tout ça !
    Parce que tel quel, ce n'est rien de plus qu'une affirmation, et on reste un peu sur sa faim....

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Moi je comprends d'après la documentation de la PGA que si Oracle 9 est configuré en serveur dédié, alors Oracle va allouer de la mémoire PGA pour chaque connexion en fonction des valeurs de SORT_AREA_SIZE, HASH_AREA_SIZE, BITMAP_MERGE_AREA_SIZE and CREATE_BITMAP_AREA_SIZE.

    Cela signifie que la mémoire PGA totale allouée dépend du nombre de connexions à la base et finalement que la mémoire totale allouée SGA + PGA est bien variable et que la réponse à la question initiale de taharmk est:

    oui, Oracle va consommer une partie de 60 Mo restants.

  6. #6
    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
    Par défaut
    et bien mon cher pomalaix je serais heureux de détailler mes propos:

    Il me semble que depuis la 9i et avec l'avénement du spfile , Oracle communique bcp sur le fait que dorénavant il soit possible d'allouer dynamiquement grace au Spile et au paramétre SGA_MAX_SIZE.

    En effet tu pouvais te constituer une SGA au démarrage de 500m et avoir un max size de 800 Mo. Lorsque la charge de travail l'exigeait tu pouvais augmenter ta SGA dans la limite du paramétre SGA_MAX_SIZE ( Soit 800 mo).

    Cependant Oracle au startup , alloué bel et bien 800 Mo à cette instance et donc tu ne pouvais pas juste commencer avec 500 Mo puis alloué 300 par la suite.

    Avec la 10G Oracle a introduit le concept ASMM ( automatic shared memory management ). Oracle alloue de maniére automatique la place dans la SGA. Si une instance a besoin de moins de place pour la library cache que pour le cache de données, oracle prend à l'un pour donner à l'autre. Tout cela dans la limite du paramétre SGA_TARGET.

    Lorsque ce paramétre n'est pas renseigné avec la valeur 0 ( donc l'asmm n'est pas désactivé ) pas basoin de renseigner les vieux paramétres tel que :
    DB_<KEEP/RECYCLE>_CACHE_SIZE
    DB_nK_CACHE_SIZE
    LOG_BUFFER
    FIXED SGA
    STREAMS_POOL_SIZE
    Il suffit de positionner le paramétre SGA_TARGET et oracle s'occupe d'allouer, en fonction, de la charge les ressources nécessaires à tel ou tel parties de la SGA.

    En somme plus besoin d'étude fine pour définir dans le détail les besoins de chaque pool.

    Ca c'est la théorie, mais de toute maniére , quel que soit la méthode retenue Oracle occupe la mémoire, et si aprés le démmarage on s'apercoit qu'il reste de la mémoire et que l'on désire l'allouer à oracle, seul un re démmarage le permettra.

    Est ce que c'est assez précis ou pas :

  7. #7
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Citation Envoyé par Jaouad
    En effet tu pouvais te constituer une SGA au démarrage de 500m et avoir un max size de 800 Mo. Lorsque la charge de travail l'exigeait tu pouvais augmenter ta SGA dans la limite du paramétre SGA_MAX_SIZE ( Soit 800 mo).

    Cependant Oracle au startup , alloué bel et bien 800 Mo à cette instance et donc tu ne pouvais pas juste commencer avec 500 Mo puis alloué 300 par la suite.
    Tiens, je relance ce sujet, ayant eu de manière incidente l'occasion de tester.
    Eh bien sous Windows et avec Oracle 9i, il n'y a pas d'emblée allocation de la valeur totale de SGA_MAX_SIZE.

    J'ai paramétré SHARED_POOL_SIZE, DB_CACHE_SIZE, LARGE_POOL_SIZE et JAVA_POOL_SIZE pour un total d'environ 120M, et SGA_MAX_SIZE à 500M.
    Eh bien Oracle me prend mes 120M, et absolument pas 500..

    En revanche, et ça vaut le coup d'être signalé, un SHOW SGA indique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Total System Global Area  504439188 bytes
    Fixed Size                   455060 bytes
    Variable Size             452984832 bytes
    Database Buffers           50331648 bytes
    Redo Buffers                 667648 bytes
    Le "Total system global area" est donc ici une valeur plafond potentielle, et non une valeur réelle.

  8. #8
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Vis à vis de la question initiale, qui concerne la mémoire globale utilisée par Oracle, ma réponse aurait été la même que celle de Pifor.
    On ne peut pas garantir qu'une base sur laquelle des utilisateurs travaillent (c'est quand même sa vocation !) ne va pas consommer un octet de plus

    Quant au SPFILE, il est sans incidence sur le propos. Ce n'est pas lui qui rend les paramètres dynamiques ou non ; il permet juste d'enregistrer les nouvelles valeurs pour qu'elles soient prises en compte au prochain démarrage.

    Ce qui me surprend dans ta réponse, c'est cette affirmation :
    Cependant Oracle au startup , alloué bel et bien 800 Mo à cette instance et donc tu ne pouvais pas juste commencer avec 500 Mo puis alloué 300 par la suite.
    Pour ma part, je ne l'ai pas remarqué jusque là (mais je ne m'y suis pas penché spécialement), et je n'en avais jamais entendu parler.

    Des témoignages complémentaires ou des liens vers des docs pour confirmer ce point ?

  9. #9
    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
    Par défaut
    Bonjour ,
    Citation Envoyé par Pomalaix
    Vis à vis de la question initiale, qui concerne la mémoire globale utilisée par Oracle, ma réponse aurait été la même que celle de Pifor.
    On ne peut pas garantir qu'une base sur laquelle des utilisateurs travaillent (c'est quand même sa vocation !) ne va pas consommer un octet de plus
    Concernant la question je ne me penche pas sur la mémoire consomé par les process user mais uniquement sur les process de l'instance. ce qu'a affirmé Pifor est tout à fait vrai. Soit on choisit un PGA_AGGREGATE_TARGET soit l'augmentation des process users est dépendance directe des connexions, soit le MTS ou OSS, mais en aucun cas on ne peut agir dessus dynamiquement.
    J'ai pris la question sous l'angle de la SGA

    Citation Envoyé par Pomalaix
    Quant au SPFILE, il est sans incidence sur le propos. Ce n'est pas lui qui rend les paramètres dynamiques ou non ; il permet juste d'enregistrer les nouvelles valeurs pour qu'elles soient prises en compte au prochain démarrage.

    Ce qui me surprend dans ta réponse, c'est cette affirmation :
    Cependant Oracle au startup , alloué bel et bien 800 Mo à cette instance et donc tu ne pouvais pas juste commencer avec 500 Mo puis alloué 300 par la suite.
    Pour ma part, je ne l'ai pas remarqué jusque là (mais je ne m'y suis pas penché spécialement), et je n'en avais jamais entendu parler.

    Des témoignages complémentaires ou des liens vers des docs pour confirmer ce point ?
    Ici je parle d'un comportement en ayant positionnée un deux paramétres.

    Pour la doc une simple recherche sur métalink devrait faire l'affaire

  10. #10
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 19
    Par défaut
    Merci à vous tous

    Bon alors pour precisé mon souci, je travaille avec ORACLE 8.1.7 sous UNIX AIX. J'ai 2Go de RAM, et j'ai était confronté à un probléme d'insuffisance de mémoire.

    Donc ce que je peux conclure c'est que meme si tous les paramettre ajusté permettent d'allouer jusqu'a 800Mo pour ORACLE, il se peu que Les processus d'ORACLE consomme plus de 800Mo suivant la comlexité des traitement ???????


    Merci Pour vous tous

Discussions similaires

  1. Réponses: 17
    Dernier message: 02/02/2006, 12h03
  2. gestion de la mémoire
    Par moldavi dans le forum C++
    Réponses: 17
    Dernier message: 04/02/2005, 23h18
  3. Réponses: 11
    Dernier message: 26/12/2004, 22h50
  4. Gestion de la mémoire entre plusieurs DLL
    Par Laurent Gomila dans le forum C++
    Réponses: 7
    Dernier message: 27/07/2004, 15h28
  5. Gestion des variables - mémoire ?
    Par RIVOLLET dans le forum Langage
    Réponses: 4
    Dernier message: 26/10/2002, 12h44

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