Page 1
L’instance
Chapitre 2, pages 23 à 33
Page 2
La SGA
- SGA signifie : System Global Area
- C'est une zone de mémoire partagée par les différents processus.
- Sa taille initiale est définie par les paramètres du fichier de paramètres.
- Elle est redimensionnable à chaud.
- Accélère les traitements en gardant en mémoire des informations réutilisables par plusieurs usagers,
plus précisément : données, plans de travail, les instructions
- Permet de ne pas écrire constamment sur le disque et optimise les I/O en regroupant les écritures
qui proviennent souvent des mêmes zones de données.
La SGA est subdivisée en plusieurs sections:
Le cache : Database Buffer Cache (Cache de tampon)
o Contient les blocs de données les plus récemment utilisés (table, index)
o Contient 2 types de bloc :
Lorsqu’un bloc est modifié (ex : UPDATE), il garde une version avant
modification. C’est le segment d'annulation
Valeurs actuelles des colonnes d’une table, d’un index
Le cache : Redo log-Buffer
o Anciennes et nouvelles valeurs des lignes d’une modification dans le buffer
Ensemble de vecteurs, décrivant chaque modification atomique d’un bloc (table,
index ou segment d’annulation). Séquentiel
Le pool : Shared-Pool (pool partagé) :
o Contient deux sous-caches
Le cache: Library-cache
Le cache: Dictionary-cache
o Le shared-pool est dimensionné dans le fichier de paramètres par le paramètre:
SHARED_POOL_SIZE (10 à 100 Mo)
Le Java-pool
o Mémoire utilisée par la machine virtuelle de Java intégrée
Il est possible d’appeler du code Java directement à partir d’une fonction
PL/SQL, par exemple.
Le Large-pool
o Pour les transactions sur plusieurs bases de données
o Opérations de sauvegarde et restauration d’Oracle
o Zone optionnelle
Le Streams-pool
o Gestion du partage de données et d’événements dans un système distribué.
Ex : plusieurs bases de données. Il change les données sur 1 BD source et la
propage sur les autres
Le result Cache
o Cache pour le résultat des requêtes et fonctions PL/SQL
Page 3
Gestion automatique de la mémoire à travers les éléments du SGA et du PGA
Nom : Automatic Memory Management AMM
o Utiliser le paramètre : MEMORY_TARGET
Autrement, il est possible d'activer la gestion dynamique de la SGA. Pour ce faire, dans le fichier
de paramètres, utiliser le paramètre : SGA_TARGET (mémoire totale allouée au SGA)
o Ainsi, les Shared-pool, Large-pool, Java-pool, DataBase-buffer-cache seront ajustés
automatiquement
Mais pas le redo log buffer, ni certains pool du database buffer cache (ex :
DB_RECYCLE_CACHE_SIZE)
Le Shared Pool
Le shared pool (qui est dans le SGA) contient :
Le "Dictionary-cache" (cache de la structure de la base de données)
Utilisé lors de la phase d'analyse de la requête. Permet de vérifier que l'objet existe, et que
l’usager y a accès.
Il contient toutes les informations relatives à la BD : liste des tables, des colonnes, utilisateurs et
leurs droits, …
La majeure partie (ou l’ensemble) du dictionnaire de données est placée en RAM, dans ce cache
mémoire. Il est utilisé pour analyser et pour valider les accès aux usagers, le nom des colonnes
des tables,…)
Le "Library-cache" (ne cache pas le résultat de la requête, mais le résultat de l’analyse de la
requête)
Au début de chaque requête, Oracle doit analyser si la requête est valide. Si c’est le cas, on
sauvegarde l’énoncé de la requête ainsi que le résultat de l’analyse dans la Library cache. Ceci
sauve du temps d’exécution pour les requêtes identiques ultérieures
Utilise le LRU (least recently used)
Partagé entre tous les usagers
o Donc réutilisable d’un usager à un autre.
o Utilisation de variables "bind" : «SELECT * FROM emp WHERE id = :v; »
Voir p.25 du livre Oracle 11g Administration sur notion de requêtes identiques.
Exemple :
Le résultat de l'analyse du texte «SELECT Sal FROM Emp WHERE NoEmp = 10;» est conservé
(Syntaxe ok? Colonnes et tables existantes?), ainsi que son plan d’exécution (boucle jusqu’à la
découverte de NoEmp=10).
Le texte «Select * FROM Emp;» EST DIFFÉRENT DE
«SELECT * from EMP;»
Page 4
Le "Database-Buffer cache" (cache de données)
But : garder en mémoire les blocs de données qui pourraient être utilisées.
Ce sont les blocs de données (tables, indexes..) les plus récemment utilisés (SELECT,
UPDATE, INSERT….) par TOUS LES USAGERS.
Utilise LRU
Il conserve les blocs de segments d'annulation (pour un éventuel ROLLBACK) contenant la
version précédente des données en cours de modification
Ce cache est dimensionné dans le fichier de paramètres par le paramètre: DB_CACHE_SIZE
Le "RedoLog-buffer" (cache de journalisation)
Ce cache garde en mémoire les informations sur les modifications apportées à la BD.
Anciennes et nouvelles valeurs des lignes d’une modification dans le buffer.
Ce cache est dimensionné dans le fichier de paramètres par le paramètre: LOG_BUFFER
Le PGA
Program Global Area (mémoire privée des processus utilisateurs)
Cette section de la mémoire est dimensionnée par le paramètre: PGA_AGGREGATE_TARGET
Utilisé pour :
o Les tris
o Informations de session (permission, droits, ...)
o Les variables de session (ex : lorsque vous êtes connectés à SQL*PLUS)
Les processus serveurs
- Chaque processus serveur assure le lien entre une application et la base de données.
Dès qu'une application demande l'accès à l'instance ORACLE, un processus serveur analyse la requête
et s'occupe de vérifier que les données sont présentes dans le Database Buffer Cache. Si les
données ne sont pas en cache, le processus serveur vérifie les droits (profil et privilèges) puis fait la
lecture dans les fichiers de données.
- Il y deux mode de fonctionnement possibles et présents simultanément
o Un processus dédié par usager/connexion
o Un processus partagé par plusieurs usagers/connexions. Dans ce cas une partie de la
PGA est stocké dans le Large Pool
Page 5
Le mécanisme de synchronisation
- Périodiquement, tous les blocs des fichiers de données modifiés (dirty) sont écrits dans les fichiers de
données. Ceci est le mécanisme de synchronisation.
- Pour ce faire, il y a les concepts suivants :
o SCN (System Change Number) : Numéro incrémenté à chaque validation de transaction
(COMMIT) effectuée par un usager ou par un processus Oracle.
o Point de reprise : Numéro qui correspond au SCN du bloc le plus ancien modifié dans la
cache de données, mais qui n’a pas encore été écrit dans les fichiers de données.
- La synchronisation est déclenchée :
o Lors d’un basculement,
o de l’arrêt de la BD,
o mise hors ligne d’un tablespace.
- Lors d’une synchronisation, le mécanisme :
o déclenche le DBWn qui écrit les blocs modifiés (dirty) dans les fichiers de données.
o bloque le LGWR s’il vient pour écraser un groupe de journalisation dont la
synchronisation n’est pas encore terminée par le DBWn.
Processus d’arrière-plan
DBWn : Database Writer
LGWR : Log-Writer
CKPT : Checkpoint
SMON : System Monitor
PMON : Process Monitor
ARCn : Archiver
CJQn : Job Queue
Le processus «Database Writer» (DBWn)
- Le processus DBWn est responsable, au moment opportun, du transfert des données modifiées de
la Database Buffer Cache vers les fichiers de données.
- S'appui sur l'algorithme LRU ("Least Recently Used") qui permet d'effectuer rapidement des
réaménagements pour libérer de l'espace en RAM.
- Bref, on prend ce qui a dans le database buffer cache et transfert vers les fichiers de données
o L’écriture arrive quand :
Plus de place disponible dans le cache
Périodiquement, pour faire avancer le point de reprise (position dans les fichiers
de journalisation à partir de laquelle la récupération de l’instance est
susceptible de démarrer). Cela permet de réduire le temps de récupération
après une panne.
On parle de synchronisation. Celle-ci est déclenchée après un logswitch.
- Donc l’écriture est différée et n’est pas nécessairement déclenchée lors d’un COMMIT
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !