Vous êtes sur la page 1sur 57

Systèmes de Gestion de Bases

de données

Systèmes de Gestion de Bases de données Section: 2 è m e année informatique Préparé par

Section: 2 ème année informatique

Préparé par :

Mme Ines BOUZOUITA Ines.bouzouita@yahoo.fr

Cours

Cours

Public cible : 2A informatique Pré-requis

SQL

Volume Horaire: 22h30

Objectifs du module

Vous apprendrez à mettre en oeuvre et administrer le SGBD Oracle. Parmi les principaux points abordés figurent l'architecture du SGBD, l'installation, ainsi que la gestion de l'instance, des bases, des espaces de disques, des objets, des données d'annulation, des utilisateurs et des droits d'accès.

I.BOUZOUITA, ENIT, 2016-2017

Plan du module

Plan du module

Chapitre 1. Architecture interne d‘oracle

Chapitre 2. Structures physiques et logique d‘une bases de données oracle

Chapitre 3. Le dictionnaire de données

Chapitre 4. Objets avancés dans les bases de données

Chapitre 5. Gestion des utilisateurs

Chapitre 6. Gestion des transactions

Architecture interne d’ Section: 2 è m e année informatique Préparé par : Mme Ines

Architecture interne d’

Architecture interne d’ Section: 2 è m e année informatique Préparé par : Mme Ines BOUZOUITA
Architecture interne d’ Section: 2 è m e année informatique Préparé par : Mme Ines BOUZOUITA

Section: 2 ème année informatique

Préparé par :

Mme Ines BOUZOUITA Ines.bouzouita@yahoo.fr

SGBD: Système de Gestion de Bases de Données

SGBD: Système de Gestion de Bases de Données

Définition1:

Un SGBD (ou DBMS : Data Base Management System) est un ensemble de logiciels permettant de stocker et d’interroger un ensemble de fichiers interdépendants.

Définition2:

un outil permettant de modéliser et de gérer les données d’une entreprise.

SGBD: Système de Gestion de Bases de Données

SGBD: Système de Gestion de Bases de Données

Un SGBD (System de Gestion de Base de Données):

Un ensemble de logiciels permettant aux utilisateurs d’une BD de:

la créer (LDD : Langage de Définition de Données). la manipuler (LMD : Langage de Manipulation de données) . la contrôler (LCD : Langage de Contrôle de Données).

Tâches de l’administrateur de BD

Tâches de l’administrateur de BD

Évaluer le matériel pour le serveur de BD.

Installer le SGBD.

Créer et planifier la base de données.

Créer des utilisateurs et affecter les privilèges et rôles.

Gérer et contrôler les ressources de la BD.

Transposer, exporter et importer des données.

Assurer la sécurité et la surveillance de la BD.

Archiver et récupérer la base en cas de panne.

Le choix d'ORACLE

Le choix d'ORACLE

SGBD Relationnel, puissant et de plus en plus choisi par les grandes sociétés.

depuis

l'introduction

du

sa

version 8 peut être aussi qualifié de SGBD relationnel-objet (SGBDRO).

support

du

modèle

objet

dans

supporte un grand volume d’informations dans sa BD octet).

