Administration de Bases de Données - Implantation d'une BD · Construire de vues mat erialis ees...
Transcript of Administration de Bases de Données - Implantation d'une BD · Construire de vues mat erialis ees...
Administration de Bases de DonneesImplantation d’une BD
Thierry Hamon
Bureau H202Institut Galilee - Universite Paris 13
&LIMSI-CNRS
https://perso.limsi.fr/hamon/Teaching/P13/ABD-AIR3-2019-2020/
AIR3 – ABD
1/113
Presentation du coursSuite du cours de AIR3
Objectifs de l’enseignement :Connaıtre et manipuler des notions liees a l’administrationd’un SGBD
Connaıtre l’architecture d’un SGBDSavoir configurer, optimiser et securiser des bases de donnees
Programme des enseignements
Implantation de Bases de DonneesOptimisation de Requetes, Evaluation de RequetesArchitecture de SGBD, Administration de BD
Repartition des enseignements
3 × 3h de cours4 × 3h de TP
2/113
Presentation du coursSuite du cours de AIR3
Objectifs de l’enseignement :Connaıtre et manipuler des notions liees a l’administrationd’un SGBD
Connaıtre l’architecture d’un SGBDSavoir configurer, optimiser et securiser des bases de donnees
Programme des enseignements
Implantation de Bases de DonneesOptimisation de Requetes, Evaluation de RequetesArchitecture de SGBD, Administration de BD
Repartition des enseignements
3 × 3h de cours4 × 3h de TP
2/113
Presentation du coursSuite du cours de AIR3
Objectifs de l’enseignement :Connaıtre et manipuler des notions liees a l’administrationd’un SGBD
Connaıtre l’architecture d’un SGBDSavoir configurer, optimiser et securiser des bases de donnees
Programme des enseignements
Implantation de Bases de DonneesOptimisation de Requetes, Evaluation de RequetesArchitecture de SGBD, Administration de BD
Repartition des enseignements
3 × 3h de cours4 × 3h de TP
2/113
Role d’un Administrateur d’une Base de Donnees(ABD ou DataBase Administrator DBA)
Double role de l’administrateur d’une Base de Donnees :
role organisationnel
Definition du schema conceptuel des donneesPartage de ces donnees par les utilisateurs
role technique
Mise en œuvre ce schemapartage a l’aide des capacites techniques du SGBD
3/113
Role d’un Administrateur d’une Base de Donneesrole technique
Installation du SGBD et des outils associes
Creation de la BD et ses composants conformement a unschema conceptuel
Surveillance de son evolution en modifiant, en creant ou ensupprimant certaines structures
Gestion des privileges d’accesAttribution et retrait de privileges d’acces aux donnees auxdifferents utilisateurs de la base de donnees
4/113
Role d’un Administrateur d’une Base de Donneesrole technique
Amelioration les performancesChoix de l’implantation optimale des donnees de facon aobtenir les meilleures performancesIdentification et prise en compte des utilisations qui serontfaites des donnees
Surveillance de la securite et la coherence des donneesMise en place de structures et de procedures permettant
de faire face a tous les incidentsde retrouver l’integrite et la coherence des donnees
5/113
Role d’un Administrateur d’une Base de Donneesrole technique
Echange les donnees entre la BD et le monde exterieur
Surveillance de l’integration des donnees en provenanced’autres applications ou BDMigration des donnees de la base vers d’autres applications ouBD
Outils a utiliser : SQL*DBA, SQL*Loader, SQLPLUS, etc.
6/113
Sources des transparents
F. Boufares, LIPN, Universite Paris Nord
7/113
Creation/definition d’une table
Attributs : types de donnees de base (predefinis par lesysteme – Numerique, Caractere, Texte, Date, etc.)
Attributs : types de donnees definis par l’utilisateur
Contraintes : controles de validite (Cles primaire etetrangeres, etc.)
Caracteristiques physiques :
Taux de remplissage des blocs, evolution, etc.Lieu de stockage (disque, MC, ), parallelisme, etc.Optimisations : Partitionnement, decoupage
8/113
Creation/definition d’une table
Indexer :
Accelerer les traitementReconstruire les blocs, etc.
Construire de vues materialisees (des pre-calculs, etc.)
Partager les donnees entre plusieurs utilisateursCreer des vues, des droits d’acces, des roles, des profiles, etc.
9/113
Creation/definition d’une tableCREATE TABLE nomtb ( a t t r i b u t s , c o n t r a i n t e s )
TABLESPACE nomtbspPCTUSED x1PCTFREE x2INITRANS x3MAXTRANS x4
STORAGE ( INITIAL n1 NEXT n2MINEXTENTS m1 MAXEXTENTS m2PCTINCREASE p )
PARALLEL p / NOPARALLEL ( a p p l i q u e r l e p a r a l l e l i s m e )
LOGGING / NOLOGGING ( pour ne pas c o p i e r l e s m i s e s a j o u rdans l e r o l l b a c k )
CACHE / NOCACHE ( permet de g a r d e r l a t a b l e en memoire ;a u t i l i s e r avec p r e c a u t i o n )
PARTITIONnement ( une s o r t e de decoupage de l a t a b l e )
10/113
Structure d’une base de donnees (Oracle)
une structure physique
une structure logique
un ensemble de vues donnant des visions partielles auxutilisateurs
Description de ces trois niveaux et la correspondance entre eux atravers le dictionnaire de donnees
11/113
Structure d’une baseElements composant d’une base :
Fichiers qui composent la base de donnees :
Fichier rollbackFichier tablespaceRedo logsFichiers de controle (Control files)Fichiers de trace et alert.log
Instances definies par un nom (SID)Il s’agit des processus qui gerent :
La coherence de la baseLa mise a jour, rollbacketc ..
Aussi le SGA (System Global Area)
12/113
Structure physique
Composee d’un ensemble de fichiers qui constituent le supportphysique de stockage de donnees
Trois types de fichiers :
Fichiers de donnees (Data Files)
Fichiers de reprise (Redo Log Files)
Fichiers de controle (Control Files)
Specification des Data Files et Redo Log lors de la creation ou lamodification de la base de donnees
13/113
Fichiers de donnees (Data Files)
Les fichiers de donnees assurent le stockage
des objets crees par les utilisateurs : tables, index, vues,clusters, etc.des structures necessaires au fonctionnement d’Oracle :dictionnaire de donnees
Un fichier de donnees est associe a une et une seule base dedonnees
Lors de la creation d’une base de donnees, il doit y avoir aumoins un fichier de donnees pour stocker le dictionnaire dedonnees
14/113
Taille d’un Data File
Exprimee en Kilo ou en Mega octets
Attribuee au moment de la creation du fichier, pouvant etremodifiee
Son choix depend de la taille de la base de donnees et de sonevolution
Le premier fichier de donnees cree doit avoir une taillesuperieure ou egale a 2Mo
15/113
Nom d’un Data File
Depend du systeme d’exploitation
Peut etre modifie, sauf pour le premier fichier
La modification se fait en deux etapes :
modification du nom du fichier en utilisant les commandes OSrepercussion de cette modification dans les fichiers de controle
16/113
Creation d’un Data FileRealisee selon quatre configurations :
Creation d’une base
CREATE DATABASE baseDATAFILE s p e c i f i c a t i o n f i c h i e r
Creation d’un tablespace
CREATE TABLESPACE t b sDATAFILE s p e c i f i c a t i o n f i c h i e r
Modification d’une base par ajout d’un nouveau fichier de donnees
ALTER DATABASE baseCREATE DATAFILE f i c h i e r AS s p e c i f i c a t i o n
Modification d’un tablespace par ajout d’un nouveau fichier dedonnees
ALTER TABLESPACE t b sADD DATAFILE s p e c i f i c a t i o n f i c h i e r
17/113
Modification d’un Data File
Deux cas de modifications :
modification du nom et de localisationmodification de la taille
Modification du nom : TableSpace en Offline (eviter que desdonnees soient accesssibles pendant le deplacement)
ALTER TABLESPACE o r a d a t a OFFLINE
ALTER TABLESPACE t b sRENAME DATAFILE ’ f i c h 1 ’ , ’ f i c h 2 ’ TO ’ f i c h 1 1 ’ , ’ f i c h 2 2 ’
ALTER DATABASE baseRENAME FILE ’ f i c h 1 ’ , ’ f i c h 2 ’ TO ’ f i c h 1 1 ’ , ’ f i c h 2 2 ’
18/113
Modification d’un Data File
Modification de la taille :
ALTER TABLESPACE t b sADD DATAFILE s p e c i f i c a t i o nAUTOEXTEND [ OFF | ON [NEXT e n t i e r [K |M] ][ MAXSIZE UNLIMITED | e n t i e r [K |M] ]
ALTER DATABASE baseDATAFILE ’ f i c h 1 ’ RESIZE e n t i e r [K |M]AUTOEXTEND [ OFF | ON [NEXT e n t i e r [K |M] ][ MAXSIZE UNLIMITED | e n t i e r [K |M] ]
19/113
Suppression d’un Data File
Solution 1 : en deux etapes
1 Suppression du tablespace associe au Data file
DROP TABLESPACE t b sINCLUDING CONTENTS
2 Suppression des fichiers physiques manuellement parcommande OS.
Solution 2 : en une seule etapeSuppression du tablespace associe au Data file ainsi que lesfichiers physiques
DROP TABLESPACE t b sINCLUDING CONTENTS and d a t a f i l e s
20/113
Fichiers Redo Log
Contiennent les modifications les plus recentes des donnees dela base
Utilises par Oracle pour remettre la base dans un etatcoherent apres une panne sans perdre les mises a jour quin’ont pas ete enregistrees dans les data files
Lors du redemarrage de l’instance, Oracle applique les mises a jourdes Redo Log sur les Data file (reprise a chaud)
Au moins deux fichiers par instance, utilises d’une facon circulaire
21/113
Fichiers Redo Log
Redo Log multiple : duplication des fichiers Redo Log surdifferents disquesLorsqu’un des fichiers est perdu ou endommage, son imagesur l’autre disque peut etre utilise
L’ensemble des Redo Logs actifs simultanement constitue ungroupeChaque fichier de ce groupe est dit membre
Avant de reutiliser un Redo Log plein, Oracle peut l’archiver sila base est en mode ARCHIVELOG (voir plus loin)
22/113
Creation d’un Redo Log
Possibilite de creer ou d’ajouter des Redo Logs dans une baseexistante :
CREATE DATABASE baseLOGFILE [GROUP e n t i e r ] ( ’ f i c h ’ , ’ f i c h ’ , . . . )SIZE e n t i e r [K |M] . . .
ALTER DATABASE baseADD LOGFILE [THREAD e n t i e r ] [GROUP e n t i e r ]
( ’ f i c h ’ , ’ f i c h ’ , . . . ) SIZE e n t i e r [K |M] . . .ADD LOGFILE MEMBER ’ f i c h ’ [ REUSE ] TO
{GROUP e n t i e r | ’ f i c h ’ }
23/113
Suppression d’un Redo Log
Suppression d’un Redo Log, d’un groupe ou d’un membre :
ALTER DATABASE baseDROP LOGFILE {GROUP e n t i e r | ( ’ f i c h ’ , ’ f i c h ’ , . . . ) }
. . .DROP LOGFILE MEMBER { ’ f i c h ’ | ( ’ f i c h ’ , ’ f i c h ’ , . . . ) }
Un Redo Log peut etre initialise par :
ALTER DATABASE baseCLEAR [ UNARCHIVED ] LOGFILE {GROUP e n t i e r |( ’ f i c h ’ , ’ f i c h ’ , . . . ) } . . . [UNRECOVERABLE DATAFILE ]
24/113
Control File
Contient les informations relatives a la structure physique dela base de donnees :
nom de la base de donneesnoms et localisations des Datafile et Redo Logstimestamp de creation de la basele nombre de sequence log courantinformations sur le checkpoint
Cree au moment de la creation de la base
25/113
Control File
Utilise lors de l’ouverture d’une base pour identifier lesDatafiles et les Redo Logs
Au moins un fichier de controleRecommandation : dupliquer ce fichier plusieurs fois
Mise a jour automatique a chaque modification de structurede la base
Noms specifies dans init.ora
26/113
Structure logique
La structure logique d’une base est composee
des tablespaces
des segments
des extensions (extents)
des blocs
Un ensemble d’objets logiques constitue d’objets de schema(schema objects)Les objets de schema constituent la structure relationnelle de labase
27/113
Tablespace
Une base de donnees est composee d’un ensemble d’uniteslogiques dites tablespaces
Un tablespace permet de regrouper un ensemble d’objetslogiques (tables, index, etc.)
Il peut etre utilise pour regrouper des objets logiques d’uneapplication pour que les operations de sauvegarde et derestauration soient efficaces
28/113
Structure d’une base de donnees
29/113
Tablespace
Chaque objet logique doit etre associe a un et un seultablespace
Chaque tablespace est identifie par un nom
Un tablespace peut etre supprime meme s’il contient desdonnees
Une base de donnees doit avoir au moins un tablespace appeleSYSTEM qui contient le dictionnaire de donnees
30/113
Tablespace
Un tablespace peut etre active (OnLine) ou desactive(OffLine)
Le tablespace SYSTEM ne peut jamais etre desactive
Un tablespace peut etre cree, modifie et supprime
Il est recommande de creer d’autres tablespaces pour lesobjets de la base
31/113
Creation de Tablespace
CREATE TABLESPACE t b sDATAFILE s p e c SIZE e n t i e r {M|K}[AUTOEXEND {OFF |ON} ][NEXT e n t i e r {M|K} ][ MAXSIZE {UNLIMITED | e n t i e r {M|K } ] } . . .[DEFAULT STORAGE c l a u s e s t o c k a g e ][ ONLINE | OFFLINE ][PERMANENT | TEMPORARY]
32/113
Modification d’unTablespace
ALTER TABLESPACE t b sADD DATAFILE s p e c SIZE e n t i e r {M|K}
[AUTOEXEND {OFF |ON} ][NEXT e n t i e r {M|K} ][ MAXSIZE {UNLIMITED | e n t i e r {M|K } ] } . . .
[RENAME ’ f i c h ’ , . . . TO ’ f i c h ’ , . . . ][COALESCE ][DEFAULT STORAGE c l a u s e s t o c k a g e ][ ONLINE | OFFLINE {NORMAL | TEMPORARY | IMMEDIATE} ][{BEGIN | END} BACKUP][READ {ONLY | WRITE} ][PERMENENT | TEMPORARY]
33/113
Suppression d’un Tablespace
DROP TABLESPACE t b s[ INCLUDING CONTENTS][CASCADE CONSTRAINTS]
INCLUDING CONTENTS supprime le contenu de tablespace
CASCADE CONSTRAINTS supprime les contraintes d’integritedes tables d’autres tablespaces qui se referent aux clesprimaires des tables du tablespace specifie
34/113
Gestion des tablespaces
L’administrateur peut consulter les vues du dictionnaire de donneessuivantes :
USER_EXTENTS, DBA_EXTENTS
USER_SEGMENTS, DBA_SEGMENTS
USER_FREE_SPACE, DBA_FREE_SPACE
DBA_USERS
DBA_TS_QUOTAS
USER_TABLESPACES, DBA_TABLESPACES
DBA_DATA_FILES
V$DATAFILE
35/113
Utilisation des tablespaces
Un tablespace peut etre attribue par defaut a un utilisateur
Les objets de cet utilisateur seront stockes dans ce tablespacesauf contre indication
CREATE | ALTER u s e r IDENTIFIED [BY mdp | EXTERNALLY ][DEFAULT TABLESPACE t b s ][TEMPORARY TABLESPACE t b s ][QUOTA { e n t i e r {M | K} | UNLIMITED} ON t b s ]
36/113
Exemple
s e l e c t ∗ from d b a t a b l e s p a c e s ;a l t e r t a b l e s p a c e USERS o f f l i n e ;a l t e r t a b l e s p a c e USERS
rename d a t a f i l e ’ c :\ d a t a f i l e \ tp \db\ g e s t e e . dbf ’ TO’ c :\ d a t a f i l e \ tp \db\ g e s t e e 0 1 . dbf ’
a l t e r t a b l e s p a c e USERS o n l i n ec r ea te t a b l e s p a c e t e s t
d a t a f i l e ’ c :\ d a t a f i l e \Tp\DB\ d a t a t e s t . dbf ’ s i z e 20M;a l t e r t a b l e s p a c e t e s t
add d a t a f i l e ’ c :\ d a t a f i l e \Tp\DB\ d a t a t e s t 2 . dbf ’ s i z e 3M;c r ea te t ab l e t o t o ( c o l 1 number , c o l 2 number )
t a b l e s p a c e t e s t
37/113
Retour sur le schema physique (SQL2)
c r ea te t ab l e COURS(NUM COURS NUMBER( 2 ) ,NOMC VARCHAR( 2 0 ) ,NBHEURES NUMBER( 2 ) ,ANNE NUMBER( 1 ) ,c o n s t r a i n t PK COURS pr imary key (NUM COURS) ,c o n s t r a i n t NN COURS NOMC check (NOMC I S NOT NULL) )
38/113
Ajout d’un tablespace dans le schema physique
PCTUSED de 98% initialement une seule transactionPCTFREE de 1% peut acceder aux lignes a la fois
255 transsactions au maximumTaille du premier extent : 11280 Ko Nombre illimite d’extents alloues au segmentTaille du premier extent : 11 Mo Nombre de blocs dans lequel Oracle1 extent alloue a la creation du segment peut ecrire des donnees : 9 (1 groupe de blocs)
Possibilite de traitement en parallele
TABLESPACE S COURS DATAPCTUSED 98PCTFREE 1INITRANS 1MAXTRANS 255STORAGE ( INITIAL 11280K
NEXT 11MMINEXTENTS 1MAXEXTENTS u n l i m i t e dPCTINCREASE 0FREELISTS 9FREELIST GROUPS 1 )
PARALLEL ;
39/113
Ajout dans le schema physiquec r ea te t ab l e PROFESSEURS(NUM PROF NUMBER( 4 ) ,NOMP VARCHAR2( 2 5 ) ,SPECIALITE VARCHAR2( 2 0 ) ,DATE ENTREE DATE,DER PROM DATE,SALAIRE BASE NUMBER,SALAIRE ACTUEL NUMBER,c o n s t r a i n t PK PROFESSEURS pr imary key (NUM PROF)c o n s t r a i n t NN PROFESSEURS NOMP check (NOMP I S NOT NULL)
)
TABLESPACE S PROF DATAPCTUSED 98PCTFREE 1INITRANS 6MAXTRANS 255STORAGE ( INITIAL 20M NEXT 5M)NOPARALLEL ;
40/113
Ajout dans le schema physique
c r ea te t ab l e CHARGE(NUM PROF NUMBER( 4 ) ,NUM COURS NUMBER( 4 ) ,c o n s t r a i n t PK CHARGE pr imary key (NUM COURS, NUM PROF)c o n s t r a i n t FK CHARGE COURS f o r e i g n key (NUM COURS)
r e f e r e n c e s COURS (NUM COURS)c o n s t r a i n t FK CHARGE PROFESSEURS f o r e i g n key (NUM PROF)
r e f e r e n c e s PROFESSEURS (NUM PROF) )
TABLESPACE S CHARGE DATAPCTUSED 98PCTFREE 1INITRANS 1MAXTRANS 255STORAGE ( INITIAL 11280K
NEXT 11MMINEXTENTS 1MAXEXTENTS u n l i m i t e dPCTINCREASE 0FREELISTS 9)
PARALLEL 3 ;
41/113
SEGMENT, EXTENSION, BLOC
Lors de la creation d’un fichier, Oracle reserve tout l’espacequi lui est associe
A l’interieur de ce fichier, l’espace disque est geredynamiquement au fur et a mesure de l’utilisation de la basede donnees
Gestion selon trois niveaux de granularite :
segmentextensionbloc
42/113
SEGMENT, EXTENSION, BLOC
43/113
Bloc de donnees
Un bloc de donnees est la plus petite unite logiqued’entree/sortie utilisee par Oracle
Appele egalement Bloc logique ou Page
A distinguer du bloc physique utilise par les OS(bloc physique = ensemble d’octets sur disque)
Taille d’un bloc de donnees
attribuee par defaut selon OS (2 , 4 ou 8 Ko)modifiable par DB_BLOCK_SIZE = n
44/113
Format d’un bloc de donnees
Les blocs de donnees sont organises de la meme facon quelque soitleur contenu : donnees, index ou cluster
45/113
Format d’un bloc de donnees
Entete : contient des informations generales (adresse du bloc,type du segment, etc)
Liste des tables : utilisee uniquement pour les clusters.Contient des informations relatives aux tables groupees ayantdes donnees dans ce bloc
Liste des lignes : contient des informations relatives aux lignessituees dans ce bloc (adresse)
Espace libre : utilise pour l’insertion de nouvelles lignes ou lamise a jour des lignes necessitant de l’espace
Reste du bloc : reserve aux donnees
46/113
Organisation d’une ligne
Ordre de stockage des colonnes :
determine par Oraclepeut differer de celui utilise lors de la creation de la table
Ajout d’une nouvelle colonne a une table : la colonne setrouve toujours en derniere position
47/113
Gestion de l’espace des blocs
Parametres PCTFREE et PCTUSED :
Gestion de l’espace libre des blocs de donnees
Utilisation dans les commandes de creation ou de modificationde tables, clusters, snapshot et snapshot log
Le parametre PCTFREE peut etre utilise egalement dans lescommandes de creation et de modification d’index
48/113
PCTFREE
Definition du pourcentage d’espace dans un bloc qui doit etremaintenu libre pour les eventuelles mises a jour des lignes dublocExemple : PCTFREE = 15Possibilite d’inserer de nouvelles lignes dans le bloc tant quel’espace libre > 15%
Criteres de choix
mode d’utilisation de la table ou de l’index associesuperieur a 10 si la mise a jour augmente souvent la tailleinferieur a 10 dans le cas contraire
49/113
PCTFREE
Chercher un compromis entre le gain d’espace etl’amelioration des performances
valeur faible : gain d’espace et degradation des performances acause de la fragmentation des donneesvaleur elevee : perte d’espace et un gain de performances
50/113
PCTUSED
Utilise simultanement avec le parametre PCTFREE (valeur pardefaut est 40)
Un bloc est initialement vide
Insertions de nouvelles lignes jusqu’a atteindre PCTFREE
Possibilite d’insertion de nouvelles lignes dans le bloc que si lepourcentage d’espace utilise devient inferieur a PCTUSED
A nouveau, possibilite d’insertion de nouvelles lignes jusqu’ace que l’espace libre atteint PCTFREE
51/113
Exemple PCTFREE et PCTUSED
PCTFREE = 20, PCTUSED = 40
52/113
RemarquesPCTFREE
Permet de specifier l’espace libre laisse dans le bloc pourrealiser les mises a jour des lignes stockees dans le blocPar defaut, la valeur de ce parametre est egale a 10Dans tous les cas, la somme de PCTFREE et de PCTUSED nepeut exceder 100Lorsque l’espace libre dans un bloc atteint PCTFREE, aucunenouvelle ligne n’est inseree dans le bloc
PCTUSEDLorsque l’on ne peut plus inserer de lignes dans le bloc(l’espace libre restant dans le bloc devient egal a PCTFREE)
le bloc n’est plus utilise pour inserer de nouvelles lignes tantque l’espace utilise n’est pas redescendu en dessous de lavaleur de PCTUSED
53/113
Remarques
Les consequences d’un petit PCTFREE :
Moins d’espace est reserve au niveau du bloc pour effectuer lesmises a jour des lignes existantesPermet aux insertions de mieux remplir le blocPermet d’economiser de l’espace dans la mesure ou les blocssont mieux remplisAugmente le temps de traitement dans la mesure ou Oracledoit regulierement reorganiser les blocs lorsque l’on insere oumodifie des lignesAugmente les temps de traitement dans la mesure ou les misesa jour peuvent conduire a la generation de chaınages entredifferents blocs
Un petit PCTFREE est utilise pour les objets ayant une faibleactivite en mise a jour
54/113
Remarques
Les consequences d’un grand PCTFREE :
Plus d’espace est reserve au niveau du bloc pour effectuer lesmises a jour des lignes existantesPlus de blocs peuvent etre necessaires pour gerer la memequantite de donnees (moins de lignes sont stockees dans lesblocs)Diminution du temps de traitement dans la mesure ou lesreorganisation les blocs sont moins nombreusesAmelioration des performances en MAJ dans la mesure ou leschaınages des blocs sont evites
Un grand PCTFREE est necessaire pour les objets ayant uneforte activite en mise a jour
55/113
Remarques
Les consequences d’un petit PCTUSED :
Les blocks sont moins remplisReduction des couts de traitements lors des commandesINSERT UPDATE pour mettre a jour la FREELIST quand unbloc est utilise a moins de PCTUSED pourcentAugmentation de la consommation d’espace dans la base dedonnees
Les consequences d’un grand PCTUSED :
Le blocs sont mieux remplisAmelioration de la gestion d’espace. Les blocs sont mieuxremplisAugmentation du cout des insertions et des mises a jour
56/113
Autres parametrages
INITRANS
Nombre initial de transactions pouvant acceder simultanementaux lignes contenues dans un blocL’espace est reserve en entete de chaque bloc de donnees etd’indexLa valeur par defaut est 1 pour les donnees et 2 pour lesindexes
MAXTRANS
Le parametre MAXTRANS permet de limiter le nombre detransactions
57/113
Autres parametrages
FREELISTS
Liste des blocs libres par objetPar defaut, la valeur est egale a 1En cas de contention sur la freelist, les performances desapplications peuvent etre altereesPour identifier ce probleme,
1 il suffit de consulter le contenu de la table v$waitstat de lafacon suivante :
s e l e c t c l a s s , count w a i t sfrom v $ w a i t s t a t where c l a s s = ’ f r e e l i s t ’ ;
58/113
Autres parametrages
2 Il faut ensuite comparer le nombre � waits � sur les blocslibres par rapport au nombre total de demandes de donneessur la meme periode.
s e l e c t sum( value ) g e t sfrom v $ s y s s t a t where namei n ( ’ db b l o c k g e t s ’ , ’ c o n s i s t e n t g e t s ’ ) ;
3 Si le ratio waits/gets est inferieur a 1%, il faut ajouter desfreelist
59/113
Extent (extension)
Unite logique d’allocation d’espace
composee d’un ensemble contigue de blocs de donneesalloues simultanement a un segment
Tout segment est initialement cree avec au moins uneextension appelee extension initial (INITIAL EXTENT)
Lorsque l’espace d’un segment est completement utilise,attribution par Oracle d’une nouvelle extension dite extensionsupplementaire (INCREMENTAL EXTENT)
60/113
Procedure d’attribution d’une nouvelle extension
1 Recherche dans le tablespace contenant le segment le premierensemble contigue de blocs libres de taille au moins egale acelle de l’extension supplementaire
2 Si la recherche n’aboutit pas, fusion des blocs libres pourconstituer des ensembles de blocs libres de taille superieure,puis reprend la recherche
3 Si de nouveau la procedure de recherche n’aboutit pas,message d’erreur signale
4 Mise a jour de l’entete du segment et du dictionnaire dedonnees pour tenir compte de la nouvelle extension
61/113
Liberation des extensions
Liberation des extensions d’un segment que lorsque lesegment est supprime suite a la suppression d’une table, d’uncluster, etc.
Lorsque des extensions sont liberees, mise a jour dudictionnaire de donnees
62/113
Taille des extensionsDefinition de la taille des extents par les parametres de la clauseSTORAGE :
STORAGE ( INITIAL n1 NEXT n2MINEXTENTS m1 MAXEXTENTS m2PCTINCREASE p )
n1 : taille du premier extent alloue lorsque un segment estcree
n2 : taille du second extent alloue au segment
m1 : nombre d’extents alloues a la creation du segment
m2 : nombre total d’extents pouvant etre alloues a segment
p : pourcentage d’accroissement de la taille du segment I + 1par rapport a celle du segment I (I > 2).
taille du segment I + 1 = (taille du segment I ) ∗ (1 + p/100)
63/113
Exemple
STORAGE ( INITIAL 50K NEXT 50KMINEXTENTS 1 MAXEXTENTS 5PCTINCREASE 50)
Si la taille d’un bloc = 2Ko, la taille des differents extents sera :
1er Extent : 50Ko
2eme Extent : 50Ko
3eme Extent : Arrondi(50 ∗ 1, 5) = 76Ko
4eme Extent : Arrondi(76 ∗ 1, 5 = 114Ko
5eme Extent : Arrondi(114 ∗ 1, 5) = 172Ko
64/113
ExempleDonner des valeurs explicites dans la clause storage des tables duschema INFO2
Il existe deja dans la base, le tablespace suivant :
Create t a b l e s p a c e s t o r a g e s t a n d a r dd a t a f i l e ’ c :\ d a t a b a s e \ s t r g s t d 0 1 . dbf ’s t o r a g e ( i n i t i a l 1 M next 5M maxextents 1 0 0 0 ) ;
Solution 1 :
Create tab le t a b s t d ( c o l 1 number )t a b l e s p a c e s t o r a g e s t a n d a r d ;
Solution 2 :
Create u s e r INFO2 i d e n t i f i e d by INFO2defau l t t a b l e s p a c e STORAGE STANDARD ;
65/113
Segment
Compose d’un ou de plusieurs extents contenant les donneesd’une structure logique dans un tablespace
Quatre types de segments :
segments de donneessegments d’indexsegments temporairessegments de rollback
66/113
Structure d’une base de donnees
67/113
Segments de donnees
Stockage des donnees des tables et des clusters utilisateurs etsysteme
Chaque table possede un et un seul segment creeautomatiquement lors de la creation de la table
Un cluster contient un seul segment pour stocker toutes lesdonnees des tables en cluster
La maniere dont les extents sont alloues dans un segment estspecifiee par les parametres de stockage lors de la creation dela table ou du cluster
68/113
Segments d’index
Stockage des donnees d’index separement des donnees
Chaque index est contenu dans un segment distinct cree lorsde la creation d’index
Lors de la creation d’index, on peut preciser le tablespace danslequel sera cree le segment d’indexLe tablespace peut etre different de celui du segment dedonnees de la table associee
69/113
Segments temporaires
Utilises pour le traitement des commandes SQL necessitantun espace disque temporaire (order by, group by, distinct,union, instersect ou minus)
Une meme commande SQL peut necessiter plusieurs segmentstemporaires
Creation automatique en cas de besoin et suppression apresl’execution de la commande
le tablespace dans lequel sont crees les segments temporairesest defini a l’aide de l’option temporary tablespace decreate/alter user
70/113
Segments rollback
Enregistrement des actions effectuees par les transactions
Stockage des donnees avant modification par les transactionspossibilite d’annulation de leur effet en cas de besoin
Composantes d’un segment rollback : rollback entries
Chaque roolback entry contient les informations suivantes :
identification du bloc modifie (noms des fichier et ID du bloc)valeurs des donnees avant modification par la transaction
71/113
Controle de transactionsCommandes COMMIT et ROLLBACK
Lancer une transaction avec la premiere commande du LMD ala suite d’un COMMIT ou un ROLLBACK
Utiliser le COMMIT ou le ROLLBACK de SQL pour terminer unetransaction
72/113
Commande ROLLBACK
73/113
Controle de transactionsDeterminer le traitement des transactions pour le bloc PL/SQLsuivant
BEGININSERT INTO temp ( num col1 , num col2 , c h a r c o l )
VALUES ( 1 , 1 , ’ROW 1 ’ ) ;SAVEPOINT a ;INSERT INTO temp ( num col1 , num col2 , c h a r c o l )
VALUES ( 2 , 2 , ’ROW 2 ’ ) ;SAVEPOINT b ;INSERT INTO temp ( num col1 , num col2 , c h a r c o l )
VALUES ( 3 , 3 , ’ROW 3 ’ ) ;SAVEPOINT c ;ROLLBACK TO SAVEPOINT b ;COMMIT;
END;
74/113
Creation de Rollback
CREATE ROLLBACK SEGMENT r o l l backTABLESPACE t b sSTORAGE c l a u s e s t o c k a g e
75/113
Modification et suppression de Rollback
Modification de Rollback
ALTER ROLLBACK SEGMENT r o l l backOFFLINE | ONLINESTORAGE c l a u s e s t o c k a g eOPTIMAL TO [ e n t i e r K |M] [NULL ]SHRINK TO [ e n t i e r K |M]
Suppression de Rollback
DROP ROLLBACK SEGMENT r o l l back
76/113
Exemple : utilisation d’un ROLLBACK SEGMENT
Definition d’un rollback segment particulier a utiliser pour unetransaction :
SET TRANSACTION USE ROLLBACK SEGMENT r b s l a r g e ;
Creation d’un ROLLBACK SEGMENT RBS_Large
create ro l l back segment r b s l a r g et a b l e s p a c e INFO2 STORAGE (
INITIAL 50K NEXT 10KMINEXTENTS 100 MAXEXTENTS 1000)
Modification du rollback segment (mise online)
a l t e r ro l l back segment r b s l a r g e o n l i n e
77/113
Gestion et suivi des Rollbacks
Liste des rollbacks de la base
s e l e c t ∗ from s y s . d b a r o l l b a c k s s e g s ;
Affichage des statistiques des Rollback en cours d’utilisation
s e l e c t n . name , s . e x t e n t s , s . r s s i z e , s . o p t s i z e ,s . hwmsize , s . x a c t s , s . s t a t u s
from v $ r o l l n a m e n , v $ r o l l s t a t swhere n . usn=s . usn
Quelles transactions utilisent quels rollback segments ?
s e l e c t s . username , t . x i d u s n , t . u b a f i l ,t . ubablk , t . u s e d u b l k
from v $ s e s s i o n s , v $ t r a n s a c t i o n twhere s . s a d d r=t . s e s a d d r
78/113
Gestion automatique des Undo Tablespace (9i)
Objectifs :
Gestion moins contraignante par le DBA des segments deRollback(moins de probleme concernant leur taille)
Possibilite d’historiser les modifications sur plusieursgenerations de transactions
79/113
Exemple de parametrage
Parametrage du temps de retention des donnees dans UndoTablespace :
Alter system set u n d o r e t e n t i o n=nbre s e c o n d e s /∗ d e f a u t 30 s e c o n d e s ∗/
Ora-1555 (snapshot too old)
Plus l’intervalle de retention choisi est grand, plus le tablespaceUNDO devra etre volumineux
80/113
Creation d’une base avec UNDO Tablespace (9i)
Create d a t a b a s e TestundoMAXINSTANCES 1 MAXLOGHISTORY 1M a x l o g f i l e s 5 maxlogmenbers 3m a x d a t a f i l e s 100
D a t a f i l e ’ I :\ o r a c l e \ o r a d a t a \ t e s t \ system01 . dbf ’s i z e 250M r e u s e
Autoextend on next 1024 k mas i ze u n l i m i t e de x t e n t management l o c a l
De fau l t Temporary T a b l e s p a c e TempT e m p f i l e ’ I : / o r a c l e / dbs / t e s t . dbf ’ s i z e 40M
r e u z e a u t o e x t e n d on next640 k m a x s i z e u n l i m i t e d
81/113
Creation d’une base avec UNDO Tablespace (9i)
Undo T a b l e s p a c e ’ UNDOTBS1 ’d a t a f i l e ’ i :\ o r a c l e \ o r a d a t a \ t e s t \ undotbs01 . dbf ’s i z e 200M r e u s e
a u t o e x t e n d on next 5120 k m a x s i z e u n l i m i t e d
Character s e t WE8MSWIN1252 NATIONAL cha r a c t e r s e t AL16UTF16
LOGFILE GROUP 1 ( ’ I :\ o r a c l e \ o r a d a t a \ t e s t \ redo01 . l o g ’ )s i z e 102400 k
GROUP 2 ( ’ I :\ o r a c l e \ o r a d a t a \ t e s t \ redo02 . l o g ’ )s i z e 102400 k
GROUP 3 ( ’ I :\ o r a c l e \ o r a d a t a \ t e s t \ redo03 . l o g ’ )s i z e 102400 k
;
82/113
Gestion de Tablespace UNDO
Si le parametre undo_management =’AUTO’ et si aucunTablespace Undo n’est cree :Oracle cree un tablespace Undo SYS_UNDO
cat init.ora
.................
###########################################
# Base de donnees utilisant le tablespace Undo
# pour la gestion des mises a jour
###########################################
undo_management=AUTO
undo_retention=10800
undo_tablespace=TBSUNDO
......................
83/113
Gestion de Tablespace UNDO
Implementation de tablespace Undo
1 Creation d’un tablespace UNDOExemple : TBSUNDO
2 Specifier le TBS Undo dans init.ora
UNDO_TABLESPACE=TBS_UNDO
undo_management=auto
84/113
Gestion de Tablespace UNDO
Parametrage du tablespace Undo de la base
CREATE DATABASE <SID > . . . UNDO TABLESPACE undotbsDATAFILE ’ g :\ o r a c l e \ o r a d a t a \ o r a f r a n c e \ undotbs . dbf ’s i z e 100M;
Creation du tablespace UNDO
CREATE UNDO TABLESPACE u n d o b i sDATAFILE ’ g :\ o r a c l e \ o r a d a t a \ o r a f r a n c e \ undotbs . dbf ’s i z e 100M;
Modification du tablespace UNDO utilise
ALTER SYSTEM SET UNDO TABLESPACE=u n d o b i s ;
85/113
Partitionnement des donnees
Objectifs :
Organiser les donnees pour ameliorer les performances
Acces aux donnees avec un niveau de granularite plus fin
86/113
Partitionnement des donnees
Avantages :
Creation de tables plus grandes que la taille permise (au dela de lalimite physique du disque ou de la partition SF)Possibilite de stocker les partitions dans des endroits differents
Suppression tres rapidement des donnees plus utiles ou non utiliseesPossibilite de destruction de la partition pour supprimer les donnees
Optimisation de requetes en accedant uniquement aux donneesnecessaires(sinon prise en compte/consultation de tous les enregistrements)
→ Partitionnement de tables : utilise aussi et generalement pourles BD reparties
87/113
Techniques de partitionnementFragmentation horizontale
Decoupage horizontal de la table
Repartition des enregistrements dans plusieurs partitions
Necessite de definir d’une condition de partitionnement(permet de determiner la partition dans laquelle sera stockel’enregistrement)
Recuperation de tous les enregistrements (regroupement descontenus des partitions) : union d’ensemble
88/113
Techniques de partitionnementFragmentation horizontale
89/113
Techniques de partitionnementFragmentation verticale
Decoupage vertical de la table
Repartition des colonnes dans plusieurs partitions
Possibilite de separer les donnees frequemment utilisees desdonnees accedees plus rarement
Recuperation de tous les enregistrements : jointure entre lespartitions
90/113
Techniques de partitionnementFragmentation verticale
91/113
Partitionnement : complements
Possibilite
d’utiliser d’un partitionnement vertical et horizontal sur unememe table
de definir des partitions de partitions
92/113
Schema PhysiqueDefinition d’une partition horizontale
c r ea te t ab l e PROFESSEURS(NUM PROF NUMBER( 4 ) ,
. . .c o n s t r a i n t PK PROFESSEURS pr imary key (NUM PROF) )
PARTITION BY RANGE (NUM PROF)(PARTITION P1 VALUES LESS THAN (1000)
TABLESPACE ECOLE PARIS ,PARTITION P2 VALUES LESS THAN (2000)
TABLESPACE ECOLE TUNIS) ;
s e l e c t ∗ from PROFESSEURS PARTITION ( P1 ) ;
s e l e c t ∗ from PROFESSEURS PARTITION ( P2 ) ;
93/113
Schema PhysiqueDefinition d’une partition horizontale
c r ea te t ab l e PROFESSEURS(NUM PROF NUMBER( 4 ) ,
. . .c o n s t r a i n t PK PROFESSEURS pr imary key (NUM PROF) )
PARTITION BY RANGE (DATE ENTREE)(
PARTITION p 200312 VALUES LESS THAN( t o d a t e ( ’ 2004−01−01 ’ , ’YYYY−MM−DD ’ ) )
PARTITION p 200406 VALUES LESS THAN( t o d a t e ( ’ 2004−07−01 ’ , ’YYYY−MM−DD ’ ) )
PARTITION p 200412 VALUES LESS THAN( t o d a t e ( ’ 2005−01−01 ’ , ’YYYY−MM−DD ’ ) )
) ;
94/113
Index
Objectifs :
Verification des contraintes d’unicite (cle, contrainteexplicite) : index crees automatiquement
Amelioration de l’acces aux donnees
Utilisation de la cle d’une tableUtilisation d’autres attributsNB: Possilite d’utilisation d’un ou plusieurs attributs (indexcomposite)
Positionnement d’un index sur des informations permettant dediminuer le cout des acces
Attention : la definition d’un index utilise de l’espace disque
95/113
Creation d’Index
CREATE [UNIQUE | BITMAP ] INDEX [<schema>.]<nom index>ON <nom de table>
(<nom de co lonne> [ASC |DESC][ ,<nom de co lonne> [ASC |DESC ] ]
, . . . )
CREATE INDEX IndNomPrenomProfON I n d i v i d u ( nomProf , prenomProf ) ;
96/113
Type d’Index
Arbres equilibres (B-arbre - par defaut) : toutes les branchesde l’arbre ont la meme longueur (reduction importante dunombre d’acces)
Bitmap : definition d’une chaıne de bits pour chaque valeur(si peu de valeurs sont possibles)
97/113
Index type B-arbre (B-tree)Exemple
Chaque cle est atteinte en au plus 3 acces
98/113
Index type BitmapExemple
Table contenant les identifiants de Professeur et les classes danslaquelles ils interviennent (valeurs de l’attribut : 1, 2, 3)
NumProf ... civilite ...
23 M12 Mme45 M76 Melle87 M19 Mme34 M56 M97 Melle22 Mme
civilite Valeur Index
M 001Mme 010Melle 100
Recherche des elements de civiliteMelle : operation ET binaire entre lavaleur de l’index et ’100’
99/113
Cas d’utilite d’un index
Attributs utilises dans des jointures
Attributs servant souvent pour les selections
Table de gros volume dont la majorite des requetesselectionne moins de 15% des lignes
index Bitmap : attribut avec peu de valeurs distinctes
index B-arbre : attribut avec beaucoup de valeurs distinctes
100/113
Cas ou un index est inutile
Beaucoup de modification (insertion/suppression) de tableNecessite de recreer l’index !
Table de petit volume
(sauf Oracle) Requete SQL dont la clause WHERE fait appel aune fonction
Utilisation de NULL dans la requete (WHERE ... is NULL)
101/113
Schema PhysiqueAjout d’index
c r ea te t ab l e COURS (NUM COURS NUMBER( 2 ) ,. . . c o n s t r a i n t PK COURS pr imary key (NUM COURS) , . . . ) ;
c r ea te t ab l e PROFESSEURS (NUM PROF NUMBER( 4 ) ,. . . c o n s t r a i n t PK PROFESSEURS pr imary key (NUM PROF) , . . . ) ;
c r ea te t ab l e CHARGE (NUM PRO F . . . , NUM COURS . . . ,c o n s t r a i n t PK CHARGE pr imary key (NUM COURS, NUM PROF)c o n s t r a i n t FK CHARGE COURS
f o r e i g n key (NUM COURS)r e f e r e n c e s COURS (NUM COURS) , . . . ) ;
CREATE INDEX NDX PROF ON PROFESSEURS (NUM PROF) ;CREATE INDEX NDX COURS . . .
CREATE BITMAP INDEXNDX PROF ON PROFESSEURS (NUM PROF) ;
CREATE INDEX NDX COURS . . .
102/113
Vues
Une vue est
une table virtuelle
le resultat d’une requete que l’on nomme
Objectifs :
Simplification des requetes complexes
Resolution des problemes de confidentialite
Garantie de l’integrite d’une base
103/113
Creation d’une vue
CREATE [OR REPLACE ] [ FORCE |NO FORCE ]VIEW <nom de vue> [< l i s t e a t t r i b u t s >)]
AS <c l a u s e se lect>[WITH CHECK OPTION [CONSTRAINT <nom de c o n t r a i n t e > ] ][WITH READ ONLY]
Exemple :
CREATE VIEW ProfMath ASSELECT ∗ FROM PROFESSEURS WHERE = ’ Mathematique ’ ;
104/113
Utilisation d’une vue
SELECT . . . FROM <nom de vue> WHERE . . .
Exemple :
SELECT ∗ FROM ProfMath where age > 30 ;
Utilisation du nom de la vue : dans toute requete ou le nom d’unetable peut etre sepcifie (SELECT, UPDATE, DELETE, INSERT, GRANT)
105/113
Suppression et renommage
Suppresion :
DROP VIEW <nom de vue>
supprime la vue mais pas les donnees
Renommage :
RENAME <a n c i e n nom de vue> TO<nouveau nom de vue>
Liste des vues : Consultation des tables systemeALL_CATALOG, USER_VIEWS et ALL_VIEWS
106/113
Exemple de simplification de requetes complexes
CREATE VIEW F i l m C r i t i q u e ( NumFilm , T i t r e , NomReal ,NomCrit , Note ) AS
SELECT F . NumFilm , T i t r e , I 1 . NomIndiv idu , I 2 . NomIndiv idu ,Note
FROM Fi lm F , I n d i v i d u I 1 ; I n d i v i d u I2 , C r i t i q u e CWHERE C . NumFilm = F . NumFilm
AND C . NumCrit ique = I 2 . NumIndiv iduAND F . N u m R e a l i s a t e u r = I 1 . NumIndiv idu
Utilisation :
SELECT NumFilm , T i t r e , NomCrit , NoteFROM F i l m C r i t i q u eWHERE NomReal= ’ROHMER ’
107/113
Exemple de restriction d’acces
Confidentialite :
CREATE VIEW PROFVIEW ASSELECT NUM PROF, NOMP, SPECIALITE , SALAIRE ACTUE
FROM PROFESSEUR ;
Seul le createur de PROFESSEUR acceder a PROFESSEUR, et il donne
l’acces aux autres, qu’a la vue
Visibilite des informations uniquement entre 8h et 17h :
CREATE VIEW PROFESSEUROUVRABLeAS SELECT ∗ FROM PROFESSEURWHERE TO CHAR(SYSDATE, ’HH ’ ) BETWEEN ’ 08 ’ AND ’ 17 ’
108/113
Verification de contraintes d’integrite
CREATE VIEW C r i t i q u e S a n s A v i s ASSELECT ∗ FROM C r i t i q u eWHERE A p p r e c i a t i o n I S NULL
Puis mise a jour :
UPDATE C r i t i q u e S a n s A v i sSET A p p r e c i a t i o n= ’ Sans i n t e r e t ’WHERE Note = 0
109/113
Modification d’une vue
Mise a jour ou modification (UPDATE, DELETE, INSERT) possiblessi la ou les lignes concernees peuvent etre retrouvees.
La vue ne doit pas contenir :
d’operateurs ensemblistes (UNION, EXCEPT, INTERSECT)
d’operateurs DISTINCT
de fonction d’aggregation comme attribut
de clause GROUP BY, ORDER BY, CONNECT BY
de jointure
de sous requetes
Oracle doit etre capable de deduire les modifications des tables
110/113
Particularite d’OracleCondition de mise a jour
Jointures possible si la cle est preservee dans la table resultat
CREATE OR REPLACE VIEW VueFi lmsComplets ASSELECT numFilm , t i t r e ,
NumIndiv idu as NumReal i sateur ,n o m I n d i v i d u as NomRea l i sateur ,p r e n o m I n d i v i d u as P r e R e a l i s a t e u r
FROM Film , I n d i v i d uWHERE R e a l i s a t e u r = n u m i n d i v i d u
Mise a jour possible :
UPDATE VueFi lmsCompletsSET T i t r e = Upper ( T i t r e ) ;
111/113
Particularite d’OracleCondition de mise a jour
Conditions de mise a jour : cas particulier Oracle (2)Mises a jour impossible :
UPDATE VueFi lmsCompletsSET N o m R e a l i s a t e u r = ’ROHMER ’WHERE T i t r e = Upper ( ’ genou de C l a i r e ’ )
NumIndividu ne pourrait pas etre clef primaire de la vue
INSERT INTO VueFi lmsComplets( Numfilm , T i t r e , NomRea l i sateur , P r e R e a l )VALUES (200000 , Upper ( ’ Les Amours d ’ A s t r e e e t
de Ce ladon ’ ) ,’ROHMER ’ , ’ ERIC ’ )
Les attributs n’appartiennent pas a une seule table
112/113
Bilan
Differents � outils � a disposition qui definitissent l’implantationd’une BD :
Fichiers de la BD et parametres associes
Parametres des tablespace et des tables pour stocker lesdonnees
Definition et gestion des unites logiques contenant les donnees(bloc, extension, segment)
Partitionnement des donnees
Index et vue
113/113