Oracle - La gestion de la mémoire

Décembre 2016

L'utilisation de la mémoire par Oracle.

Oracle fait un usage poussé de la mémoire physique (RAM, Random Access Memory) du serveur afin de fournir les meilleures performances possibles.
Ainsi Oracle utilise la mémoire physique du serveur pour :

  • accélérer l'accès aux données de la base régulièrement accédées
  • mettre les processus en mémoire
  • optimiser la communication entre les processus et la base de données
Ainsi la taille de la mémoire vive du serveur est primordiale pour la performance de la base de données. En effet, lorsqu'il n'y a plus de mémoire physique disponible, le système d'exploitation met à disposition de l'application une mémoire dite "virtuelle" composée de fichiers d'échange (fichiers swap) sur le disque du serveur. Or l'accès au disque dur est extrêmement plus long que l'accès à la mémoire physique, ce qui provoque des ralentissements notables dans le fonctionnement de la base de données Oracle.

Dans une base de données Oracle on distingue généralement deux zones mémoire :

  • La zone SGA (System Global Area) assurant le partage des données des différents utilisateurs, c'est-à-dire qu'il s'agit de la zone contenant les structures de données accessibles par tous les processus
  • La zone PGA (Program Global Area) permettant le fonctionnement des divers processus (afin de stocker toutes les données ne nécessitant pas d'être partagées).
La SGA (appelée aussi mémoire réservée) est composée de plusieurs constituants :
  • La Shared Pool (ou zone partagée) contenant des informations pouvant être réutilisées par les différents utilisateurs, c'est-à-dire les requêtes SQL et programmes PL/SQL pouvant être partagés, le dictionnaire de données, les curseurs, ... D'une manière générale, cette zone sert à mémoriser, analyser et traiter les requêtes SQL provenant des divers utilisateurs.
  • Le Db block buffer (Database Buffer Cache ou cache des blocs de données) est un espace mémoire contenant toutes les données transitant de ou vers la base de données : blocs de données, blocs d'index et blocs contenant les ROLLBACK SEGMENTS. Il s'agit donc d'un cache permettant d'accélérer l'accès à certaines données de la base.
  • Le Redo Log buffer (ou cache Redo-log) contient les blocs de données (appelés Redo Entries) à modifier et les modifications à effectuer sur ces données, avant que l'ensemble de ces mises à jour de la base ne soient archivées dans les fichiers Redo-log

La SGA et les processus d'arrière plan constituent ce que l'on appelle une instance; A chaque démarrage d'une instance, l'espace mémoire nécessaire à son bon fonctionnement lui est alloué, et est restitué lors de sa fermeture.

L'ensemble des tailles des caches peut être modifié (augmentée ou diminuée) grâce aux paramètres du fichier d'initialisation (initSID.ora).


A voir également :

Ce document intitulé «  Oracle - La gestion de la mémoire  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.