Oracle - La gestion de la mémoire
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
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 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).