(téra

présente une grande puissance et ouverture de la couche d’administration des BD et une multitude d’utilitaires d’administration.

ORACLE

ORACLE

Utilisation du SGBD à travers différents outils :

interface conversationnelle (SQL*Plus)

interface de programmation vers d’autres langages (Pro*C, Pro*Cobol,

Pro*JAVA

)

générateurs d’états (SQL*Report)

utilitaire de chargement de données (SQL*Loader)

générateurs d’applications Oracle Forms (SQL*Forms, SQL*Menu)

utilitaire

client/serveur

d’une

de

gestion

architecture

(SQL*Net)

utilitaire de gestion de bases de données réparties (SQL*Star)

Histoire d’Oracle

Histoire d’Oracle

1977 : Création de Software Development Laboratories (SDL).

1979 : SDL change de nom en devenant Relational Software, Inc.

(RSI) et introduit son produit Oracle V2 comme base de données relationnelle.

La version 2 ne supportait pas les transactions mais implémentait les fonctionnalités SQL basiques de requête et jointure. Il n'y a jamais eu de

version 1, pour des raisons de marketing, la première version a été la version

2. Celle-ci fonctionnait sur les systèmes Digital VAX/VMS

1983 : RSI devient Oracle Corporation pour être plus représentative de son produit phare.

La version 3 d'Oracle, entièrement réécrite en langage de programmation C.

Supporte les transactions grâce aux fonctionnalités de commit et rollback.

Unix est supportée à partir de cette version.

Histoire d’Oracle

Histoire d’Oracle

1984: la version 4 d'Oracle apparaît, supportant la cohérence en lecture (read consistency).

.

1997: la version 8 introduit le développement orienté objet et les applications multimédia.

2001: Oracle 9i ajoute 400 nouvelles fonctionnalités et permet de

lire et d'écrire des documents XML.

intégration du moteur OLAP

Les données multidimensionnelles sont accessibles à partir du langage SQL.

2003: la version 10g est publiée, version qui supporte les

expressions rationnelles. Le g signifie « grid » ; un des atouts marketing de la 10g est en effet qu'elle supporte le « grid computing ».

Histoire d’Oracle

Histoire d’Oracle

2005 : vers la fin novembre, une version complètement gratuite est publiée, la « Oracle Database 10g Express Edition ».

2007 : sortie de la version 11 : Oracle Database 11g, pour Linux et

Windows.

2009 : sortie de Oracle 11g Release 2.

2013 : sortie de Oracle Database 12c.

Identification du produit Oracle

Identification du produit Oracle

Pour identifier un des produits logiciels, Oracle utilise jusqu’à 5 chiffres :

produits logiciels, Oracle utilise jusqu’à 5 chiffres : 8.0.4.0 Numéro de version Numéro de release du

8.0.4.0

logiciels, Oracle utilise jusqu’à 5 chiffres : 8.0.4.0 Numéro de version Numéro de release du patch

Numéro de version

utilise jusqu’à 5 chiffres : 8.0.4.0 Numéro de version Numéro de release du patch spécifique Numéro

Numéro de release du patch spécifique

Numéro de release (version) de maintenance

Numéro de release du patch

Patch Section de code que l'on ajoute à un logiciel, pour y apporter des modifications :

correction d'un bug.

13

Identification du produit Oracle

Identification du produit Oracle

Les différentes versions d’Oracle 10g proposées sont :

Oracle Database Personal Edition;

Oracle Database Standard Edition One ;

Oracle Database Standard Edition ;

Oracle Database Enterprise Edition ;

Oracle Database Express Edition, la version gratuite (depuis 2005)

Connexion à un serveur Oracle

Connexion à un serveur Oracle

Une connexion est un chemin de communication entre un processus utilisateur et un processus serveur. Il existe trois types de connexions grâce auxquelles un utilisateur peut accéder à un Serveur Oracle :

Connexion locale : Selon cette méthode, un utilisateur est directement

connecté sur la machine faisant office de Serveur Oracle.

Connexion Deux Tiers : Ce type de connexion est couramment nommé "Connexion Client Serveur", un utilisateur se connecte à partir d'une machine directement connectée à un Serveur Oracle.

Connexion Multi Tiers : Dans une architecture multi tiers, la machine de l'utilisateur se connecte à un Serveur applicatif (Par exemple un Serveur Web) qui lui même va se connecter au serveur Oracle pour récupérer les données issues de la BD.

Session: une connexion spécifique d’un utilisateur à un serveur oracle.

La session démarre lorsque l’utilisateur est authentifié par le serveur oracle et se termine lorsque l’utilisateur se déconnecte ou en cas de déconnexion anormale.

15

mode de fonctionnement

mode de fonctionnement

Oracle supporte deux modes de fonctionnement:

1. Serveur dédié : chaque fois qu’un utilisateur se connecte, il est pris en charge par un processus serveur.

Si 100 utilisateurs se connectent, 100 processus serveurs sont crées de même

Avantage: une commande SQL est tout de suite et directement prise en compte par un processus serveur

Inconvénient: chaque processus serveur occupe une zone mémoire et utilise la CPU

Meilleure configuration (recommandée et utilisée par beaucoup de DBA), si les

Meilleure configuration (recommandée et utilisée par beaucoup de DBA), si les ressources matérielles le permettent. 16

ressources matérielles le permettent.

mode de fonctionnement

mode de fonctionnement

…:

2. Serveur Partagé : c’est un groupe de processus serveurs qui s’occupent d’un grand nombre de processus utilisateurs.

Les processus utilisateurs sont alloués à un processus DISPATCHER, celui-ci met les requêtes utilisateurs dans une fille d’attente, et le processus serveur exécute toutes les requêtes, une par une

Avantage: Réduire la charge de la CPU et utilise moins de mémoire

Réduire la charge de la CPU et utilise moins de mémoire 17 – Inconvénient: Lors de

17

Inconvénient: Lors de forte utilisations de la BDD, il risque d’y avoir des temps d’attente (performance)

Architecture interne d’Oracle

Architecture interne d’Oracle
Architecture interne d’Oracle Instance BD ■ L’architecture interne d’Oracle est composée: ■ 1. de fichiers

Instance

BD

L’architecture interne d’Oracle est composée:

1. de fichiers (niveau physique)

2. de processus background

3. de structures mémoire.

Architecture d'une BD ORACLE

Architecture d'une BD ORACLE
Architecture d'une BD ORACLE  Chaque BD qui s’exécute est associé à une instance oracle 

Chaque BD qui s’exécute est associé à une instance oracle

Une instance oracle est la combinaison des structures mémoire (SGA, PGA) et de processus oracle en arrière plan

Structure mémoire:

Structure mémoire:

Structure mémoire: System Global Area

Structure mémoire: Structure mémoire: System Global Area 1. Shared Pool : Shared SQL Area + Dictionnaire

1. Shared Pool : Shared SQL Area + Dictionnaire des données

2. Buffer Cache : Cache des blocs de données

3. Redo Log Buffer : Tampon de journalisation circulaire

contenant les modifications effectuées sur la base

Architecture globale d'ORACLE

Architecture globale d'ORACLE
LCKn RECO PMON SMON System Global Area Database Buffer Cache Redo log Buffer Shared Pool
LCKn
RECO
PMON
SMON
System Global Area
Database Buffer Cache
Redo log Buffer
Shared Pool
Support
User
Shared server
process
CKPT
ARCn
Dedicated server
process
archive
LGWR
DBWn
User
Control
File
Redo
Database
Log
files
La mémoire 22

La mémoire

La mémoire 22

La mémoire

La mémoire

Oracle utilise les structures suivantes au niveau de la mémoire centrale :

les informations relatives à une session ouverte

les données nécessaires pendant l’exécution d’un programme.

les informations partagées par différents processus Oracle (relatives au verrouillage par exemple).

les données échangées avec les mémoires auxiliaires (Bloc de

données par exemple).

Structures mémoire Oracle

Structures mémoire Oracle

Dans tout système informatique, l’utilisation de mémoire est synonyme

de performance. Les structures mémoire de base associées à une instance

Oracle sont :

zones réservées au code de l’applicatif.

Mémoire SGA (System Global Area) : partagée par tous les processus serveur et processus en arrière-plan

Mémoire PGA (Program Global Area) : propre à chaque processus serveur

et processus en arrière-plan (une mémoire PGA pour chaque processus)

24
24

System Global Area (SGA)

System Global Area (SGA)

La SGA (appelée aussi mémoire réservée) est une zone mémoire qui est utilisée par la BD pour partager les informations entre les différents processus Oracle.

Zone de mémoire contenant les données et les informations de contrôle

de l'instance

A chaque démarrage d'une instance, l'espace mémoire nécessaire à son bon fonctionnement lui est alloué, et est restitué lors de sa fermeture.

Oracle utilise la mémoire SGA comme buffer intermédiaire (plus rapide que le disque) pour l’échange de données entres processus

Le dimensionnement de cette zone peut être important pour les performances de la base. Augmenter la taille de certaines zones du SGA permet de diminuer les entrées sorties du disque, par exemple.

System Global Area (SGA)

System Global Area (SGA)

La SGA Elle est divisée trois composants obligatoires :

1. Database buffer cache (Le cache de données)

2. Redo log buffer (Le cache de reprise)

3. Shared pool

Et de trois composants optionnels

Java pool

Large pool

Streams pool

de reprise) 3. Shared pool ■ Et de trois composants optionnels – Java pool – Large

