Rappels sur la mémoire d’une base Oracle.
La mémoire est composée de 2 zones :
• La SGA (System Global Area) :
C’est cette zone qui assure le partage des données entrent les différents utilisateurs.
Toute donnée lue ou modifiée transite par la SGA.
La mémoire SGA stocke des données telles que des blocs de données en cache et des zones SQL partagées.
• La PGA (Program Global Area) :
Cette zone de la mémoire contient des données et des informations de contrôle pour un processus serveur ou un processus en arrière-plan.
Il s’agit d’une mémoire non partagée qui est créée par Oracle Database au démarrage d’un processus serveur ou processus en arrière-plan.
Son accès est exclusivement réservé au processus serveur.
Chaque processus serveur et processus en arrière-plan dispose de sa propre mémoire PGA.
La SGA (System Global Area)
Voilà les 6 principales zones de la SGA :
o Cache de tampons de la base de données
o Tampon de journalisation
o Zone de mémoire partagée
o Zone de mémoire Java
o Zone de mémoire LARGE POOL
o Zone de mémoire Streams
• Cache de tampons (buffer cache) de la base de données : Il met en mémoire cache les blocs de données extraits de la base.
• Tampon de journalisation (redo log buffer) : Il met en mémoire cache les informations de journalisation (utilisées pour la récupération de l’instance) jusqu’à ce qu’elles puissent être écrites dans les fichiers de journalisation physiques stockés sur le disque.
• Zone de mémoire partagée : Elle met en mémoire cache diverses structures pouvant être partagées par les utilisateurs.
• Zone de mémoire Java : Elle est utilisée pour l’ensemble du code Java et des données propres à la session dans la JVM (Java Virtual Machine).
• Zone de mémoire LARGE POOL : Il s’agit d’une zone facultative fournissant d’importantes allocations de mémoire pour certains processus très consommateurs, tels que les opérations de sauvegarde et de récupération Oracle et les processus serveur d’entrée-sortie.
• Zone de mémoire Streams : Elle est utilisée par Oracle Streams pour stocker les informations nécessaires aux opérations de capture et d’application.
Voilà les paramètres du fichier d’initialisation associés à ces zones
o Cache de tampons de la base de données DB_CACHE_SIZE
o Tampon de journalisation LOG_BUFFER
o Zone de mémoire partagée SHARED_POOL_SIZE
o Zone de mémoire Java JAVA_POOL_SIZE
o Zone de mémoire LARGE POOL LARGE_POOL_SIZE
o Zone de mémoire STREAMS_POOL_SIZE
La PGA (Program Global Area)
La zone PGA est une zone de mémoire qui contient les données et les informations de contrôle d’un seul processus (serveur ou d’arrière-plan) ; elle ne peut être partagée.
Une connexion à une base engendre donc la création d’un processus utilisateur et de sa mémoire associée, la PGA.
En 8i / 9i : Il fallait tailler les paramètres suivants « à la main »
DB_CACHE_SIZE
SHARED_POOL_SIZE
LARGE_POOL_SIZE
JAVA_POOL_SIZE
STREAMS_POOL_SIZE
On parlait de “réglage manuel” de la mémoire
Si on dépassait la taille qui était prévue pour la zone , alors on avait une erreur Oracle .
En 10g , le paramètre d’initialisation SGA_TARGET est apparu.
1er cas : SGA_TARGET = 0 ( ou non défini ) : On marche comme en 8i/9i ( vu plus haut )
2eme cas : Si SGA_TARGET > 0 , On parle de « réglage automatique » de la mémoire
On dit aussi dans ce cas la qu’on est en ASMM (Automatic Shared Memory Management)
Exemple :
Si SGA_TARGET = 540 M (a une valeur , donc est différente de 0 )
Et DB_CACHE_SIZE = 0
SHARED_POOL_SIZE = 0
LARGE_POOL_SIZE = 0
JAVA_POOL_SIZE = 0
STREAMS_POOL_SIZE = 0
La mémoire est automatiquement allouée à la zone qui en a le plus besoin.
Il n’y a pas de taille maximale pour chaque zone.
On peut « Activer » ce réglage automatique avec Entreprise Manager en faisant :
Administration > Memory Parameters et en cliquant sur le bouton
> Automatic Shared Memory Management
Note importante : Le paramètre LOG_BUFFER ne fait pas parti de la liste
Autre exemple : Réglage semi-automatique de la mémoire :
Si SGA_TARGET = 540 M
Et DB_CACHE_SIZE = 4M ( valeur différente de 0 )
SHARED_POOL_SIZE = 200M ( valeur différente de 0 )
LARGE_POOL_SIZE = 0
JAVA_POOL_SIZE = 0
STREAMS_POOL_SIZE = 0
Il y aura toujours une allocation de mémoire de zone à zone mais la valeur précisée pour
SHARED_POOL_SIZE ne pourra jamais descendre sous les 200M.
En 11g , le paramètre d’initialisation MEMORY_TARGET est apparu.
1er cas : MEMORY _TARGET = 0 ( ou non défini ) : On marche comme en 10g ( vu plus haut )
2eme cas : MEMORY _TARGET >0 : On parle aussi de « réglage automatique » de la mémoire
On dit aussi dans ce cas la qu’on est en AMM (Automatic Memory Management)
Exemple :
Si MEMORY_TARGET = 600 M (a une valeur , donc est différente de 0 )
La mémoire est automatiquement allouée entre les 2 paramètres :
SGA_TARGET et
PGA_AGGREGATE_TARGET
On voit donc , que ce soit en 10g ou en 11g , on peut limiter les risques d’erreur en se positionnant dans le mode ASMM(10g, en mettant une valeur pour SGA_TARGET) ou AMM (11g, en mettant une valeur pour MEMORY_TARGET)
Note : Ne pas confondre :
ASMM Automatic Shared Memory Management
AMM Automatic Memory Management
ASM Automatic Storage Management
ASSM Automatic Segment Space Management
3 réflexions sur “Les paramètres de la mémoire Oracle”
Pour en savoir plus sur l’administration de la base de données Oracle, vous pouvez suivre le cours Oracle Database 11g: Administration Workshop I dont le descriptif est accessible sur ce lien : https://easyteam.fr/formation-oracle/Catalogue/oracle-database-11g-administration-workshop-i-D50102
OK j’avais lu trop vite, vous ne parliez que du SGA_TARGET et pas de l’AMM.
Autant pour moi 🙂
>Note importante : Le paramètre LOG_BUFFER ne fait pas parti de la liste
Il semble que ce soit inexact.
http://www.dba-oracle.com/t_log_buffer.htm
« Also note that if you are Oracle’s Automatic Memory Management AMM (AMM is Not recommended for some databases), the log_buffer is part of the memory_target algorithm. »
Les commentaires sont fermés.