Professional Documents
Culture Documents
LE SGBD ORACLE
ORACLE a t dit par la socit Oracle Corporation, implante aux USA RedWood Shores en Californie. Premier prototype 1977. Oracle version1 en 1979 premier SGBDR au monde. Depuis, les produits ORACLE nont cess dvoluer avec lvolution des technologies de linformation et de la communication. Aujourdhui ORACLE est un SGBD rparti, qui sest tourn vers le Web. Lenvironnement ORACLE est un ensemble de produits autour de sa base de donnes : ORACLE Server, gestionnaire de la base de donnes : il contrle toutes les actions au niveau de la BD comme laccs utilisateur et la scurit, stockage et intgrit des donnes. Le langage SQL et lextension PL/SQL (langage comprenant des commandes procdurales supportant la gestion des erreurs et dclaration de variables) ORACLE Designer est un ensemble de produits intgrs dans un rfrentiel unique dentreprise pour la conception des applications. ORACLE Developer : outils de dveloppement dapplications client/serveur ou Internet. ORACLE Discoverer : outil dinterrogation pour des utilisateurs qui ont besoin daccder par eux-mmes aux donnes, Datawarehouse, Datamart.
1
SQL*Plus
Serveur
PL/SQL
SQL
ORACLE SERVER
ORACLE est aujourdhui considr comme tant lun des meilleurs SGBD dans le monde, ce qui nous a men vouloir comprendre le fonctionnement dun tel systme. La version actuelle d ORACLE est : Oracle11g . Les composants principaux de larchitecture dORACLE sont les suivants : Les process Les structures mmoires Les fichiers
La System Global Area (SGA) reprsente lensemble des buffers ncessaires la gestion des transactions.
La SGA est galement appele Shared Global Area, elle est partage entre plusieurs utilisateurs. La SGA est une zone mmoire alloue au dmarrage dune instance, elle est restitue la fermeture de cette instance. Les donnes de la SGA sont partages par lensemble des utilisateurs connects un moment donn ; elles sont divises en plusieurs types de buffers :
Data Base Buffer Cache: Il contient les blocs de donnes, les blocs dindex, des blocs contenant les RollBack Segments (ils enregistrent les actions dune transaction pour la reprise en cas de panne) et des blocs pour la gestion du systme, les plus rcemment utiliss; il peut contenir des donnes modifies qui nont pas encore t enregistres sur disque. Redo Log Buffer: Il contient les redo entries, ensemble des modifications ralises sur la base ; ces redo entries sont mmorises sur un fichier redo log, qui pourra tre utilis en cas de panne. Shared Pool ou zone de partage des ordres SQL: cette zone est utilise pour mmoriser, analyser et traiter les ordres SQL soumis par les utilisateurs. Elle peut rutiliser les ordres SQL dj excuts.
6
Les Process Les Oracle Process sont diviss en trois catgories : les process utilisateurs, les Process Server et les background Process.
Les Background Process (Process dtachs) prennent en charge les mcanismes internes dOracle. Une instance Oracle contient au minimum quatre background process : DBWR, LGWR, SMON et PMON. DBWR : DataBase Writer : Son rle est de mettre jour les fichiers de donnes. Les blocs de donnes modifis en SGA sont stocks dans la base de donnes. LGWR : LoG Writer : Ce process crit squentiellement dans le fichier Redo Log courant des enregistrements Redo Log de la SGA. SMON : System MONitor : Il vrifie si la base a t arrte proprement. Si ce nest pas le cas, il rcupre dans les fichiers redo log les enregistrements valids, qui nont pas encore t crits dans la base par Oracle, pour les insrer. PMON : Process MONitor : Il administre les diffrents process dOracle. Il est charg de la libration des ressources occupes, par exemple dans le cas o un client teint sa machine sans se dconnecter. 7
Les autres process sont les suivants : CKPT : Checkpoint ARCH : Archiver RECO : Recover LCKn : LOCK SNPn : Snapshot Refresh Snnn : Shared server Dnnn : Dispatcher Pnnn : Parallel Query
Les process utilsateurs Un process utilisateur est dmarr lorsquun utilisateur excute un programme applicatif. Le process utilisateur : Excute loutil ou lapplication et est considr comme tant le client. En guise dexemple citons : SQL*plus, Forms,
Process Server : ils prennent en charge les demandes des utilisateurs. Ils sont responsables de la communication entre la SGA et le Process User. Les taches du process serveur o Analyser et excuter les commandes SQL o Lire les blocs de donnes partir du disque dans les zones partages de la SGA o Renvoyer les rsultats des commandes SQL au Process utilisateur Linstance dORACLE : Cest la combinaison de la SGA et des process dtachs de la base de donnes. Quand une instance est dmarre, les zones mmoires de la SGA sont alloues et les process dtachs sont lancs. Ne pas confondre une BD ORACLE et une instance dORACLE : linstance est dabord dmarre puis elle monte la BD (ouverture des fichiers). Les process serveurs et utilisateurs ne font pas partie de linstance dORACLE.
10
Mcanisme : Lorsquun utilisateur demande une donne, son processus va la chercher en SGA, si elle ny est pas, le processus va la chercher dans les fichiers de donnes. Toutes les transactions sont enregistres dans les fichiers Redo Log, en cas de problme la reprise aprs panne est assure par le process SMON au dmarrage dune nouvelle instance.
11
La base de donnes ORACLE La base de donnes ORACLE est compose de fichiers de donnes et de fichiers redo log tous tants rfrencs dans un ou plusieurs fichiers de contrle. Structure physique Fichiers de donnes Dfinition Contiennent toutes les donnes de la base : les tables, index, procdures, fonctions, ; ainsi que le dictionnaire de donnes (cr lors de la cration de la base de donnes) . Gardent des enregistrements de toutes les modifications effectues sur la base de donnes dans un but de restauration Conservent la dfinition des structures physiques et les tats de la Base de donnes: nom de la base, nom et chemin daccs des fichiers de donnes et Redo Log, date et heure de cration de la base.
Fichiers de contrle
12
Tablespace DATA
Table
Table
Index
ROLLBACK SEGMENT
DBfile1
DBfiles
DBfiles
13
LES TABLESPACES : Les donnes dune base Oracle sont mmorises dans une ou plusieurs units logiques appeles tablespaces et physiquement dans des fichiers associs ces tablespaces. Chaque base contient obligatoirement un tablespace SYSTEM, celui-ci contient les tables du dictionnaire de donnes, les procdures, les fonctions, les packages, les triggers et le rollback segment SYSTEM. Les autres tablespaces contiennent les segments de la base de donnes (tables, index,). LES ROLLBACK SEGMENTS Une base de donnes contient un ou plusieurs ROLLBACK SEGMENTS ; un rollback segment enregistre les actions dune transaction qui peuvent tre annules en cas dincident. Le rollback segment SYSTEM est cr lors de la cration de la base dans le tablespace SYSTEM ; il nest utilis que pour les transactions portant sur les donnes du dictionnaire. Un ou plusieurs autres rollback segments doivent exister pour les transactions portant sur des donnes utilisateur.
14
Usager 1
Usager n
Mta Base
(Description relations de base et relations systmes
BD
15
La structure de System R est relativement complexe, et le produit comporte un grand nombre de composants, que nous pouvons regrouper en deux grands sous-systmes : Le sous-systme de donnes relationnel (RDS) qui gre globalement toutes les interactions avec les utilisateurs, et certaines fonctions systmes comme loptimisation des requtes ou le contrle des autorisations. Cest ce sous-systme qui prpare lexcution de la requte. Le sous-systme de stockage qui peut tre vu comme un S.G.B.D de bas niveau. Il comporte une interface interne qui fournit des oprateurs daccs un tuple la fois aux relations de base. Les appels aux fonctions du DBSS doivent spcifier explicitement les segments et index utiliser. Le DBSS gre : Les allocations en mmoire secondaire La mmoire tampon Le contrle de transactions (concurrence et reprise aprs pannes) Le maintien automatique des index (la mthode daccs supporte est VSAM). 16
Excution dune requte De manire gnrale, une requte est analyse en suivant les tapes suivantes : analyse syntaxique de la question optimisation gnration dun plan dexcution de la requte Il existe deux manires dinterroger une base de donnes : 1. En mode interactif : lutilisateur interroge directement la base de donnes par des requtes en langage SQL, directement interprtables. Un plan dexcution de la requte est gnr en passant dabord par les phases danalyse syntaxique et doptimisation :
17
Requte
ANALYSEUR Arbre A OPTIMISEUR Arbre A INTERPRETEUR ENSEMBLES DES OPERATEUR RELATIONNELS SYSTEME DE STOCKAGE
Rsultat de la Requte
18
Lanalyseur transforme la question sous forme darbre o les nuds correspondent aux oprateurs et les feuilles aux attributs et aux relations.
Exemple : SELECT NOM, CODE FROM FOURNISSEUR, FOURNITURE WHERE VILLE = TUNIS AND NP = P2 ;
Cette requte SQL qui donne le nom et le code des fournisseurs domicilis Tunis et qui fournissent la pice P2, est traduite par larborescence suivante :
19
Project
NOM, CODE
=
Restrict Tunis
=
Ville
Restrict
.JOIN
NP
P2
=
NF Fournisseur
NF Fourniture
20
Diffrentes interprtations selon diffrents ordres dapplication de ces oprateurs conduisent des temps dexploitation diffrents. Do la ncessit de trouver des techniques qui permettent de trouver le meilleur ordre dapplication des oprateurs, les meilleurs chemins daccs aux relations. Ces techniques qui amliorent les performances des systmes se retrouvent au niveau de loptimiseur. En sortie de loptimiseur on aura donc un arbre optimis. Larbre prcdent sera transform par loptimiseur comme suit :
21
Restrict NF Fournisseur
Ville
=
Restrict NF
Fourniture
=
Tunis
NP
P2
22
Cet arbre est obtenu par application des oprateurs de rduction dabord en laissant les oprateurs de jointure la fin si possible. Linterprteur de requtes fournit le rsultat de la requte en excutant les oprateurs contenus dans larborescence laide de procdure associe ces oprateurs. Le systme de stockage doit permettre une organisation efficace des donnes et un accs rapide grce limplmentation de mthodes daccs appropries.
23
En mode programm : Les ordres SQL sont incorpors un programme dapplication crit en langage de programmation PL/1, C, COBOL, ou autre, appels langages htes. Dans ce cas la dmarche ncessite une approche de prcompilation. Le prcompilateur est un processeur qui regroupe les instructions SQL du programme dapplication dans un module de requtes de la BD, et les remplace dans le programme initial par des appels (CALLs) du langage hte un superviseur dexcution qui surveille les programmes SQL.
24
Analyse syntaxique
Prcompilateur Optimisation
Gnration de code
Module excutable
Module daccs DBSS : Gestion de donnes mmoire et zone tampon Supervision de lexcution
25
Module excutable
Fonctions du prcompilateur : analyse le programme source, remplacement des ordres SQL par des instructions dappels. Gnration dun module de requte de base de donnes qui passe par linterprteur SQL pour tre excut. Compilation du programme avec dition de liens ayant pour rsultat un module excutable. Lexcution seffectue par le sous-systme de stockage : le module excutable sexcute normalement, lorsque le premier call est atteint, le superviseur prend la main et excute le module daccs en invoquant le gestionnaire de donnes et le gestionnaire des tampons.
26
Fonction Cration / modification dans les SGBD relationnels La structure de donnes primaire dans les systmes relationnels est la relation de base. La forme gnrale de la requte permettant la cration dune relation dans SQL est la suivante : CREATE TABLE <nom de table> (dfinition dattribut [, dfinition dattribut]) ; O dfinition dattribut est : <nom-attribut (type-donne [, NONULL])> Les principaux types de donnes prdfinis sont : CHAR (n) : n prcise la longueur maximum, par dfaut 254 DATE : format mm/jj/aa DECIMAL(x,y) : x nombre total de chiffres y dtermine la place de la virgule en partant de la droite FLOAT (x,y) INTEGER LOGICAL De plus, on peut imposer la valeur dun attribut de ntre jamais indfinie (NONULL), vitant ainsi certaines incohrences dans une expression 27 arithmtique dans laquelle une des oprandes est indfinie.
Exemple : Notre base de donnes approvisionnement sera dcrite laide de cette commande de la manire suivante : CREATE TABLE FOURNISSEUR (NF CHAR(5) NONULL, NOM CHAR(20), CODE INTEGER, VILLE (CHAR (15)) ; CREATE TABLE PIECE (NP CHAR(5) NONULL, NOM INTEGER, VILLE CHAR (15)) ;
CREATE TABLE FOURNITURE (NF CHAR (5) NONULL, NP CHAR(5) NONULL, QTE INTEGER) ;
28
Les ordres CREATE TABLE peuvent tre mis tout moment dans la vie de la base et non pas comme les systmes classiques seulement la phase de cration du module ou du schma de la base.
Pour les cls primaires, il est recommand de les dfinir ds la cration de table car les donnes sont stockes selon lordre de cette cl. La commande de la cration de table est dans ce cas :
CREATE TABLE <nom de table> (dfinition dattribut [, dfinition dattribut]) CONSTRAINT nom_constrainte PRIMARY KEY (nom_Att1,,nom_Attn) Les attributs Att1, Attn reprsentent les attributs qui composent la cl primaire.
29
Les SGBD Rel peuvent aussi modifier tout moment le schma des relations existantes. Supprimer une relation : DROP TABLE <nom table> ; Ajouter un nouveau constituant afin de prendre en compte une information qui navait pas t prvue au dpart. ALTER TABLE <nom table> ADD FIELD (< nom attribut> type de donne) ; Exemple : ALTER TABLE FOURNITURE ADD FIELD (DATE CHAR (6));
Tous les n-uplets de la relation vont tre tendus de trois quatre champs. La valeur du nouveau champ est indfinie dans tous les cas.
Modifier une colonne existante : ALTER TABLE <nom table> MODIFY FIELD (< nom attribut> type de donne) ; Exemple modifier la taille du nom dans la relation fournisseur : ALTER TABLE Fournisseur MODIFY FIELD NOM (CHAR (40)) ;
30
Aprs la cration des tables, lutilisateur peut maintenant procder au chargement des donnes en utilisant linstruction INSERT de SQL. Pour insrer la pice P7 qui est un clou dans la relation PIECE nous crivons : INSERT INTO PIECE (NP, NOM, MATERIAU, POIDS, VILLE) values (P7, clou,?,?,?);
Les trois derniers champs de la pice insre sont indfinis, cela est possible car ces champs nont pas t dfinis avec loption NONULL.
31
Pour linsertion dun grand nombre de n-uplets dans la relation, il est vident que la commande dinsertion savre inadquate. De plus, les informations correspondantes se trouvent gnralement lextrieur de la base de donnes, dans un fichier de saisie ou dans une autre base. Pour rsoudre ce problme, les SGBD offrent plusieurs solutions : En utilisant une fonction de chargement en invoquant une commande spciale du systme et en lui prcisant la relation charger, le support des informations sources et les divers paramtres dcrivant le format des donnes. A laide dun programme de lecture criture crit dans un langage hte. A laide du PL-SQL dans Oracle On peut galement copier certaines lignes partir dune autre relation. Exemple : INSERT INTO FOURNISSEUR-TUNIS (NF, NOM) SELECT NF, NOM FROM FOURNISSEUR WHERE VILLE = Tunis ; Le nombre de colonnes et le type des colonnes dans le INSERT doivent correspondre ceux du rsultat du SELECT
32
34
Chemins daccs Le schma relationnel de la B.D. est le seul que doivent connatre les usagers normaux de la base de donnes gre par le SGBD. Il correspond lensemble de tables de valeurs, sans description du stockage physique des n-uplets et des chemins daccs quil faut utiliser pour retrouver les n-uplets dune relation dans un ordre donn ou pour aller dune relation une autre. Aucune requte relationnelle ne prcise les chemins daccs aux informations ou lordre dans lequel les oprateurs de produit sappliquent. Cest ladministrateur de demander au systme la cration des chemins daccs sur les relations stockes et au systme de choisir, grce loptimiseur, parmi les chemins disponibles celui qui est le plus adquat (indpendance physique). Un chemin daccs dfini sur une relation est appel INDEX. Un index est un arrangement des tuples dune relation en fonction des valeurs dun constituant ou dun groupe de constituants. Nous distinguons deux types dindex : index primaire et index secondaire. Lindex primaire est dfini sur la cl de la relation : une valeur de la cl, la fonction index ramnera un tuple. Lindex primaire fournit un accs direct aux tuples dune relation, i.e., lordre des tuples sur la cl concide avec lordre physique. Lindex secondaire peut tre dfini sur des constituants non cl : une valeur de lattribut de lindex, celui-ci ramnera un ou plusieurs tuples. Lindex secondaire est un rarrangement logique des tuples dune relation en fonction des valeurs dun attribut ou groupe dattributs.
35
En SQL, la commande de cration dun index est de la forme : CREATE [UNIQUE] INDEX <nom index> ON < nom relation> (nom attribut [ordre][,nom attribut [ordre]] ) ; O ordre est soit ASC ou DESC et sil nest pas spcifi, lordre ASC est pris par dfaut. Loption UNIQUE permet dune part de dfinir quun attribut (ou un groupe dattributs) est cl discriminante de la relation et dautre part de fournir un chemin daccs direct aux n-uplets ayant une valeur de cl donne. Pour dfinir les index primaires de notre base de donnes nous crivons : CREATE UNIQUE INDEX XF ON FOURNISSEUR (NF) ; CREATE UNIQUE INDEX XP ON PIECE (NP) ; CREATE UNIQUE INDEX XFP ON FOURNITURE (NF, NP) ; La cration dun index secondaire selon la ville des fournisseurs serait : CREATE INDEX XV ON FOURNISSEUR (VILLE) ;
36
Remarque : En permettant lexcution tout moment des instructions CREATE INDEX et DROP INDEX le SGBD assure lindpendance des programmes vis vis des chemins daccs (indpendance physique) : en effet, pour amliorer les performances dune application, nous avons besoin de changer lordre de stockage des informations. Ceci est possible laide de la dfinition dun index selon le nouvel ordre sans toucher aux programmes dapplication.
37
Catalogues ou mta-donnes Du point de vue dun SGBD relationnel, une base de donnes comporte des relations de la base et des vues. De plus pour chaque relation stocke, il peut exister un ou plusieurs chemins daccs. La manire la plus naturelle pour un SGBD relationnel de conserver toutes ces informations est de les stocker dans des catalogues qui sont eux mmes des relations stockes dans la base ; le SGBD permet aux usagers de consulter, grce au langage dinterrogation, les informations relatives la description de la base. Principaux catalogues pour dcrire une base de donnes relationnelle : Relation : contient un n-uplet pour chaque relation de la base de donnes y compris lui mme et les autres catalogues. On y trouve des informations sur le nom de la relation, son crateur, son degr, certaines statistiques sur son contenu etc. Attribut : pour chaque relation de la base dcrite dans le catalogue Relation, le catalogue Attribut comporte autant de lignes quil y a dattributs dans la relation. Chaque n-uplets dcrit un attribut : son nom, son type, sa longueur, etc. Chemin daccs : description des chemins daccs dfinis sur les relations de la base. Pour chaque index, par exemple, on y trouve la relation et les constituants concerns et sil sagit dun index primaire ou secondaire etc.
38
Exemple dune intension ainsi quune extension du schma partiel des catalogues : Relation RELATION : Chacun de ses tuples est un descripteur de relations qui peuvent tre de trois types : base, systme, ou vue.
Nom-rel Relation
Type S
Version
Fournisseur B .
10
110
100
3-11-08
39
Relation ATTRIBUT : Chacun de ses tuples dcrit un attribut dune relation systme, de base ou dune vue
Idf-att
11 12
02 02
Integer Char
06 10
01 02
40
Relation INDEX : Chaque tuple dcrit une relation index cre sur les relations de base ou systme
XF XV
02 02
P S
NOM VILLE
41