1. SGA - Database Buffer cache

1. SGA - Database Buffer cache

Database Buffer cache (Cache de tampons )

ensemble de zones buffer contenant des copies de données lues à partir des fichiers de données afin d'accélérer l'interrogation et/ou la

modification.

aucune modification n’est faite directement sur les données du disque

Oracle lit les données suite à la demande d'un processus utilisateur et ensuite valide les modifications sur le disque

taille déterminée par : DB_BLOCK_BUFFERS

Organisation du Database Buffer cache

Le buffer cache est organisé en 2 listes :

La dirty list contient les buffers qui ont été modifiés mais ne sont pas encore écrits sur le disque

La liste LRU (Least Recently Used) contient les buffers les moins récemment

utilisés qui contient :

Les buffers libres pouvant être utilisés

les buffers actuellement utilisés (pinned buffers) par certains processus

les buffers modifiés non encore déplacés dans la dirty list

27

SGA - Algorithme LRU

SGA - Algorithme LRU

Algorithme LRU

utilise un algorithme nommé LRU moins récemment utilisés (Least- Recently Used) pour déterminer les données à libérer du cache.

recherche d’un buffer libre dans la liste LRU en commençant par le début arrêt

dès qu’on trouve un buffer libre ou qu’on ait parcouru un certain nombre de

