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 :

Erreur 04030, Oracle 8i avec assez de RAM


Sujet :

Administration Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 64
    Par défaut Erreur 04030, Oracle 8i avec assez de RAM
    Bonjour,

    Nous utilisons un serveur Oracle 8i, windows 2003 server, biprocesseur, 4Go de Ram.

    Nos applis tournent en java et attaquent Oracle via JDBC.

    Nous avions jusqu'à présent un probleme d'erreur 04030 : Mémoire de traitement manquante lors de l'allocation de XXX octets quand notre processus Oracle arrivait aux alentours des 1,8 Go.

    Nous avons hier modifié notre code java pour attaquer la base avec des preparedStatements en java à la place des statements utilisés jusqu'à présent.

    Résultat des courses, le serveur monte beaucoup moins en Ram, tout va bien sauf que....
    ...Les erreurs 04030 sont de retour mais cette fois quand oracle utilise environ 900 Mo de RAM.

    Nous n'avons pourtant rien changé d'autre sur le serveur (SGA ni PGA) et il reste évidemment beaucoup de Ram disponible.

    Auriez vous une idée sur l'origine d'un tel problème ?

    Merci à tous.

  2. #2
    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
    Que donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    show sga;
    show parameter sort
    SELECT SUM(value) 
    FROM v$session se, v$sesstat ss, v$statname sn 
    WHERE ss.sid=se.sid 
    AND sn.statistic# = ss.statistic# 
    AND sn.name = 'session pga memory'

    Utilisez-vous beaucoup de PL/SQL et de variables, collections PL/SQL ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 64
    Par défaut
    Merci pour votre aide, voici les informations demandées :

    Show sga
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Total System Global Area 1126508572 bytes
     
    Fixed Size                    75804 bytes
     
    Variable Size             244051968 bytes
     
    Database Buffers          882302976 bytes
     
    Redo Buffers                  77824 bytes





    Show parameter sort
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    NAME                                 TYPE    VALUE
     
    nls_sort                             string
     
    sort_area_retained_size              integer 1548576
     
    sort_area_size                       integer 10548576
     
    sort_multiblock_read_count           integer 2



    SELECT SUM(value)
    FROM v$session se, v$sesstat ss, v$statname sn
    WHERE ss.sid=se.sid
    AND sn.statistic# = ss.statistic#
    AND sn.name = 'session pga memory'


    D'autre part, nous n'utilisons pas de PL/SQL.

    Une précision supplémentaire qui a son importance :
    Hier en plus des modifications du code java pour utiliser les preparedStatements, nous avions ajouté la ligne suivante dans le fichier init.ora:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    USE_INDIRECT_DATA_BUFFERS=TRUE
    Nous pensions que cela était totalement indépendant du probleme que je signale ici, mais en enlevant cette ligne du fichier init.ora, notre limite remonte à 1,8Go.

    Bref, l'utilisation des data buffers indirects a eu pour conséquence de diviser par 2 notre consommation de RAM, mais également de diviser par 2 notre plafond d'utilisation possible de Ram par Oracle.

    Mon problème est donc toujours le même avec ces erreurs 04030 qui viennent de je ne sais ou puisque mon serveur a de toutes facons 3,5Go de RAM.

    N'y a t'il pas un moyen précis d'identifier la cause de ce problème d'allocation de mémoire ?

  4. #4
    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
    Si vous n'utilisez pas de PL/SQL, la cause probable de ORA-04030 est l'utilisation de la PGA pour faire des tris ou des jointures (paramètres SORT_AREA_SIZE et HASH_JOIN_SIZE).

    Combien de sessions concurrentes avez-vous ?
    S'il est faible, il y a peut-être une requête plus consommatrice que les autres qui provoque l'erreur ? Est-ce que l'erreur apparaît systématiquement pour la même action dans l'application ?

    Vous pouvez soit essayez de diminuer les paramètres SORT_AREA_SIZE et HASH_JOIN_SIZE (ce qui va augmenter l'utilisation du tablespace temporaire et les temps de réponse), soit essayer comme vous l'avez fait d'utiliser VLM. Mais cela fait lontemps que Oracle 8i n'est plus supporté ...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 64
    Par défaut
    La base est utilisée pour un site Web, nous ne pouvons pas nous permettre de perdre en performance.
    La limite sur le serveur est à 200 sessions, en pratique nous en avons quelques dizaines en simultanée, mais dès que nous commençons à avoir ces erreurs, cela doit créer un engorgement car nous pouvons nous retrouver dans ces cas là avec les 200 sessions créées.

    Comment se fait il qu'en ayant ajouté l'option USE_DATA_BUFFERS_INDIRECT toutes les consommations et limites de Ram aient été divisées par 2 ?

  6. #6
    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 ne sais pas. D'après Metalink, VLM est supporté par Oracle 8.1.7 mais n'a de sens que si la machine a plus de 4 Go de mémoire et ne peut être utilisé que par le buffer cache de la SGA (la PGA n'est pas mentionnée).

    Sur du Windows 32 bits, un processus ne peut accéder qu'un maximum de 2Go côté utilisateur + 2 Go côté système: ce qui fait bien 2 Go pour SGA + PGA par défaut.

    Il faut peut-être configurer Windows 4 GB RAM Tuning (4GT) qui peut faire passer à 3 Go.

Discussions similaires

  1. [Oracle] Erreur connexion Oracle avec php sous Wamp
    Par tchoukapi dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/04/2012, 15h58
  2. Erreur Oracle XA avec le WAS
    Par ekremyilmaz dans le forum Websphere
    Réponses: 11
    Dernier message: 09/03/2011, 19h32
  3. Oracle 7i avec Windows 7 erreur ORA-09352
    Par tarekos dans le forum Oracle
    Réponses: 0
    Dernier message: 11/03/2010, 14h38
  4. Réponses: 2
    Dernier message: 07/10/2009, 16h06
  5. Réponses: 7
    Dernier message: 03/05/2007, 16h30

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