Administration des bases de données relationnelles Part I

publicité
A d mi n i s t r a t i o n B a s e d e D o n n é e s
2011-2012
Administration des bases de données relationnelles
Part I
L’administration des bases de données requiert une bonne connaissance
- de l’organisation et du fonctionnement interne du SGBDR : structures logiques et physiques,
architecture fonctionnelle
- des outils de surveillance et d’administration disponibles
1 - Structures logiques et organisationnelles
1.1 - Le Dictionnaire de données
Une fonction essentielle du SGBDR est de permettre la description des 3 niveaux préconisés par l’architecture
ANSI/SPARC : logique, interne, externe. La description de ces différents niveaux et la correspondance entre eux
se fait via le Dictionnaire de Données.
Le Dictionnaire de Données recense tous les objets ainsi que toutes les informations relatives à la définition et à
l’exploitation de la base de données; il fournit des informations telles que :
- le nom des utilisateurs
- les privilèges et rôles attribués à chaque utilisateur
- le nom des différents objets logiques de la base (tables, vues, index, clusters, ...)
- des informations relatives aux contraintes d’intégrité
- les valeurs par défaut à utiliser dans les colonnes
- espaces alloués aux différents objets, espace couramment utilisé par les objets
- informations d’audit telles que ‘qui a accédé ou modifié un objet’.
Les tables et vues du dictionnaire des données ne sont accessibles qu’en lecture.
Exemple de Oracle
Principaux types de vue du dictionnaire de données
Préfixe de la vue
all
user
dba
v$
Description
Informations sur tous les objets accessibles à l’utilisateur
Exemples
all_users : liste de tous les
utilisateurs de la base
Informations sur tous les objets appartenant à un utilisateur user_tables : informations sur les
tables de l’utilisateur
Similaire à « user » mais pour tous les utilisateurs
dba_tables : toutes les tables de
la base
Vues dynamiques générées par le SGBDR au cours de son v$SGA : description de la SGA
fonctionnement : informations sur les performances, l’état
des fichiers, la mémoire utilisée
1.2 - Les structures logiques d’une base de données
1.2.1 - Objets logiques d’une base de données relationnelle
Table : structure relationnelle qui décrit une entité ou une relation entre entités d’un univers réel. C’est la
représentation d’une relation au sens du modèle relationnel.
D’un point de vue logique la table est l’unité de stockage de base. Elle contient les données accessibles à
l’utilisateur.
Vue : table virtuelle générée à partir des tables de la base de données par une requête. Elément du schéma externe,
la vue n’a pas d’existence physique, ce qui ne l’empêche pas d’être accédée de la même façon qu’une table.
Utilisations les plus fréquentes des vues :
- fournir un niveau supplémentaire de sécurité en restreignant l’accès d’une table à certaines colonnes
- masquer la complexité de la base, en regroupant des données provenant de plusieurs tables
- présenter les données de façon personnalisée par rapport à l’usage
- stocker des requêtes complexes
P.1
A d mi n i s t r a t i o n B a s e d e D o n n é e s
2011-2012
Séquences : objet de la base de données générant des numéros uniques pour des colonnes numériques de tables de
la base. Chaque rangée de table possède un numéro unique pour la colonne concernée.
L'ordre de création d'une séquence (CREATE SEQUENCE) permet de définir optionnellement: une
valeur de départ, une valeur d'incrément ou de décrément, une valeur maximum (pour une séquence
incrémenté) ou minimum (pour une séquence décrémenté), la taille du cache contenant plusieurs
valeurs d'avance, la possibilité de revenir à la valeur de départ (CYCLE) après avoir atteint la valeur
max ou min. Quand ces options ne sont pas utilisées, le SGBDR utilise ses valeurs par défaut.
On utilise une séquence en la référençant via les ordres SQL de mise à jour INSERT, UPDATE..
Exemple:
Création sous PostgreSql
CREATE SEQUENCE serial START 101 ; crée la séquence "serial" commençant à 101
Utilisation sous PostgreSql
SELECT CURRVAL(serial); la fonction CURRVAL fournit la valeur courante de la séquence
INSERT INTO ……VALUES(... NEXTVAL(serial)); la fonction NEXTVAL permet d’obtenir
une nouvelle valeur dans la séquence
Création sous Oracle :
CREATE SEQUENCE serial START WITH 101 ; crée la séquence "serial" commençant à 101
Utilisation sous Oracle :
select serial.currval from dual; la pseudo-colonne "currval" fournit la valeur courante de la
séquence (la table "dual" est l'emplacement dans lequel Oracle stocke les différentes séquences)
INSERT INTO ……VALUES(... serial.NEXTVAL); la pseudo-colonne "nextval" permet
d’obtenir une nouvelle valeur dans la séquence
Procédure : ensemble nommé de commandes stockées dans la base
Fonction : ensemble nommé de commandes stockées dans la base et retournant une valeur
Triggers : programme associé à une table. C’est une procédure stockée dans la base de données qui est exécutée
soit à l’occurrence d’un événement donné, soit à l’occurrence d’une condition donnée sur la table.
L'ordre CREATE TRIGGER permet de spécifier :
- la table à laquelle est attaché le trigger
- l'instruction sur laquelle se déclenche le trigger (INSERT, UPDATE, DELETE)
- le moment, par rapport à l'instruction, d'éxécuter le code associé : avant l'instruction (BEFORE),
après l'instruction (AFTER), à la place de l'instruction (INSTEAD OF, utilisable uniquement sur des
vues)
- la condition d'exécution du trigger (WHEN expression_logique)
- le code à exécuter, soit en le spécifiant directement dans l'ordre, soit en référençant une procédure
existante
Le code à exécuter est écrit en PL/SQL, le langage procédural du SGBDR.
Index : structure contenant pour chaque ligne d’une table l’adresse physique à laquelle se trouvent les valeurs de
cette ligne. L’index permet un accès direct à l’information, donc un accès plus rapide.
Le SGBDR crée automatiquement un index associé à la clé primaire d'une table.
L'ordre CREATE INDEX permet à l'administrateur de créer explicitement de nouveau index.
Le type d’index généralement utilisé dans les SGBDR est le BTREE et ses variantes.
Principe du BTREE (Balance Tree = arbre équilibré) : il s'agit d'un arbre dont toutes les feuilles sont au
même niveau; chaque nœud contient des clés triées par ordre croissant et des pointeurs; un pointeur
interne désigne un fils dans l’arbre; un pointeur externe désigne les données (adresse physique). La
recherche se fait en partant de la racine, et en comparant la valeur recherchée aux valeurs de clé du
noeud. Si la valeur recherchée est inférieur à la première valeur du noeud on poursuit via le premier
pointeur interne, sinon, si elle est comprise entre la première valeur et la suivante, on poursuit en utilisant
le pointeur correspondant; et ainsi de suite. Cette technique permet de retrouver beaucoup plus
rapidement une clé qu'en accès séquentiel.
P.2
A d mi n i s t r a t i o n B a s e d e D o n n é e s
2011-2012
Exemple d’arbre B d’ordre 2:
L'arbre B+ est une variante de l'arbre B qui limite les pointeurs externes au seuls noeuds terminaux
(feuille de l'arbre); les noeuds intermédiaires n'ayant que des pointeurs internes. Par ailleurs des pointeurs
internes sont définis entre noeud de même niveau. Les principes de recherche et d'insertion sont les
même que pour l'arbre B.
Exemple d’arbre B+ d’ordre 4 :
« Ordre » d’un arbre B
Dans un arbre B d’ordre N, à l’exception de la racine, le nombre de clés par nœud est compris entre N et
2N ; et le nombre de fils d’un nœud est compris entre N+1 et 2N+1. Pour la racine le nombre de fils est
compris entre zéro et 2N+1.
P.3
A d mi n i s t r a t i o n B a s e d e D o n n é e s
2011-2012
« Ordre » d’un arbre B+
Dans un arbre B+ d’ordre N, tout nœud interne possède un nombre de fils compris entre N/2 et N ; le
nombre de clés est toujours égal au nombre de fils -1.
Mise à jour du BTREE
En contre-partie, l'insertion d'une nouvelle valeur peut être relativement complexe et lourde. On cherche
à insérer la nouvelle clé dans le noeud terminal adéquate; si après cette insertion le nombre de clés du
noeud devient supérieur au maximum déterminé par l'ordre de l'arbre, il faut migrer la clé intermédiaire
au niveau supérieur de l'arbre et reprendre le processus d'insertion. La suppression d'une clé est d'une
complexité équivalente.
Autres types d’index dans les SGBDR
Le « hachage » (ou hashing en anglais) est une autre technique utilisée pour l’indexation. Elle consiste à
appliquer à la clé une fonction de calcul qui détermine une adresse relative pour stocker l’enregistrement
correspondant. Une méthode de chaînage vient compléter la technique en cas de collision (même résultat
de hachage pour des valeurs de clé différentes). Ce type d’index n’est pas adapté aux clés triées, et n’est
pas adapté à la recherche multicritère.
La technique du bitmap est destinée à indexer sur des attributs ayant peu de valeurs distinctes. On
associe un indice à chaque valeur possible. Le bitmap est constitué d’une matrice dans laquelle la
position (i,j), valorisée à 1, indique que l’enregistrement i possède la valeur d’indice j. L’index bitmap
est plus particulièrement utilisé pour indexer des attributs multivalués, pour indexer sur plusieurs
attributs, ou sur plusieurs valeurs d’un même attribut.
PostgreSql implémente 3 méthodes d’accès: BTREE par défaut, RTREE, et HASH
Oracle utilise l’arbre-B+, ainsi que le bitmap dans la mise en œuvre du datawarehouse (=entrepôt de
données à visée décisionnelle dans lequel les données ne sont plus modifiées).
Cluster : regroupement physique de lignes de plusieurs tables ayant un lien entre elles. L’objectif est de rendre
plus rapide l’accès à des données fréquemment accédées ensemble (jointure).
Le cluster apporte également un gain en stockage.
Exemple de regroupement de deux tables Pilote(numpil, nompil, prenpil, villpil, salairpil) et Vol(numvol,
numpil, numavion, villdep, villarr, heurdep, heurarr) sur l’attribut numpil
100
200
DUPONT
256
305
266
278
PAUL
100
100
100
100
NICE
50
60
50
58
4500
NICE
BORDEAUX
PARIS
PARIS
PARIS
PARIS
NICE
TOULOUSE
1100
0900
1900
2000
1230
1030
2030
2100
DUPONT
285
345
286
208
PAUL
200
200
200
200
NICE
59
68
59
99
4500
LYON
RENNES
PARIS
PARIS
PARIS
PARIS
LYON
MARSEILLE
1100
0900
1900
2000
1230
1030
2030
2100
1 Bloc de
cluster
Depuis la version10, un « hash cluster » relatif à une table unique peut être créé pour stocker ensemble
les lignes correspondant à une même valeur de la fonction de hashing associé. L’objectif demeure
toujours le même : accélérer l’accès aux données.
Schéma : c’est l’ensemble des objets logiques d’un utilisateur ou groupe d’utilisateurs
P.4
A d mi n i s t r a t i o n B a s e d e D o n n é e s
2011-2012
1.2.2 - Structures logiques du SGBDR Oracle
Ces différentes structures logiques sont :
- les tablespaces
- les segments
- les extensions
- les blocs
Ces éléments permettent de définir la façon dont sont organisées les objets de la base de données.
Ils sont le lien entre le niveau physique et le niveau purement logique de la base de données.
Les Tablespaces
Une base de données Oracle est composée d’un certain nombre de partitions logiques appelées
Tablespace.
Un tablespace regroupe un ensemble d’objets logiques (table, index,...).Chaque objet logique de la base
doit être associé à un seul tablespace.
Une base de données doit avoir au moins un tablespace appelé SYSTEM qui contient le dictionnaire de
données.
Il est fortement conseillé de créer au moins un deuxième tablespace pour stocker les objets de la base.
BASE DE DONNEES
SYSTEM
Tablespace
APPLI_1
TableSpace
APPLI_2
TableSpace
Depuis la version 9, les tablespaces suivants sont fortement recommandés : TEMP, TOOLS, UNDO
Le tablespace est constitué d’au moins un fichier de données (Data File).
Depuis la version 8, la gestion des tablespaces peut être soit local (informations de stockage en en-tête du
tablespace), soit par le dictionnaire (informations de stockage dans le dictionnaire).
Exemples :
Créer un tablespace
Create tablespace data01
Datafile `g:\oracle\oradata\orafrance\data01.dbf` size 100M ;
Associer une table à un tablespace
Create table T-ex1 ( … ) tablespace data01;
Les Blocs
Oracle permet un contrôle fin de l’espace disque selon 3 niveaux de granularité : le bloc de données,
l’extension, et le segment.
SEGMENT
EXTENSION_1
EXTENSION_2
Bloc
Bloc
Bloc
Bloc
Bloc
Bloc
Bloc
Bloc
Bloc
Bloc
P.5
A d mi n i s t r a t i o n B a s e d e D o n n é e s
2011-2012
Le niveau le plus fin de granularité est le bloc de données; c’est donc la plus petite unité logique de
stockage allouée par Oracle; c’est également la plus petite unité logique d’E/S de la base de données.
Bien que Oracle n’utilise pas les blocs système, la taille du bloc de données Oracle (paramètre
DB_BLOCK_SIZE dans init.ora) doit être un multiple de la taille du bloc système (OS block size).
Cette taille varie généralement de 2 à 4Kbytes.
Le format d’un bloc de donnée est le même quelque soit ce qu’il contient (table, index, clusters, ...).
En_tête
Répertoire des tables
Répertoire des lignes
Espace Libre
Données
- en-tête
- Répertoire des tables
- Répertoire des lignes
- Espace libre
- Données
: informations générales : adresse du bloc, type de segment
: informations sur les tables ayant des lignes dans ce bloc
: informations (incluant adresses des fractions de rangées dans la zone
de données) sur les lignes présentes dans le bloc
: espace libre pour insérer de nouvelles lignes ou mettre à jour des
lignes quand de l’espace supplémentaire est requis
: données des tables ou des index
Gestion de l’espace libre : PCTFREE, PCTUSED
PCTFREE et PCTUSED sont deux paramètres utilisables dans les commandes de création et
modification de tables et d’index.
PCTFREE : pourcentage d’espace devant rester libre pour la mise à jour des lignes déjà
présente dans le bloc. Quand l’espace libre devient inférieur à PCTFREE, le bloc est sorti de
la freelist.
PCTUSED : pourcentage au dessous duquel doit redescendre le taux d’occupation du bloc,
après que PCTFREE ait été atteint, pour que l’insertion de nouvelles données soit à nouveau
autorisée (retour dans la freelist).
FREELIST : liste des blocs dans lesquels Oracle peut écrire des données. Un bloc sort de la
freelist dès que son espace libre devient inférieur à PCTFREE%. Il y retourne dès que le
niveau d'occupation redescend en dessous de PCTUSED% : en cas de DELETE de lignes ou
d'UPDATE avec des valeurs plus petites.
P.6
A d mi n i s t r a t i o n B a s e d e D o n n é e s
2011-2012
Espace
Libre
100%
PCTUSED
40%
PCTFREE
15%
Temps
Insertion
autorisée
Insertion
interdite
Insertion
autorisée
Les Extensions Oracle
L’extension est un ensemble de blocs alloués simultanément à un segment.
Le segment est créé avec une extension initiale.
Quand l’espace initial est totalement utilisé, Oracle alloue une nouvelle extension (extension
supplémentaire).
La clause STORAGE (commande création de table/index/tablespace) permet de spécifier :
- la taille en octet de l’extension initiale (INITIAL=)
- la taille en octet de la seconde extension (NEXT)
- le nombre d’extensions alloués à la création
- le nombre maximum d’extension pouvant être allouées
- le pourcentage d’accroissement de l’extension(i+1) par rapport à l’extension (i).
Exemple :
STORAGE (INITIAL 100k NEXT 100k MINEXTENT 1 MAXEXTENT 5 PCTINCREASE 50)
→ 1ère extension (initiale)
→ 2ème extension
→ 3ème extension
→ 4ème extension
→ 5ème extension
:
:
:
:
:
100k
100k
(100*1.5)=150k
(150*1.5)=225k
(225*1.5)=337k
Ces paramètres pouvant être définis à plusieurs niveaux, la priorité est la suivante :
prise en compte au niveau de l’objet si définis à ce niveau
sinon prise en compte au niveau tablespace si définis
sinon prise en compte valeur par défaut d’Oracle
P.7
A d mi n i s t r a t i o n B a s e d e D o n n é e s
2011-2012
Les Segments Oracle
Un segment est un ensemble d’extensions qui contient un objet logique (table, index)
4 types de segments :
→ segments de données :
pour stocker les données des tables utilisateur, des tables système, et des clusters
Oracle attribut automatiquement un segment à une table au moment de sa création (CREATE
TABLE). C’est également un segment de données qui est attribué à un cluster au moment de sa
création.
→ segments d’index :
pour stocker les index séparément des données.
Oracle attribut automatiquement un segment à un index au moment de sa création (CREATE
INDEX).
NOTE : il est recommandé de créer l’index dans un tablespace distinct de celui de la table
associée.
→ segments d’annulation ou Rollback Segments :
pour enregistrer les actions effectuées dans les transactions, et ce dans le but de défaire
éventuellement la transaction.
Oracle utilise les Rollback segments pour
- assurer la cohérence de lecture (Read Consistency)
- réaliser l’annulation de transaction (Rollback)
- restaurer la base de données
Les rollback segments ne sont pas accessibles aux utilisateurs et administrateurs de la base. Seul
Oracle peut y accéder en lecture/écriture.
Dans une entrée de rollback segment, Oracle enregistre entre autre des informations sur le bloc
de données correspondant aux données modifiées, et les données elles-même avant une action de
la transaction. Toutes les entrées créées sont liées de telle sorte qu’Oracle retrouve facilement
l’enchaînement d’actions d’une transaction.
→ segments temporaires :
espace de travail d’Oracle pour le traitement des requêtes SQL le requérant :
- CREATE INDEX
- SELECT ... ORDER BY
- SELECT DISTINCT
- SELECT .... GROUP BY
- SELECT .... UNION
- SELECT .... INTERSECT
- SELECT .... MINUS
Si un tablespace spécifique n’a pas été défini pour les segments temporaires d’un utilisateur,
c’est le tablespace SYSTEM qui est utilisé pour ces derniers (ce qui est fortement déconseillé).
Un segment temporaire est désalloué dès la fin de la requête qui l’utilisait.
1.3 - Structures physiques d’une base de données
Ce sont des fichiers, supports physiques de stockage des données.
1.3.1 - Structures physiques du SGBDR Oracle
Oracle gère des fichiers au format propriétaire :
- data file : pour les données
- redolog file : pour l’historique des modifications
- control file : pour des informations de contrôle telles que nom de la base, date de création de la
base, emplacement fichiers log, ….
P.8
A d mi n i s t r a t i o n B a s e d e D o n n é e s
2011-2012
1.3.2 - Structures physiques du SGBDR PostgreSql
Dans PostgreSql : ces fichiers sont dans le répertoire /var/lib/pgsql/data (pg_database, pg_group, pg_hba_conf,…)
1.3.3 - Correspondance entre les structures logiques et physiques d’une base de données Oracle
P.9
A d mi n i s t r a t i o n B a s e d e D o n n é e s
2011-2012
2 - Architecture fonctionnelle
2.1 – Architecture générique d’un SGBDR
Les fonctions principales d’un SGBDR sont
- d’une part de stocker les données dans la base de données (structures logiques et physiques)
- d’autre part de restituer ces données à la demande.
Concernant la restitution des données, on peut décomposer le fonctionnement du SGBDR en plusieurs étapes.
Voici le modèle d’architecture fonctionnelle qui en découle :
ANALYSEUR
- analyse syntaxique
- analyse sémantique
TRADUCTEUR
Dictionnaire
des
données
- modification requête
- contrôle d’intégrité
- contrôle d’autorisation
OPTIMISEUR
- Ordonnancement
- Optimisation
- Elaboration plan optimisé
EXECUTEUR
- Exécution plan
- Contrôle conccurrence
- Atomicité des transactions
BD
Déroulement des étapes de fonctionnement :
Etape1- Etape de vérification syntaxique de la requête, en adéquation avec le langage SQL, pour comprendre ce que
l’utilisateur demande.
La phase essentielle est la normalisation des prédicats qui consiste à mettre les expressions logiques de la requête
sous forme normale disjonctive (= disjonction de conjonctions) ou conjonctive (= conjonction de disjonction), i.e.
(p1 ∧ p2 ∧ p3 …. ∧ pn) ∨ .... ∨ (q1 ∧ q2 ∧ q3 …. ∧ qm)
ou (p1 ∨ p2 ∨ p3 …. ∨ pn) ∧ .... ∧ (q1 ∨ q2 ∨ q3 …. ∨ qm)
Exemple :
SELECT libelle FROM produit P, stock S
WHERE P.prod = S.prod AND adr = “Paris” AND (qte = 1000 OR qte = 2000);
Forme disjonctive de l’expression logique :
(p.prod = s.prod ∧ adr = “Paris” ∧ qte = 1000) ∨ (p.prod = s.prod ∧ adr = “Paris” ∧ qte = 2000)
Forme conjonctive de l’expression logique :
p.prod = s.prod ∧ adr = “Paris” ∧ (qte = 1000 ∨ qte = 2000)
Etape2- pour s’assurer que les données demandée soient disponibles pour l’utilisateur, une étape de vérification sémantique
qui s’appuie sur le dictionnaire des données. Cette étape vérifie également que les expressions utilisées sont
correctement typées. La requête est alors traduite en format interne, i.e les noms sont remplacés par des références
internes.
Etape3- la requête en format interne est ensuite traduite en une ou plusieurs requêtes référençant directement des objets de la
base : remplacement des références aux objets de la vue utilisateur par leur définitions en terme d’objet du schéma
logique; c’est l’étape de modification de requêtes.
Exemple :
La requête : SELECT * FROM V WHERE pu < 200.0;
Où V est défini par :
CREATE VIEW AS SELECT * FROM produit WHERE pu > 100.0 and pu < 200.0;
devient : SELECT * FROM produit WHERE pu > 100.0 AND pu < 200.0 AND pu < 200.0;
de façon simplifié : SELECT * FROM produit WHERE pu > 100.0 AND pu < 200.0 ;
P.10
A d mi n i s t r a t i o n B a s e d e D o n n é e s
2011-2012
Etape4- à ce stade, le SGBDR effectue le contrôle des droits d’accès (autorisation de lire ou d’écrire un objet), et le contrôle
d’intégrité (s’assurer que les règles de cohérence des données restent vérifiées après mise à jour)
Etape5- la requête fait ensuite l’objet d’une optimisation logique visant à réduire le plus tôt possible la quantité de données
manipulées et qui aboutit à une ou plusieurs séquences optimisées d’opérations de l’algèbre relationnelle ; la
traduction de cette (ces) séquence(s) en successions d’opérations d’accès élémentaire (sélection d’index, lecture
d’article,...) permettra, par l’application de fonction de coût de déterminer un plan d’accès optimisé aux objets.
Etape6- le plan d’accès optimisé est alors exécuté en exploitant les méthodes d’accès aux fichiers. A ce stade, sont également
pris en compte les problèmes de concurrence d’accès et d’atomicité des transactions.
2.2 – Architecture générique du SGBDR Oracle
C’est une instance d’Oracle (ensemble de processus + espace mémoire partagé) qui permet d’exploiter une base de
données, et une seule.
Une instance Oracle
Sytem Global Area (SGA)
Data Base Buffer
Cache
CKPT
Large Pool
Shared Pool
PMON
Control
File
SMON
DBWR
Data
File
Java Pool
LGWR
RedoLog
File
Redo Log Buffer
ARCH
RedoLog
File
(arch)
Une instance ne peut ouvrir qu’une bases de données à la fois
Une base de données peut être ouverte par plusieurs instances dans une configuration de serveurs en
cluster
System Global Area
La SGA est une zone contenant les structures de données accessibles à tous les processus
Database Buffer cache servant à stocker toutes les données provenant de ou destinées à la base de données
dans le but d’accélérer l’accès aux données (bloc de données, bloc d’index, …)
Paramètres associés :
DB_BLOCK_SIZE : défini lors de la création de la base de données, représente la taille par défaut d'un bloc de
données Oracle.
DB_CACHE_SIZE : définit le nombre par défaut de blocs Oracle qui pourront être contenus dans le Database
Buffer Cache.
Shared Pool servant à mémoriser, traiter, et analyser les requêtes SQL des différents utilisateurs (requêtes
SQL, programme PL/SQL, dictionnaire des données, …)
RedoLog Buffer servant à mémoriser les données en cours de modification (données avant, données
après) avant leur enregistrement dans le (les) RedoLog File(s)
P.11
A d mi n i s t r a t i o n B a s e d e D o n n é e s
2011-2012
Large Pool servant à délester le Buffer Cache et la Shared Pool.
Java Pool servant à exécuter le code Java intégré à Oracle
Les processus système (back-end)
DBWn (Database Writer) est un processus dédié à l'écriture des blocs du Database Buffer Cache (SGA) dans les fichiers de
données. Il peut y avoir jusqu’à 10 processus DBW (n ∈ [0..9]).
Le nombre de blocs écrits par DBWR est défini avec le paramètre FAST_START_IO_TARGET si celui-ci a été défini.
Par ailleurs, il s'assure qu'il reste assez de place de disponible pour l'écriture des données dans le buffer, en vérifiant en
permanence le nombre de blocs libres dans le Database Buffer Cache.
DBWR se déclenche lors de certains événements: nombre de bloc ‘dirty’ (modifié, validé, en attente d’écriture sur disque)
dépassant une certaine limite, processus serveur à la recherche de blocs libres dans le Buffer Cache, timeouts, checkpoint
(signal de LGWR ou CKPT)
LGWR ( Log Writer) est le processus qui transfère dans les fichiers REDOLOG FILE les informations contenues dans le
REDO LOG Buffer. Cette écriture dans les fichiers est déclenchée par les évènements suivants : transaction terminée avec un
COMMIT, REDO LOG Buffer au 1/3 plein, plus de 1Mo d'informations de log contenues dans le buffer, timeout, avant que
DBWn n'écrive le contenu du Database Buffer Cache dans les fichiers du disque dur
Le processus CKPT sert à mettre à jour les en-têtes des fichiers de données, et à mettre à jour les fichiers CONTROL FILE
afin de spécifier que l'action de CHECKPOINT s'est bien déroulée. Le ‘checkpoint’ indique un état cohérent de la base où tous
les fichiers de la base de données sont synchronisés.
Le CHECKPOINT est un évènement qui se déclenche lors : d'un changement de groupe de REDO LOG FILE, d'un arrêt
normal de la base de données (c'est à dire sans l'option ABORT), d'une demande explicite de l'administrateur, d'une limite
définie par les paramètres d'initialisation LOG_CHECKPOINT_INTERVAL, LOG_CHECKPOINT_TIMEOUT, et
FAST_START_IO_TARGET
C'est l'évènement CHECKPOINT qui déclenche l'activation de DBWR pour l'écriture d'un certain nombre de blocs du
Database Buffer Cache dans les fichiers de données par DBWR, ainsi que l'activation préalable de LGWR pour vider le REDO
LOG Buffer.
ARCn (ARChive) crée une copie archivée des fichiers de journalisation en ligne en mode ARCHIVELOG (en mode
NOARCHIVELOG le processus n'existe pas). Il se déclenche quand le fichier REDO LOG est plein.
SMON (System Monitor) est un processus servant à : recouvrir l’instance, à corriger les plantages de l'instance et à vérifier la
synchronisation des données. Si l'instance plante, c'est SMON qui va se charger de rejouer le contenu des REDO LOG FILE
afin de pouvoir rejouer les transactions et de re-synchroniser les données dans les fichiers de données.
PMON (Process Monitor) est un processus lié aux processus utilisateurs. Il sert à annuler les transactions d'une session (lors
d'un plantage de la session par exemple), mais également à relâcher tous les verrous posés par la session, ainsi qu’à relâcher
toutes les ressources détenues par la session.
Les processus utilisateur et les architectures client-serveur
Processus Client créé lors de la connexion d’un utilisateur pour prendre en charge les échanges entre l’utilisateur et le
Processus Serveur
Processus Serveur : en charge de la communication avec les processus client, de l’analyse et de l’exécution des requêtes.
Dans une architecture de serveur dédié, un processus serveur dessert un processus client.
P.12
A d mi n i s t r a t i o n B a s e d e D o n n é e s
2011-2012
(Source : Guide administration Oracle 10g)
Dans une architecture de serveur partagé, un processus serveur dessert plusieurs processus client.
(Source : Guide administration Oracle 10g)
Le processus dispose d’une zone mémoire dédiée, la Programme Global Area (PGA) contenant les données propres à la
session utilisateur.
P.13
A d mi n i s t r a t i o n B a s e d e D o n n é e s
2011-2012
2.3 – Architecture générique du SGBDR PostgreSql
Architecture client-serveur. Cela se traduit par le fait que toute requête soumise est traitée par 2 types de processus
- un processus utilisateur ou processus Client
- un processus SGBD ou processus Serveur
En fait 3 processus coopèrent :
→ Processus Utilisateur (frontend)
Un processus utilisateur est créé chaque fois qu’un outil tel que psql, ou pgaccess est exécuté par un utilisateur en
mode interactif ou via un programme d’application.
Un processus utilisateur communique avec le SGBDR via un processus serveur.
→ Processus Serveur (backend)
Le rôle du processus serveur est d’effectuer les opérations suivantes :
- analyser et exécuter les requêtes SQL soumises par les utilisateurs et les applications
- transférer les blocs de données nécessaires du disque vers la mémoire
- communiquer les résultats des requêtes aux applications et utilisateurs
→ Processus deamon Superviseur (postmaster)
en charge de la création des processus serveur
P.14
Téléchargement