buffers (DB_BLOCK_SCAN_CNT)

pendant cette recherche, transfert des buffers modifiés vers la dirty list

dès qu’on trouve un buffer libre, on écrit le bloc dans le buffer et on le transfère vers la fin de la zone MRU (Most Recently Used)

si DB_BLOCK_SCAN_CNT buffers sont parcourus et on ne trouve aucun

buffer libre, DBWR est activé pour écrire les buffers modifiés sur disque pour libérer leur espace.

Dirty list

LRU list

sur disque pour libérer leur espace. Dirty list LRU list MRU Vues système utilisées : V$SGA
sur disque pour libérer leur espace. Dirty list LRU list MRU Vues système utilisées : V$SGA
sur disque pour libérer leur espace. Dirty list LRU list MRU Vues système utilisées : V$SGA

MRU

Vues système utilisées : V$SGA ; V$PARAMETER ;

28

SGA- Redo Log buffer

SGA- Redo Log buffer

Tampon de journalisation (Redo Log buffer) : buffer circulaire qui

met en mémoire cache les informations de journalisation relatives

aux modifications apportées à la BD (insert, delete, update, create, alter et drop). Ces informations (entrées redo log) sont utilisées en cas de restauration.

Redo Log buffer permet à oracle de reconstruire les modifications des données en cas de panne.

L'information Redo reste dans le buffer Redo log jusqu'à ce qu‘oracle

la stocke sur le disque.

Sa taille est définie par LOG_BUFFER

SGA - Shared Pool

SGA - Shared Pool

Zone de mémoire partagée (Shared Pool) : met en mémoire cache diverses structures pouvant être partagées par les utilisateurs,

structures pouvant être partagées par les utilisateurs,  utilisée pendant la phase d’analyse des ordres SQL

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)

gérée à l’aide de l’algorithme LRU

Sa taille est déterminée par SHARED_POOL_SIZE

Pour la modifier : Alter system set shared_pool_size=64M

Library cache : permet d'analyser l'ordre d'exécution d'une requête SQL et de définir un plan d'exécution.

