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 :

probléme de mémoire SGA dans Oracle


Sujet :

Oracle

  1. #1
    Débutant
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Points : 106
    Points
    106
    Par défaut probléme de mémoire SGA dans Oracle
    Bonjour,

    Je me conncet dans ma base Oracle, et j'ai le message : ORA-04031: unable to allocate num bytes of shared memory num, num, num.
    En verifiant chez le Doc Oracle, il s'agit d'augmenter le paramétre shared_pool_size.Chose que j'ai faite mais ça me dit : Insuffisence de mémoire pour augmenter ce paramétre.Et là , j'essaie d'augmenter le SGA_max_size par :
    ALTER SYSTEM SET SGA_MAX_SIZE
    mais il me dit quece paramétre ne peut pas être modifié.Il parait que c'est pas la commande appropriée dans Oracle 8i là ou je suis.
    Je vous demande de m'aider pour trouver un solution

  2. #2
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Points : 121
    Points
    121
    Par défaut
    Bonjour,

    J'en profite de ce message pour y donner mon expérience.

    Je rencontre le meme probleme sous ma ebusiness suite , et base 9i. Nous tournons avec un serveur Windows (grosse erreur).

    D'apres ce que j'ai compris (sous windows du moins) :
    Le process oracle.exe supporte plein de connexions utilisateurs, qui sont les thread du process oracle.exe.

    Dans le gestionnaire de tache, tu peux afficher la VM Size de chaques process.

    Windows 2000 Server, ne sais coder la VM Size de chaque process sur 32 Bits, ce qui te fera qu'environ 2Go de mémoire allouable pour ton process oracle.exe

    L'erreur ORA-0403, est provoqué lorsque ORACLE ne peux plus se voir alloué de la mémoire. Donc le fait d'augmenter la SGA ou autre peut résoudre ton probleme, mais il faut que tu t'assures que tu n'atteigne pas une limite imposée par l'OS ...

    A savoir que la somme de la VM Size du process oracle.exe = SGA + PGA + autres éléments dont je ne me souviens plus

  3. #3
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    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 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par madina
    Bonjour,

    Je me conncet dans ma base Oracle, et j'ai le message : ORA-04031: unable to allocate num bytes of shared memory num, num, num.
    En verifiant chez le Doc Oracle, il s'agit d'augmenter le paramétre shared_pool_size.Chose que j'ai faite mais ça me dit : Insuffisence de mémoire pour augmenter ce paramétre.Et là , j'essaie d'augmenter le SGA_max_size par :
    ALTER SYSTEM SET SGA_MAX_SIZE
    mais il me dit quece paramétre ne peut pas être modifié.Il parait que c'est pas la commande appropriée dans Oracle 8i là ou je suis.
    Je vous demande de m'aider pour trouver un solution
    Bonjour

    Pour éviter que le sujet ne fasse éclore des hypothèses sans rapport avec la situation réelle, soyez aussi précis que possible :
    - version exacte d'Oracle (un patch pourrait éventuellement suffire à régler votre problème)
    - citez les codes et les libellés exacts des erreurs
    - précisez les commandes exactes utilisées, avec leurs valeurs numériques réelles
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 414
    Points : 671
    Points
    671
    Par défaut
    La shared pool size est la zone mémoire qu'utilise Oracle pour ses plans d'exécution des requetes.

    Si il te dit que la zone est trop petite, c'est qu'il ne parvient pas à allouer suffisamment d'espace pour stocker la requete SQL et lui préparer un plan d'éxecution.

    Ce problème était assez fréquent en 7.3 mais moins depuis.

    En fait, comme le dit guigui, tu peux agrandir ta zone Shared Pool Size (paramètres shared_pool_size et large_pool_size dans spfile). Il est peut etre sous taillé....

    Ce problème peut venir aussi d'un grand nombre de requetes différentes. Par exemple, préférer les requetes prepared qui vont permettre à Oracle de réutiliser les infos dans la Shared Pool.
    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    1 . select id from table1 where titre=? ;
    2 . select id from table1 where titre='toto';
    3 . select id from table1 where titre='titi';
    Dans le cas 1, Oracle peut réutiliser la Shared Pool autant de fois que la requete sera utilisée avec le paramètre titre à n'importe quelle valeur (toto,titi,etc...)
    Dans les 2 autres cas, Oracle doit allouer 2 zones mémoire dans la Shared Pool pour finalement une meme requete et un même plan d'exécution de requete.

    Ca pourrait éventuellement venir de construction de requetes SQL de manière dynamique avec une boucle applicative qui fait des UNION et qui construit des requetes monstrueuses...

    Dans un premier temps, tu peux agrandir la zone mais je pense qu'une analyse complémentaire doit être faite sur les requetes qui tournent sur la base.

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    SGA_MAX_SIZE peut être modifié uniquement via initfile.

  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
    Points : 3 798
    Points
    3 798
    Par défaut
    SGA_MAX_SIZE peut être modifié uniquement via initfile.
    pas tout à fait vrai
    ce paramétre peut être modifié via init ou SPFILE
    via SPFILE il suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter system set sga_max_size=VAleur  scope=spfile;
    par contre tout comme l'init il faut effectuer une redémarrage de la base de données

Discussions similaires

  1. Problème insertion données arabe dans Oracle
    Par harakat21 dans le forum Oracle
    Réponses: 2
    Dernier message: 24/08/2011, 11h56
  2. Problème avec isqlplus dans oracle 10g R2
    Par karim1010 dans le forum Administration
    Réponses: 3
    Dernier message: 29/05/2010, 20h18
  3. Réponses: 2
    Dernier message: 14/05/2007, 10h45
  4. Problème avec le type BLOB dans oracle
    Par pguedia dans le forum Oracle
    Réponses: 1
    Dernier message: 10/11/2005, 17h33
  5. [oracle][delphi] Problème format de date dans une requete
    Par le_parrain dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/07/2005, 10h12

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