Chapitre 2
Chapitre 2
Chapitre 2
A.U: 2020/2021 2 BI
Plan
2
2.1 Oracle: Vue d’ensemble
Oracle Corporation est sans conteste le leader du marché des Systèmes de Gestion de
Base de Données Relationnelles, disposant de la plus grande part de marché.
Le produit fondamental commercialisé par Oracle est « Oracle Database », cela
n’empêche que la firme américaine commercialise d’autres types de produits intégrés.
La famille de produits Oracle est la suivante :
Oracle Database
Oracle Developer Suite
Oracle Application Server
Oracle Applications
Oracle Collaboration Suite
Oracle Services
3
2.1 Oracle: Vue d’ensemble
Oracle DataBase: C’est le produit principal d’Oracle, soit le Système de Gestion de
Bases de Données Relationnelles.
Le moyen le plus basique d’interagir avec les objets d’une base de données Oracle, tels
que les tables, les séquences, les index, les utilisateurs, les vues etc., est le langage SQL.
Un utilisateur peut formuler des requêtes SQL via :
SQL*Plus
SQL Developer
iSQLPlus
4
2.1 Oracle: Vue d’ensemble
5
2.2 Architecture d’Oracle database
Un serveur de base de données Oracle inclut deux composantes importantes,
l’instance et la base de données.
La base de données
est l’ensemble de fichiers qui contiennent entre autres les données, les informations de la base ainsi que le
journal de modification des données.
L’instance
est un ensemble de processus et zones mémoire qui facilitent l’accès et la manipulation de la base de
données.
6
2.2.1 Base de données
Base de Données
7
2.2.1 Base de données
Fichier de contrôle (Control File)
Contient des informations de contrôle sur la base: Nom de la base, noms et chemins des
fichiers de données et de journalisation, informations de restaurations etc…
Un des premiers fichiers lu par l’instance
lors du démarrage.
La vue V$CONTROLFILE nous renseigne
sur le contenu du fichier de contrôle.
8
2.2.1 Base de données
Fichier de contrôle (Control File)
Il contient des informations sur la structure physique de la base. Il est créé pendant la création
de la base et il est modifié en permanence.
Ce fichier doit être toujours disponible, car il est consulté; et modifié fréquemment par le
serveur Oracle. Et il est indispensable pour la restauration de la base.
9
2.2.1 Base de données
Fichier de données (Data File)
Ce sont les fichiers physiques qui stockent les données de la base sous un format spécial
Oracle.
Les fichiers de données sont logiquement regroupés en structures logiques appelées
tablespaces.
A noter que les vues DBA_TABLESPACES et DBA_DATA_FILES incluent toutes les
informations respectivement relatives aux tablespaces et aux fichiers de données de la
base.
10
2.2.1 Base de données
Fichier de données (Data File)
La requête suivante liste les fichiers de données utilisés dans la base triés par les
tablespaces :
11
2.2.1 Base de données
Fichier de journalisation
contiennent toutes les modifications effectuées sur les données depuis une certaine
durée.
En cas de crash du système, ou d’altération des fichiers de données, on peut reconstituer
les données à partir des fichiers journaux.
L’écriture sur les fichiers journaux est multiplexée et cyclique.
L’ensemble des fichiers multiplexés (qui contiennent donc les mêmes informations) sont
appelés membres et forment un groupe.
L’écriture est donc multiplexée à l’intérieur d’un groupe, et cyclique entre les groupes.
La vue V$LOGFILE contient les informations des fichiers journaux.
12
2.2.1 Base de données
Fichier de journalisation
13
2.2.1 Base de données
Fichier de journalisation
Au même titre que les fichiers de données, les fichiers Redo-log sont dans un format
propriétaire Oracle et l'écriture dans ces fichiers est assurée par le processus LGWR
(Log Writer).
Ces fichiers peuvent être multiplexés afin de fournir un maximum de sécurité.
Un ensemble de fichiers journaux multiplexés constitue un groupe de fichiers de
journalisation.
14
2.2.1 Base de données
Fichier de journalisation
Si par exemple un groupe inclut trois fichiers journaux, alors ces trois fichiers incluent
exactement les mêmes informations, ils sont appelés membres d’un groupe.
Il existe au minimum deux groupes de fichiers journaux et ils sont écrits de manière
cyclique, c.-à-d., que si les fichiers d’un premier groupe sont pleins, Oracle passe au
deuxième groupe et y écrit (dans chaque membre) les transactions nouvellement
exécutées quitte à écraser les transactions existantes.
15
2.2.1 Base de données
Groupe 1
DELETE DELETE
UPDATE UPDATE
INSERT INTO INSERT INTO
UPDATE UPDATE
UPDATE… UPDATE…
INSERT INTO INSERT INTO
Membre 1 Membre 2
Groupe 2
Membre 1 Membre 2
Ecriture cyclique et multiplexée des fichiers journaux
16
2.2.1 Base de données
Fichier de journalisation
Oracle propose également un mode archivage permettant la sauvegarde du fichier log
avant sa réutilisation pour restaurer la base. Si ce mode n'a pas été activé, le contenu du
fichier Redo Log est supprimé après utilisation.
L’écriture des fichiers journaux est cyclique, ce qui fait qu’à un certain moment, certaines
transactions seront écrasées.
La solution, c’est d’archiver les fichiers journaux avant de les écraser.
Les fichiers journaux archivés peuvent être stockés sur des disques (serveurs) distants, ce
qui optimisera la sécurité de la BD.
Une base de données n’est pas forcément en mode ARCHIVELOG, si elle ne l’est pas, les
fichiers journaux ne sont pas archivés.
17
2.2.2 Instance
C’est l’ensemble de structures mémoire et de processus qui assurent la gestion de la
base de données.
Le fichier de paramètres est utilisé pour configurer l’instance lors de son démarrage.
Une instance ne peut ouvrir qu’une seule base de données.
Une instance emploie deux zones mémoire principales; la SGA (System Global Area)
et la PGA (Program Global Area).
18
2.2.2 Instance
C’est l’ensemble de structures mémoire et de processus qui assurent la gestion de la
base de données.
Le fichier de paramètres est utilisé pour configurer l’instance lors de son démarrage.
Une instance ne peut ouvrir qu’une seule base de données.
Une instance emploie deux zones mémoire principales; la SGA (System Global Area)
et la PGA (Program Global Area).
19
2.2.2 Instance
20
2.2.2 Instance
Le SGA est un espace mémoire partagé par tous les processus de l’instance. Elle est
allouée au démarrage de l’instance et libérée lors de son arrêt. Elle inclut 6 zones
mémoires (3+3). SGA
Streams
Java Pool Large Pool
Pool
21
2.2.2 Instance
Shared Pool est composée de deux structures; le library cache et le dictionary
cache. Sa taille est définie via le paramètre SHARED_POOL_SIZE.
Le LC contient pour chaque requête récemment exécutée trois informations:
- Son texte
- Sa compilation
- Son plan d’exécution
Lorsqu’une requête existe encore dans le LC, Oracle ne perd pas son temps à
la ré-exécuter.
Le DC stocke toutes les informations nécessaires à l’analyse sémantique de la
requête (table? Colonnes? Droits d’accès?...)
22
2.2.2 Instance
Le DB buffer cache stocke les blocs de données les plus récemment utilisés.
Lorsqu’une requête est exécutée, Oracle vérifie d’abord si les blocs de données à
ramener ne soient pas déjà chargés dans le DB buffer.
Si les blocs à renvoyer n’existent pas dans le DB buffer cache, Oracle les y stocke
selon l’algorithme LRU (et libère d’autres blocs s’il le faut).
La taille du DB Buffer Cache est définie via le paramètre DB_CACHE_SIZE.
23
2.2.2 Instance
Le JAVA Pool : Stocke les objets et applications Java les plus récemment utilisés
lorsque la machine virtuelle Java JVM optionnelle est utilisée. Paramètre
JAVA_POOL_SIZE.
Le Large Pool : Stocke des données lors de l’exécution d’opérations volumineuses. Il
est utilisé dans le cas d’une configuration serveur partagé. Paramètre
LARGE_POOL_SIZE.
Le Streams Pool : C’est le cache des données relatives à la queue de messages
utilisées par Oracle. Paramètre STREAMS_POOL_SIZE.
A noter que dans la SGA, il y a une petite zone mémoire appelée SGA fixe. Elle inclut
des infos sur l’état de la base, l’instance, les verrous…
Les vues V$SGA et V$SGA_DYNAMIC_COMPONENTS.
24
2.2.2 Instance
Les tailles des zones mémoire peuvent être définies manuellement ou
automatiquement.
Gestion manuelle : donner une valeur spécifique à chacun des paramètres des tailles
des zones mémoire. La somme ne doit pas dépasser SGA_MAX_SIZE.
Gestion automatique : activé si SGA_TARGET est différente de zéro.
Dans ce cas, le DB Buffer Cache, le Shared Pool, le Large Pool et le Java Pool sont
dimensionnés automatiquement. La taille du Log Buffer n’est pas prise en charge par
la gestion automatique, sa taille est déduite du SGA_TARGET.
25
2.2.2 Instance
26
2.2.2 Instance
La PGA est une zone mémoire privée dédiée aux utilisateurs. Elle est créée pour
chaque processus serveur.
Elle stocke des informations spécifiques aux utilisateurs, tel que les variables hôtes,
les variables de session, l’état des curseurs utilisés, des informations de tri etc.
La PGA totale allouée à tous les processus serveur est appelée PGA agrégée.
Le paramètre PGA_AGGREGATE_TARGET définit la taille de la PGA agrégée, c’est
Oracle qui se charge de la répartir entre les différentes processus serveur.
27
2.2.2 Instance
Les processus:
Ils permettent une interaction entre les différentes composantes du serveur ainsi qu’avec
les utilisateurs.
Il existe trois types de processus
1. Les processus utilisateur
28
2.2.2 Instance
Les processus utilisateur et serveur:
Le processus utilisateur s’exécute au niveau client.
Le processus serveur s’exécute au niveau serveur BD.
L’interaction entre le serveur et les clients se fait en réalité grâce à ces deux processus,
chacun de son côté.
Lorsque le client est lié au serveur, on parle d’une connexion.
Lorsque l’utilisateur s’identifie, il ouvre une session.
Plusieurs sessions peuvent être ouvertes en même temps. Elles ne doivent pas dépasser la
valeur du paramètre SESSIONS.
29
2.2.2 Instance
Les processus utilisateur et serveur:
Le processus serveur (PS) reçoit les requêtes utilisateur, les exécute et renvoie le
résultat.
Un serveur BD est soit en mode DÉDIÉ, soit en mode PARTAGÉ.
En mode dédié, on dédie un PS à chaque utilisateur.
En mode partagé, on partage un PS pour un ensemble d’utilisateurs.
Le mode par défaut est le mode dédié. Pour activer le mode partagé, il faut modifier la
valeur de SHARED_SERVERS (par défaut =0).
La valeur de SHARED_SERVERS indique le nombre de processus serveur partagés.
Rappelons qu’une zone de mémoire PGA est allouée à chaque PS.
30
2.2.2 Instance
PGA SGA
User Process
Shared Streams
Server Java Pool Large Pool
Pool
Process
DB Buffer Shared Redo Log
Cache Pool Buffer
D000
Dictionary
Cache
User Process
PGA Library
Cache
Dedicated
Server
Process
User Process
Base de Données
31
2.2.2 Instance
Les processus d’arrière plan
Assurent le bon fonctionnement du serveur.
Maximisent la performance du serveur.
Démarrent avec ou après (sur demande) le démarrage de l’instance.
Certains peuvent être exécutés en n exemplaires.
32
2.2.2 Instance
33