Dictionary cache : stocke les données en provenance du dictionnaire afin d'accélérer l'accès au dictionnaire (nom d'utilisateurs, privilèges, etc.).

N.B: Si la même requête est ré-exécutée, le serveur n'analyse pas son ordre.

System Global Area (SGA)

System Global Area (SGA)

.

Zone de mémoire LARGE POOL : zone facultative fournissant d'importantes allocations mémoire (lors de l’exécution d’opérations volumineuses) pour certains processus utilisant beaucoup de mémoire, tels que :

les opérations de sauvegarde et de récupération Oracle et

les processus serveur d'entrée-sortie

Paramètre LARGE_POOL_SIZE

Zone de mémoire Java : zone utilisée pour l'ensemble du code Java et des données propres à la session dans la JVM (Java Virtual Machine)

Paramètre JAVA_POOL_SIZE

Zone de mémoire Streams : zone utilisée par Oracle Streams (pour la réplication)

Paramètre STREAMS_POOL_SIZE

System Global Area (SGA)

System Global Area (SGA)

Estimation de la taille de la SGA

Déterminée en fonctions des paramètres :

DB_BLOCK_SIZE

DB_BLOCK_BUFFERS

LOG_BUFFER

SHARED_POOL_SIZE

Formule :

Taille de la SGA =

( DB_BLOCK_SIZE * DB_BLOCK_BUFFERS)

+

LOG_BUFFER + SHARED_POOL_SIZE

La gestion automatique de la SGA

La gestion automatique de la SGA

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.

La gestion automatique de la SGA

La gestion automatique de la SGA

La valeur du paramètre SGA_MAX_SIZE contient la taille maximale de la SGA. La valeur du paramètre SGA_TARGET contient la taille souhaitée de la SGA.

C:\>SET ORACLE_SID=DBTEST

C:\>SQLPLUS /NOLOG SQL*Plus: Release 10.2.0.1.0 - Production on Tue Jul 12 22:23:45 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> CONNECT / AS SYSDBA Connected.

SQL>ALTER SYSTEM SET sga_max_size=1800M SCOPE=SPFILE;

System altered. SQL>ALTER SYSTEM SET sga_target=1800M SCOPE=SPFILE; System altered. SQL>SHUTDOWN IMMEDIATE

SQL>STARTUP

SQL> SHOW PARAMETER sga; NAME

TYPE

VALUE ----------------- FALSE FALSE

 

------------------------------------ -----------

lock_sga

boolean boolean big integer big integer

pre_page_sga

sga_max_size

1800M

sga_target

1800M

SQL>

35

Program Global Area (PGA)

Program Global Area (PGA)

Contrairement aux autres zones mémoire celle-ci n'est pas partagée.

Elle est seulement utilisée par des processus serveur ou d'arrière plan.

Elle stocke des informations de contrôle spécifiques à la session de l’utilisateur telles que les zones privées pour le traitement des

curseurs, les variables attachées (bind), des informations sur la session,

une zone de trie.

Chaque processus serveur dispose de sa propre mémoire PGA privée qui lui est exclusivement réservée.

Elle est allouée lors du démarrage du processus et libérée lors de

l'arrêt du processus.

la taille de la PGA est déterminée par :

OPEN_LINKS

DB_FILES

Les processus 37

Les processus

Les processus 37

Les processus autour d'Oracle

Les processus autour d'Oracle

Les processus

Processus

utilisateurs

pour exécuter

une application

SQL*Plus,

Pro*C, etc.

Processus Oracle

Processus SERVEUR interaction entre processus utilisateur et l’instance (mémoire de la SGA).
Processus
SERVEUR
interaction entre processus
utilisateur et l’instance
(mémoire de la SGA).
Processus en arrière plan effectue des tâches bien définies pour l’ensemble des utilisateurs
Processus en
arrière plan
effectue des tâches bien
définies pour l’ensemble
des utilisateurs

Les processus utilisateurs

Les processus utilisateurs

Processus client exécutant le code d'une application (PRO*C,

FORMS,

MANAGER,

) ou d’un Outil Oracle (SQL*PLUS, ENTREPRISE

)

Processus souvent exécuté sur une machine différente de celle ou réside le serveur Oracle

processus qui établit une communication avec Oracle via un protocole de communication et SQLNET

La communication est gérée via le User Programme Interface (UPI)

Le processus Serveur (Server)

Le processus Serveur (Server)

Un processus serveur peut être dédié ou non

