Une instance de base de données est un ensemble de processus d’arrière-plans associés à des zones mémoires permettant l’exploitation des données d’une base de données à travers la gestion de buffers.
1- Zone mémoire SGA :
La zone mémoire principale se nomme SGA pour « SYSTEM GLOBAL AREA ».
La taille maximum possible de cette zone est fixée par le paramètre d’init SGA_MAX_SIZE.
La difficulté de bien dimensionner la SGA vient du fait que celle ci possède en son sein d’autres sous zones mémoires qu’il faut égallement dimensionner.
Depuis la version 10g, une évolution majeure est fait en la matière avec le paramètre d’init SGA_TARGET qui donne une taille mémoire globale à Iracle pour la SGA, le moteur de base de données doit lui même affecter cette mémoire dynamiquement à toutes les sous zones de la SGA en fonction de leurs besoins, les détails des sous zones ci dessous n’ont alors plus d’importance.
1.1 Sous zone mémoire PGA de la SGA :
La PGA ou « PROGRAMM GLOBAL AREA » est la zone mémoire utilisée par les processus serveur (dédié ou partagé) d’une instance. C’est en fait la zone mémoire de travail pour toutes les actions éffectuées par les utilisateurs dans leur base de donnée. Les données de la PGA sont en fait les données des processus Oracle qui n’ont pas besoin d’être partagés car dans ce cas précis, les données seront alors stoqueés dans la SharedPool.
La taille de la PGA se fixe avec le paramètre d’init PGA_AGREGATE_TARGET. Toute donnée qu’un processus serveur (ou MTS) ne peut pas stoquer dans cette zone mémoire sera alors stoqué dans un tablespace temporaire.
1.2 Sous zone mémoire Shared Pool de la SGA :
La SharedPool est utilisée pendant la phase d’analyse des ordres SQL passés à un processus Oracle, elle contient principalement le cache du dictionnaire de données (Dictionnary Cache) et le cache de bibliothèques (Library Cache).
La valeur de la SharedPool se fixe avec le paramètre d’init SHARED_POOL_SIZE.
1.2.1 – Dictionnary Cache :
Toutes les informations sur les structures des objets d’une database (tables, index, …) sont stoquées dans ledictionnaire de données. lorsqu’une instance a besoin d’accèder à ces informations, elle les extrait du tablespaceSYSTEM pour les placer dans le Dictionnary Cache dont la méthode de gestion est LRU (Least Recently Used). Les informations les moins fréquament utilisées dans le cache seront détruites au profit des nouvelles insertions.
Remarque: Un mauvais dimensionnement de la SharedPool peut entrainer un ralentissement non négligeable du moteur Oracle qui va passer son temps à vider le cache pour y insérer de nouvelles données, heureusement la modification de SHARED_POOL_SIZE est dynamique et peut être modifié à tout instant du moment qu’il est inférieur à SGA_MAX_SIZE.
1.2.2 – Libray Cache :
Cette zone mémoire a pour put d’optimiser l’utilisation de requêtes SQL fréquement solicitées. Ce cache maintient donc les informations sur les instructions SQL et contient les plans d’exécutions de celles ci.
La gestion du pool est selon le mode LRU comme pour le Dictionnary Cache.
Note: Si la taille de ce pool est trop petite, les instructions SQL et les plans d’exécution seront sans cesse chargés et déchargés ce qui aura un fort impact sur les performances.
1.3 Sous zonne mémoire Buffer Cache de la SGA :
Le BufferCache est la zone mémoire de SGA qui contient un ensemble des blocs de données Oracle dont ont besoin des processus à un instant T.
A compléter.
2 – Zone mémoire Pool Java : A compléter.
3 – Zone mémoire Large Pool : A compléter.
2 – Zone mémoire Stream Pool : A compléter.
