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
primordial 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ée, et est
restituée lors de sa fermeture.
L'ensemble des tailles des caches peut être modifiée (augmentée
ou diminuée) grâce aux paramètres du fichier d'initialisation
(initSID.ora).
L'espace de stockage d'une base de données Oracle est divisé en
plusieurs unités logiques de stockage appelées "tablespaces",
à chacune desquelles correspond au moins un fichier physique.
Ces tablespaces sont eux-mêmes divisés en sous-espaces logiques
de stockage appelés segments. Ces segments sont alloués
spécifiquement à des structures de données précises (segments de
table, segments d'index, segment de rollback, ...). Ces segments
sont composés d'un ou plusieurs extents, un extent étant un
ensemble de blocs oracle contigus. Enfin un bloc Oracle est
composé d'un ou plusieurs blocs physiques (leur taille étant définie
par le système de fichier local). Ainsi grâce à ces tablespaces,
les espaces de stockage peuvent être géré de façon logique.
*Une
annotation est un commentaire d'un membre dont le but est
d'approfondir le sujet de l'article. Cela peut être une
remarque, un éclaircissement, ou bien une suggestion de liens
appropriés.
© Copyright 2001 Jean-François Pillou
Ce document issu de CommentCaMarche.net est
soumis à la licence
GNU FDL. Permission vous est donnée de distribuer, modifier des
copies de cette page tant que cette note apparaît clairement.
|