Il est aussi appelé shadow process

Son rôle consiste à:

assurer la communication directe ou indirecte avec les processus utilisateurs

analyser et exécuter les requêtes soumises par les applications (utilisateurs)

transférer les blocs de données nécessaires du disque vers la zone SGA.

restituer directement ou indirectement le résultat au processus utilisateur

déplacer les blocs modifiés dans la DIRTY LIST

Exemple de serveur en mode dédié

au processus utilisateur – déplacer les blocs modifiés dans la DIRTY LIST Exemple de serveur en

Les processus en arrière-plan (BACKGROUND)

Les processus en arrière-plan (BACKGROUND)

Ils gèrent et appliquent les relations entre les structures physiques et les structures mémoires.

Ils effectuent des tâches bien définies pour l’ensemble des utilisateurs

Ils sont lancés au démarrage de l'instance et arrêtés lors de l'arrêt de l'instance.

utilisateurs  Ils sont lancés au démarrage de l'instance et arrêtés lors de l'arrêt de l'instance.

Les processus Oracle DBWn (Database Writer )

Les processus Oracle – DBWn (Database Writer )

DBWn gère le buffer de la BD : écrit, transfère sur disque le contenu des tampons modifiés (Dirty Block) dans les fichiers de données.

DBWn se déclenchera lors des événements suivants :

Lorsque le nombre de bloc dirty atteint une certaine limite

Lorsqu'un processus sera à la recherche de blocs libres dans le Database

Buffer Cache, et qu'il ne sera pas en mesure d'en trouver.

Lors de timeouts (environ toutes les 3 secondes par défaut)

Lors d'un checkpoint.

les 3 secondes par défaut) – Lors d'un checkpoint.  Le comportement de DBWR est contrôlé

Le comportement de DBWR est contrôlé par

le paramètre d’initialisation DB_WRITERS. Le paramètre DB_WRITER_PROCESSES initialise le nombre de Processus DBWn.

Oracle 10g 1 à 20 processus Database Writer.

Oracle 11g 1 à 36 processus Database Writer

Ceci permet de démarrer plusieurs processus DBWn, afin d’augmenter le taux d’écriture sur disque dans les systèmes fortement sollicités.

42

Les processus Oracle LGWR (LogWriter)

Les processus Oracle – LGWR ( LogWriter )

LogWriter écrit les buffers Redo Log dans les fichiers de reprise.

Le processus LGWR transcrit les informations contenues dans le REDO LOG Buffer vers les fichiers REDOLOG FILE quand :

une transaction s'est terminée avec un COMMIT

le REDO LOG Buffer est au 1/3 plein

Avant que DBWn n'écrive le contenu du Database Buffer Cache dans les fichiers du disque dur

toutes les 3 secondes.

dans les fichiers du disque dur – toutes les 3 secondes . Lorsqu'un utilisateur valide une

Lorsqu'un utilisateur valide une transaction, elle reçoit un numéro SCN (System Change Number).

Ces Numéros sont enregistrés dans le fichier de journalisation (pas seulement ) afin de permettre une

synchronisation dans le cas d'une reprise ou récupération de données suite à une défaillance.

43

Les processus Oracle CKPT (Check Point)

Les processus Oracle – CKPT (Check Point)

CKPT a un rôle important dans le bon fonctionnement d'une Instance.

CKPT inscrit les informations de point de reprise dans les fichiers de contrôles et dans l'entête de chaque fichier de données. Ce point de reprise (SCN) permet de rendre cohérent les fichiers de contrôles et les fichiers de données, indispensable pour un processus de récupération.

données, indispensable pour un processus de récupération.  CKPT n'écrit pas les blocs sur le disque,

CKPT n'écrit pas les blocs sur le disque, c'est le rôle du processus DBWn.

Provoque l'activation du DBWR pour écrire les blocs modifiés depuis le dernier point de contrôle,

44

Les processus Oracle CKPT (Check Point)

Les processus Oracle – CKPT (Check Point)

Les numéros SCN enregistrés dans les fichiers garantissent que toutes les

modifications apportées aux blocs de BD avant un numéro SCN ont été

écrites sur le disque.

En cas d'arrêt anormal de l'instance, ce SCN marque le début des données à utiliser pour la récupération de l'instance.*

Le processus LGWR n’écrit pas dans le fichier de journalisation (REDO LOG) tant que le processus CKPT n'a pas synchronisé, car tant que cette synchronisation n'est pas faite, le fichier de journalisation contient des données nécessaires à une éventuelle récupération après défaillance de l'instance.

A savoir qu'une synchronisation se déclenche aussi à chaque basculement de REDO LOG, lors de l’arrêt de la BD, lors de la mise hors ligne d'un Tablespace.

45

Les processus Oracle SMON (System Monitor)

Les processus Oracle – SMON ( System Monitor)

surveille la BD lors de son démarrage.

assure la récupération de l’instance lors du démarrage d’instance.

assure la libération des segments temporaires qui ne sont pas utilisés.

compacter l'espace contigu dans les Tablespaces

a

vérifie,

lors

du

démarrage

de

l'instance,

si

le

dernier

arrêt

correctement effectué.

Tablespaces a  vérifie, lors du démarrage de l'instance, si le dernier arrêt correctement effectué. été

été

Les processus Oracle SMON (System Monitor)

Les processus Oracle – SMON ( System Monitor)

Lors d'un arrêt brutal de la BD (par exemple plantage du système), le

processus SMON en action :

lit les informations contenues dans les segments UNDO (données en attente de validation) puis les annule. (ROLL BACK)

récupère dans les fichiers REDO LOG les enregistrements validés mais pas encore écrit dans les fichiers de données et les insère. (ROLL FORWARD).

libère toute les ressources de la BD (vérrous, segments temporaires).

Lors d'un fonctionnement normal de la BD, le processus SMON en action :

surveille l'activité de la base de données.

recycle les segments temporaires et assure les espaces de tri.

libère toute les ressources de la BD (vérrous, segments temporaires).

vérifie que les bases de données composant un Cluster sont actives.

peut être appelé par d'autre Processus pour libérer de l'espace.

Si le processus System Monitor SMON s’arrête, l'instance Oracle doit être redémarrée.

47

Processus Oracle PMON (Process Monitor)

Processus Oracle – PMON ( Process Monitor )

effectue un nettoyage de processus lorsqu'un processus utilisateur échoue

(par exemple plantage).

surveille aussi les sessions pour détecter les dépassements des délais d'inactivités, il enregistre aussi dynamiquement les services de BD dans les processus d'écoute.

des délais d'inactivités, il enregistre aussi dynamiquement les services de BD dans les processus d'écoute .

48

Processus Oracle PMON (Process Monitor)

Processus Oracle – PMON ( Process Monitor )

Lors d'un échec d'un processus utilisateur, le processus PMON en action :

annule la transaction (ROLL BACK)

nettoie le cache de tampons de la BD.

libère les zones mémoire allouées, supprime les verrous posés par les

transactions et annule les ressources affectées aux threads de la transaction.

Lors d'un fonctionnement normal de la BD, le PMON en action :

scrute et détecte les processus utilisateurs.

vérifie le statut des processus Dispatcher et Serveur.

redémarre les processus Dispatcher et Serveur si ils sont arrêtés.

peut être appelé par d'autre Processus.

Si le processus Process Monitor PMON s’arrête, l'instance Oracle doit être redémarrée.

49

Processus Oracle - optionnels

Processus Oracle - optionnels

Processus d'archivage (ARCn) :

copie les fichiers de journalisation (fichiers redo log) dans le lieu destiné au

stockage des archives lorsqu'ils sont pleins.

LCKn (LOCKn) :

N’existe qu’avec l’option Parallel Server

Permet de gérer le verrouillage inter-instance.

On peut avoir jusqu’à 10 processus de type (LCK0,LCK1,

Dnnnn (Dispatcher et Server)

,LCK9).

Permet le partage d’un nombre limité de processus serveurs par les processus utilisateurs (Utilisé avec la configuration Multi-Threaded Server).

Permet de minimiser le nombre des processus serveurs lorsque le nombre

d’utilisateurs est important.

Le nombre de processus dispatchers est fixé par l’administrateur dans init.ora.

RECO ou Recover :

Utilisé uniquement en cas de BD répartie.

permet d’effectuer le recouvrement en cas d’échec d’une transaction répartie.

Processus Oracle optionnels- Listener ou listener Net

Processus Oracle optionnels- Listener ou listener Net

Le processus d’écoute Oracle (listener) est le principal composant Oracle

coté serveur qui permet d'établir la connexion entre les ordinateurs clients et

une BD Oracle (le port du listener Oracle par défaut est le port TCP 1521).

Le listener peut être considéré comme une grande oreille qui écoute les demandes de connexion aux services Oracle.

Théoriquement, une machine serveur peut héberger plusieurs BD Oracle et un listener et un seul pour permettre la connexion d’un client à l’instance Oracle de son choix.

51
51

Session, processus serveur et processus utilisateur

Session, processus serveur et processus utilisateur

Une connexion spécifique entre un utilisateur et un serveur Oracle est

appelée une Session.

La session démarre lorsque la connexion de l'utilisateur est validée par le serveur Oracle et se termine lorsqu'il se déconnecte ou lorsqu'une fin de connexion prématurée se produit.

De nombreuses sessions concurrentes d'un même utilisateur ou de plusieurs peuvent s'exécuter sur le serveur Oracle.

Lorsque un utilisateur est connecté à une machine sur laquelle réside un Serveur Oracle, deux processus supplémentaire sont invoqués : Le processus utilisateur et le processus serveur.

Le processus utilisateur : demande une interaction avec la BD en démarrant une connexion. Il communique uniquement avec le processus serveur correspondant.

Le processus serveur : représente le programme qui rentre directement en interaction avec le serveur Oracle. Il répond à toutes les demandes et renvoie les résultats.

52

Gestion d’une instance Oracle

Gestion d’une instance Oracle 53
53
53

Gestion d’une instance Oracle

Gestion d’une instance Oracle

L’exemple illustre une configuration Oracle dans laquelle l'utilisateur et les processus serveur associés utilisent des ordinateurs distincts (connectés entre eux via un réseau)

1
1

Une instance a été démarrée sur l'ordinateur exécutant Oracle (souvent appelé hôte ou serveur de base de données).

2
2

L'ordinateur exécutant l'application (ordinateur local ou poste client) utilise un processus utilisateur. L'application client tente d'établir une connexion avec l'instance en utilisant le pilote Oracle Net Services.

3
3

L'instance détecte la demande de connexion émanant de l'application et se connecte à un processus serveur pour le compte du processus

utilisateur.

Gestion d’une instance Oracle

Gestion d’une instance Oracle
Gestion d’une instance Oracle 55

55

Gestion d’une instance Oracle

Gestion d’une instance Oracle

traiter une instruction SQL

4
4

L'utilisateur met à jour une ligne

5
5

Le processus serveur reçoit l'instruction et vérifie si elle se trouve déjà dans la zone de mémoire partagée de la mémoire SGA

Si une zone SQL partagée est détectée, le processus serveur vérifie les privilèges d'accès de l'utilisateur par rapport aux données demandées et la zone SQL partagée existante est utilisée pour le traitement de l'instruction. Si l'instruction ne se trouve pas dans la zone de mémoire partagée, une nouvelle zone SQL partagée est allouée pour celle-ci afin qu'elle puisse être analysée et traitée.

6
6

Le processus serveur extrait les valeurs des données nécessaires du fichier de données (table) ou des blocs de données stockés dans la mémoire SGA

Gestion d’une instance Oracle

Gestion d’une instance Oracle

traiter une instruction SQL

7
7

Le processus serveur modifie les données de la table dans la

mémoire SGA.

8
8

Lorsque la transaction est validée (commit), le processus LGWR enregistre immédiatement la transaction dans le fichier de journalisation (fichier redo log).

9
9

Le processus DBWn écrit les blocs modifiés sur le disque lorsque cela s'avère utile.

10
10

Le processus serveur envoie un message de succès ou d'erreur à l'application via le réseau.