Bases de Données Avancées



Documents pareils
Bases de Données Avancées

1. Qu'est qu'un tablespace?

Cours Bases de données 2ème année IUT

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Administration des Bases de Données Oracle

Notion de base de données

TP11 - Administration/Tuning

Master Exploration Informatique des données DataWareHouse

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Bases de Données Avancées

Bases de Données relationnelles et leurs systèmes de Gestion

Administration des bases de données sous Oracle. 10g. Fabien De Marchi, Jean-Marc Petit. Université de Lyon. November 22, /96

Cours Bases de données 2ème année IUT

FILE MANAGEMENT. TABLESPACES TEMPORAIRES Temporaire par défaut autre que system

CYCLE CERTIFIANT ADMINISTRATEUR BASES DE DONNÉES

PREPARATION AU PTI SGBD

Bases de données et sites WEB

Gestion des utilisateurs et de leurs droits

Le Langage De Description De Données(LDD)

Introduction aux SGBDR

TP Contraintes - Triggers

Module 25 : Correction des exercices

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Administration des bases de données. Jean-Yves Antoine

Administration des bases de données relationnelles Part I

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

Oracle Maximum Availability Architecture

Oracle : Administration

Olivier Mondet

Devoir Data WareHouse

TP Administration Oracle

Nœud Suisse du Projet International GBIF (Global Biodiversity Information Facility)

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Chapitre III Architecture de Base de Données Oracle

SQL Historique

Notes de cours : bases de données distribuées et repliquées

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Auto-évaluation Oracle: cours de base

420-PK6-SL Banques de données Avancées UTILISATEURS

ADMINISTRATION D'UNE BASE DE DONNEES

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Optimisation de MySQL

Encryptions, compression et partitionnement des données

Administration de Base de Données Notes de cours

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Bases de Données Avancées

Corrigés détaillés des exercices

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

TP Bases de données réparties

COMPOSANTS DE L ARCHITECTURE D UN SGBD. Chapitre 1

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Les bases de données

Création et Gestion des tables

Langage SQL : créer et interroger une base

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K.

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

Bases de Données Réparties

Administration de Bases de Données : Optimisation

CREATION WEB DYNAMIQUE

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Présentation de l'outil RMAN d'oracle

Le Langage SQL version Oracle

CHAPITRE 1 ARCHITECTURE

Gestion de base de données

Cours Bases de données 2ème année IUT

Introduction au Système de Gestion de Base de Données et aux Base de Données

Mise en oeuvre TSM 6.1

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Bases de données et sites WEB Licence d informatique LI345

Intégrité des données

Guide de Préconisations Techniques SOMMAIRE PLATEFORME SAFE SOLUTION SAGE SOLUTION SAGE 1000 ET SAGE COMMUNICATION BANCAIRE 33

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Oracle 11g Optimisez vos bases de données en production (ressources matérielles, stockage, mémoire, requêtes)

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Du 10 Fév. au 14 Mars 2014

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Compétences Business Objects

Les bases de l optimisation SQL avec DB2 for i

Intégrité sémantique dans les bases de données relationnelles

Pour les débutants. langage de définition des données

Oracle 11g - Dataguard

TP3 : Creation de tables 1 seance

PHP 5. La base de données MySql. A. Belaïd 1

OpenPaaS Le réseau social d'entreprise

RECOVERY MANAGER G. Mopolo-Moké prof. MBDS UNSA 2005/ 2006

Module n 2 CREER UNE BASE DE DONNEES 1Z0-001

Développement d une base de données relationnelle. Exploitation des statistiques de pêche au thon tropical

Systèmesdegestionde. basesdedonnées

Administration d'une base de données

I4 : Bases de Données

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

Historisation des données

Transcription:

/116 Bases de Données Avancées Implantation d une BD Thierry Hamon Bureau H202 Institut Galilée - Université Paris 13 & LIMSI-CNRS hamon@limsi.fr http://perso.limsi.fr/hamon/teaching/bda-20132014/ INFO2 BDA

2/116 Sources des transparents F. Boufares, LIPN, Université Paris Nord

3/116 Structure physique Introduction Création/définition d une table Attributs : types de données de base (prédéfinis par le système Numérique, Caractère, Texte, Date, etc.) Attributs : types de données définis par l utilisateur Contraintes : contrôles de validité (Clés primaire et étrangères, etc.) Caractéristiques physiques : Taux de remplissage des blocs, évolution, etc. Lieu de stockage (disque, MC, ), parallélisme, etc. Optimisations : Partitionnement, découpage

4/116 Structure physique Introduction Création/définition d une table Indexer : Accélérer les traitement Reconstruire les blocs, etc. Construire de vues matérialisées (des pré-calculs, etc.) Partager les données entre plusieurs utilisateurs Créer des vues, des droits d accès, des rôles, des profiles, etc.

5/116 Structure physique Introduction Création/définition d une table CREATE TABLE nomtb ( a t t r i b u t s, c o n t r a i n t e s ) TABLESPACE nomtbsp PCTUSED x1 PCTFREE x2 INITRANS x3 MAXTRANS x4 STORAGE ( INITIAL n1 NEXT n2 MINEXTENTS m1 MAXEXTENTS m2 PCTINCREASE p ) PARALLEL p / NOPARALLEL ( a p p l i q u e r l e p a r a l l é l i s m e ) LOGGING / NOLOGGING ( pour ne pas c o p i e r l e s m i s e s à j o u r dans 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 mémoire ; à u t i l i s e r avec p r é c a u t i o n ) PARTITIONnement ( une s o r t e de découpage de l a t a b l e )

6/116 Structure physique Introduction Structure d une base de données (Oracle) une structure physique une structure logique un ensemble de vues donnant des visions partielles aux utilisateurs Description de ces trois niveaux et la correspondance entre eux à travers le dictionnaire de données

7/116 Eléments composant d une base : Structure physique Introduction Structure d une base Fichiers qui composent la base de données : Fichier rollback Fichier tablespace Redo logs Fichiers de contrôle (Control files) Fichiers de trace et alert.log Instances définies par un nom (SID) Il s agit des processus qui gèrent : La cohérence de la base La mise à jour, rollback etc.. Aussi le SGA (System Global Area)

8/116 Structure physique Introduction Structure physique Composée d un ensemble de fichiers qui constituent le support physique de stockage de données Trois types de fichiers : Fichiers de données (Data Files) Fichiers de reprise (Redo Log Files) Fichiers de contrôle (Control Files) Spécification des Data Files et Redo Log lors de la création ou la modification de la base de données

9/116 Structure physique Fichiers de données Fichiers de données (Data Files) Les fichiers de données assurent le stockage des objets créés par les utilisateurs : tables, index, vues, clusters, etc. des structures nécessaires au fonctionnement d Oracle : dictionnaire de données Un fichier de données est associé à une et une seule base de données Lors de la création d une base de données, il doit y avoir au moins un fichier de données pour stocker le dictionnaire de données

10/116 Structure physique Fichiers de données Taille d un Data File Exprimée en Kilo ou en Méga octets Attribuée au moment de la création du fichier, pouvant être modifiée Son choix dépend de la taille de la base de données et de son évolution Le premier fichier de données créé doit avoir une taille supérieure ou égale à 2Mo

11/116 Structure physique Fichiers de données Nom d un Data File Dépend du système d exploitation Peut être modifié, sauf pour le premier fichier La modification se fait en deux étapes : modification du nom du fichier en utilisant les commandes OS répercussion de cette modification dans les fichiers de contrôle

12/116 Structure physique Fichiers de données Création d un Data File Réalisée selon quatre configurations : Création d une base CREATE DATABASE base DATAFILE s p é c i f i c a t i o n f i c h i e r Création d un tablespace CREATE TABLESPACE t b s DATAFILE s p é 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 données ALTER DATABASE base CREATE DATAFILE f i c h i e r AS s p é c i f i c a t i o n Modification d un tablespace par ajout d un nouveau fichier de données ALTER TABLESPACE t b s ADD DATAFILE s p é c i f i c a t i o n f i c h i e r

13/116 Structure physique Fichiers de données Modification d un Data File Deux cas de modifications : modification du nom et de localisation modification de la taille Modification du nom : TableSpace en Offline (éviter que des données soient accesssibles pendant le déplacement) ALTER TABLESPACE o r a d a t a OFFLINE ALTER TABLESPACE t b s RENAME 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 base RENAME FILE f i c h 1, f i c h 2 TO f i c h 1 1, f i c h 2 2

14/116 Structure physique Fichiers de données Modification d un Data File Modification de la taille : ALTER TABLESPACE t b s ADD DATAFILE s p é c i f i c a t i o n AUTOEXTEND [ OFF ON [NEXT e n t i e r [K M] ] [ MAXSIZE UNLIMITED e n t i e r [K M] ] ALTER DATABASE base DATAFILE 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] ]

15/116 Structure physique Fichiers de données Suppression d un Data File Solution 1 : en deux étapes 1 Suppression du tablespace associé au Data file DROP TABLESPACE t b s INCLUDING CONTENTS 2 Suppression des fichiers physiques manuellement par commande OS. Solution 2 : en une seule étape Suppression du tablespace associé au Data file ainsi que les fichiers physiques DROP TABLESPACE t b s INCLUDING CONTENTS and d a t a f i l e s

16/116 Structure physique Fichiers de reprise Fichiers Redo Log Contiennent les modifications les plus récentes des données de la base Utilisés par Oracle pour remettre la base dans un état cohérent après une panne sans perdre les mises à jour qui n ont pas été enregistrées dans les data files Lors du redémarrage de l instance, Oracle applique les mises à jour des Redo Log sur les Data file (reprise à chaud) Au moins deux fichiers par instance, utilisés d une façon circulaire

17/116 Structure physique Fichiers de reprise Fichiers Redo Log Redo Log multiple : duplication des fichiers Redo Log sur différents disques Lorsqu un des fichiers est perdu ou endommagé, son image sur l autre disque peut être utilisé L ensemble des Redo Logs actifs simultanément constitue un groupe Chaque fichier de ce groupe est dit membre Avant de réutiliser un Redo Log plein, Oracle peut l archiver si la base est en mode ARCHIVELOG (voir plus loin)

18/116 Structure physique Fichiers de reprise Création d un Redo Log Possibilité de créer ou d ajouter des Redo Logs dans une base existante : CREATE DATABASE base LOGFILE [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 base ADD 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 }

19/116 Structure physique Fichiers de reprise Suppression d un Redo Log Suppression d un Redo Log, d un groupe ou d un membre : ALTER DATABASE base DROP 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 être initialisé par : ALTER DATABASE base CLEAR [ UNARCHIVED ] LOGFILE {GROUP e n t i e r ( f i c h, f i c h,... ) }... [UNRECOVERABLE DATAFILE ]

20/116 Structure physique Fichiers de contrôle Control File Contient les informations relatives à la structure physique de la base de données : nom de la base de données noms et localisations des Datafile et Redo Logs timestamp de création de la base le nombre de séquence log courant informations sur le checkpoint Créé au moment de la création de la base

21/116 Structure physique Fichiers de contrôle Control File Utilisé lors de l ouverture d une base pour identifier les Datafiles et les Redo Logs Au moins un fichier de contrôle Recommandation : dupliquer ce fichier plusieurs fois Mise à jour automatique à chaque modification de structure de la base Noms spécifiés dans init.ora

22/116 Introduction La structure logique d une base est composée des tablespaces des segments des extensions (extents) des blocs Un ensemble d objets logiques constitué d objets de schéma (schema objects) Les objets de schéma constituent la structure relationnelle de la base

23/116 Tablespace Tablespace Une base de données est composée d un ensemble d unités logiques dites tablespaces Un tablespace permet de regrouper un ensemble d objets logiques (tables, index, etc.) Il peut être utilisé pour regrouper des objets logiques d une application pour que les opérations de sauvegarde et de restauration soient efficaces

24/116 Tablespace Structure d une base de données

25/116 Tablespace Tablespace Chaque objet logique doit être associé à un et un seul tablespace Chaque tablespace est identifié par un nom Un tablespace peut être supprimé même s il contient des données Une base de données doit avoir au moins un tablespace appelé SYSTEM qui contient le dictionnaire de données

26/116 Tablespace Tablespace Un tablespace peut être activé (OnLine) ou désactivé (OffLine) Le tablespace SYSTEM ne peut jamais être désactivé Un tablespace peut être créé, modifié et supprimé Il est recommandé de créer d autres tablespaces pour les objets de la base

27/116 Tablespace Création de Tablespace CREATE TABLESPACE t b s DATAFILE spec 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 ] [ PERMENENT TEMPORARY]

28/116 Tablespace Modification d untablespace ALTER TABLESPACE t b s ADD DATAFILE spec 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]

29/116 Tablespace 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 intégrité des tables d autres tablespaces qui se réfèrent aux clés primaires des tables du tablespace spécifié

30/116 Tablespace Gestion des tablespaces L administrateur peut consulter les vues du dictionnaire de données suivantes : 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

31/116 Tablespace Utilisation des tablespaces Un tablespace peut être attribué par défaut à un utilisateur Les objets de cet utilisateur seront stockés dans ce tablespace sauf 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 ]

32/116 Exemple Tablespace 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 e c r e a t e 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 e a t e t a b 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

33/116 Tablespace et SQL2 Retour sur le schéma physique (SQL2) c r e a t e t a b 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 p r i m a r y key (NUM COURS), c o n s t r a i n t NN COURS NOMC check (NOMC I S NOT NULL) )

34/116 Tablespace et SQL2 Ajout d un tablespace dans le schéma physique PCTUSED de 98% initialement une seule transaction PCTFREE de 1% peut accèder aux lignes à la fois 255 transsactions au maximum Taille du premier extent : 11280 Ko Nombre illimité d extents alloués au segment Taille du premier extent : 11 Mo Nombre de blocs dans lequel Oracle 1 extent alloué à la création du segment peut écrire des données : 9 (1 groupe de blocs) Possibilité de traitement en parallèle TABLESPACE S COURS DATA PCTUSED 98 PCTFREE 1 INITRANS 1 MAXTRANS 255 STORAGE ( INITIAL 11280K NEXT 11M MINEXTENTS 1 MAXEXTENTS u n l i m i t e d PCTINCREASE 0 FREELISTS 9 FREELIST GROUPS 1 ) PARALLEL ;

35/116 Tablespace et SQL2 Ajout dans le schéma physique c r e a t e t a b 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 p r i m a r y 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 DATA PCTUSED 98 PCTFREE 1 INITRANS 6 MAXTRANS 255 STORAGE ( INITIAL 20M NEXT 5M) NOPARALLEL ;

36/116 Tablespace et SQL2 Ajout dans le schéma physique c r e a t e t a b l e CHARGE (NUM PROF NUMBER( 4 ), NUM COURS NUMBER( 4 ), c o n s t r a i n t PK CHARGE p r i m a r y 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 DATA PCTUSED 98 PCTFREE 1 INITRANS 1 MAXTRANS 255 STORAGE ( INITIAL 11280K NEXT 11M MINEXTENTS 1 MAXEXTENTS u n l i m i t e d PCTINCREASE 0 FREELISTS 9) PARALLEL 3 ;

37/116 Espace de stockage SEGMENT, EXTENSION, BLOC Lors de la création d un fichier, Oracle réserve tout l espace qui lui est associé A l intérieur de ce fichier, l espace disque est géré dynamiquement au fur et à mesure de l utilisation de la base de données Gestion selon trois niveaux de granularité : segment extension bloc

38/116 Espace de stockage SEGMENT, EXTENSION, BLOC

39/116 Bloc de données Bloc de données Un bloc de données est la plus petite unité logique d entrée/sortie utilisée par Oracle Appelé également Bloc logique ou Page A distinguer du bloc physique utilisé par les OS (bloc physique = ensemble d octets sur disque) Taille d un bloc de données attribuée par défaut selon OS (2, 4 ou 8 Ko) modifiable par DB_BLOCK_SIZE = n

40/116 Bloc de données Format d un bloc de données Les blocs de données sont organisés de la même façon quelque soit leur contenu : données, index ou cluster

41/116 Bloc de données Format d un bloc de données Entête : contient des informations générales (adresse du bloc, type du segment, etc) Liste des tables : utilisée uniquement pour les clusters. Contient des informations relatives aux tables groupées ayant des données dans ce bloc Liste des lignes : contient des informations relatives aux lignes situées dans ce bloc (adresse) Espace libre : utilisé pour l insertion de nouvelles lignes ou la mise à jour des lignes nécessitant de l espace Reste du bloc : réservé aux données

42/116 Bloc de données Organisation d une ligne Ordre de stockage des colonnes : déterminé par Oracle peut différer de celui utilisé lors de la création de la table Ajout d une nouvelle colonne à une table : la colonne se trouve toujours en dernière position

43/116 Bloc de données Gestion de l espace des blocs Paramètres PCTFREE et PCTUSED : Gestion de l espace libre des blocs de données Utilisation dans les commandes de création ou de modification de tables, clusters, snapshot et snapshot log Le paramètre PCTFREE peut être utilisé également dans les commandes de création et de modification d index

44/116 PCTFREE Bloc de données Définition du pourcentage d espace dans un bloc qui doit être maintenu libre pour les éventuelles mises à jour des lignes du bloc Exemple : PCTFREE = 15 Possibilité d insérer de nouvelles lignes dans le bloc tant que l espace libre > 15% Critères de choix mode d utilisation de la table ou de l index associé supérieur à 10 si la mise à jour augmente souvent la taille inférieur à 10 dans le cas contraire

45/116 PCTFREE Bloc de données Chercher un compromis entre le gain d espace et l amélioration des performances valeur faible : gain d espace et dégradation des performances à cause de la fragmentation des données valeur élevée : perte d espace et un gain de performances

46/116 PCTUSED Bloc de données Utilisé simultanément avec le paramètre PCTFREE (valeur par défaut est 40) Un bloc est initialement vide Insertions de nouvelles lignes jusqu à atteindre PCTFREE Possibilité d insertion de nouvelles lignes dans le bloc que si le pourcentage d espace utilisé devient inférieur à PCTUSED A nouveau, possibilité d insertion de nouvelles lignes jusqu à ce que l espace libre atteint PCTFREE

47/116 Bloc de données Exemple PCTFREE et PCTUSED PCTFREE = 20, PCTUSED = 40

48/116 Remarques Bloc de données PCTFREE Permet de spécifier l espace libre laissé dans le bloc pour réaliser les mises à jour des lignes stockées dans le bloc Par défaut, la valeur de ce paramètre est égale à 10 Dans tous les cas, la somme de PCTFREE et de PCTUSED ne peut excéder 100 Lorsque l espace libre dans un bloc atteint PCTFREE, aucune nouvelle ligne n est insérée dans le bloc PCTUSED Lorsque l on ne peut plus insérer de lignes dans le bloc (l espace libre restant dans le bloc devient égal à PCTFREE) le bloc n est plus utilisé pour insérer de nouvelles lignes tant que l espace utilisé n est pas redescendu en dessous de la valeur de PCTUSED

49/116 Remarques Bloc de données Les conséquences d un petit PCTFREE : Moins d espace est réservé au niveau du bloc pour effectuer les mises à jour des lignes existantes Permet aux insertions de mieux remplir le bloc Permet d économiser de l espace dans la mesure où les blocs sont mieux remplis Augmente le temps de traitement dans la mesure où Oracle doit régulièrement réorganiser les blocs lorsque l on insère ou modifie des lignes Augmente les temps de traitement dans la mesure où les mises à jour peuvent conduire à la génération de chaînages entre différents blocs Un petit PCTFREE est utilisé pour les objets ayant une faible activité en mise à jour

50/116 Remarques Bloc de données Les conséquences d un grand PCTFREE : Plus d espace est réservé au niveau du bloc pour effectuer les mises à jour des lignes existantes Plus de blocs peuvent être nécessaires pour gérer la même quantité de données (moins de lignes sont stockées dans les blocs) Diminution du temps de traitement dans la mesure où les réorganisation les blocs sont moins nombreuses Amélioration des performances en MAJ dans la mesure où les chaînages des blocs sont évités Un grand PCTFREE est nécessaire pour les objets ayant une forte activité en mise à jour

51/116 Remarques Bloc de données Les conséquences d un petit PCTUSED : Les blocks sont moins remplis Réduction des coûts de traitements lors des commandes INSERT UPDATE pour mettre à jour la FREELIST quand un bloc est utilisé à moins de PCTUSED pourcent Augmentation de la consommation d espace dans la base de données Les conséquences d un grand PCTUSED : Le blocs sont mieux remplis Amélioration de la gestion d espace. Les blocs sont mieux remplis Augmentation du coût des insertions et des mises à jour

52/116 Bloc de données Autres paramètrages INITRANS Nombre initial de transactions pouvant accéder simultanément aux lignes contenues dans un bloc L espace est réservé en entête de chaque bloc de données et d index La valeur par défaut est 1 pour les données et 2 pour les indexes MAXTRANS Le paramètre MAXTRANS permet de limiter le nombre de transactions

53/116 Bloc de données Autres paramètrages FREELISTS Liste des blocs libres par objet Par défaut, la valeur est égale à 1 En cas de contention sur la freelist, les performances des applications peuvent être altérées Pour identifier ce problème, 1 il suffit de consulter le contenu de la table v$waitstat de la façon suivante : s e l e c t c l a s s, count w a i t s from v $ w a i t s t a t where c l a s s = f r e e l i s t ;

54/116 Bloc de données Autres paramètrages 2 Il faut ensuite comparer le nombre waits sur les blocs libres par rapport au nombre total de demandes de données sur la même période. s e l e c t sum( value ) g e t s from v $ s y s s t a t where name i 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 inférieur à 1%, il faut ajouter des freelist

55/116 Extent Extent (extension) Unité logique d allocation d espace composée d un ensemble contiguë de blocs de données alloués simultanément à un segment Tout segment est initialement créé avec au moins une extension appelée extension initial (INITIAL EXTENT) Lorsque l espace d un segment est complètement utilisé, attribution par Oracle d une nouvelle extension dite extension supplémentaire (INCREMENTAL EXTENT)

56/116 Extent Procédure d attribution d une nouvelle extension 1 Recherche dans le tablespace contenant le segment le premier ensemble contiguë de blocs libres de taille au moins égale à celle de l extension supplémentaire 2 Si la recherche n aboutit pas, fusion des blocs libres pour constituer des ensembles de blocs libres de taille supérieure, puis reprend la recherche 3 Si de nouveau la procédure de recherche n aboutit pas, message d erreur signalé 4 Mise à jour de l entête du segment et du dictionnaire de données pour tenir compte de la nouvelle extension

57/116 Extent Libération des extensions Libération des extensions d un segment que lorsque le segment est supprimé suite à la suppression d une table, d un cluster, etc. Lorsque des extensions sont libérées, mise à jour du dictionnaire de données

58/116 Extent Taille des extensions Définition de la taille des extents par les paramètres de la clause STORAGE : STORAGE ( INITIAL n1 NEXT n2 MINEXTENTS m1 MAXEXTENTS m2 PCTINCREASE p ) n1 : taille du premier extent alloué lorsque un segment est créé n2 : taille du second extent alloué au segment m1 : nombre d extents alloués à la création du segment m2 : nombre total d extents pouvant être alloués à segment p : pourcentage d accroissement de la taille du segment I + 1 par rapport à celle du segment I (I > 2). taille du segment I + 1 = (taille du segment I ) (1 + p/100)

59/116 Exemple Extent STORAGE ( INITIAL 50K NEXT 50K MINEXTENTS 1 MAXEXTENTS 5 PCTINCREASE 50) Si la taille d un bloc = 2Ko, la taille des différents extents sera : 1 er Extent : 50Ko 2ème Extent : 50Ko 3ème Extent : Arrondi(50 1, 5) = 76Ko 4ème Extent : Arrondi(76 1, 5 = 114Ko 5ème Extent : Arrondi(114 1, 5) = 172Ko

60/116 Exemple Extent Donner des valeurs explicites dans la clause storage des tables du schéma INFO2 Il existe déjà 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 d d 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 table 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 INFO2 d e f a u l t t a b l e s p a c e STORAGE STANDARD;

61/116 Segment Segments Composé d un ou de plusieurs extents contenant les données d une structure logique dans un tablespace Quatre types de segments : segments de données segments d index segments temporaires segments de rollback

62/116 Segments Structure d une base de données

63/116 Segments Segments de données Stockage des données des tables et des clusters utilisateurs et système Chaque table possède un et un seul segment créé automatiquement lors de la création de la table Un cluster contient un seul segment pour stocker toutes les données des tables en cluster La manière dont les extents sont alloués dans un segment est spécifiée par les paramètres de stockage lors de la création de la table ou du cluster

64/116 Segments Segments d index Stockage des données d index séparément des données Chaque index est contenu dans un segment distinct créé lors de la création d index Lors de la création d index, on peut préciser le tablespace dans lequel sera créé le segment d index Le tablespace peut être différent de celui du segment de données de la table associée

65/116 Segments Segments temporaires Utilisés pour le traitement des commandes SQL nécessitant un espace disque temporaire (order by, group by, distinct, union, instersect ou minus) Une même commande SQL peut nécessiter plusieurs segments temporaires Création automatique en cas de besoin et suppression après l exécution de la commande le tablespace dans lequel sont créés les segments temporaires est défini à l aide de l option temporary tablespace de create/alter user

66/116 Rollback Segments rollback Enregistrement des actions effectuées par les transactions Stockage des données avant modification par les transactions possibilité 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 modifié (noms des fichier et ID du bloc) valeurs des données avant modification par la transaction

67/116 Rollback Création de Rollback CREATE ROLLBACK SEGMENT r o l l b a c k TABLESPACE t b s STORAGE c l a u s e s t o c k a g e

68/116 Rollback Modification et suppression de Rollback Modification de Rollback ALTER ROLLBACK SEGMENT r o l l b a c k OFFLINE ONLINE STORAGE c l a u s e s t o c k a g e OPTIMAL 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 b a c k

69/116 Rollback Exemple : utilisation d un ROLLBACK SEGMENT Définition d un rollback segment particulier à utiliser pour une transaction : SET TRANSACTION USE ROLLBACK SEGMENT r b s l a r g e ; Création d un ROLLBACK SEGMENT RBS_Large create r o l l b a c k segment r b s l a r g e t a b l e s p a c e INFO2 STORAGE ( INITIAL 50K NEXT 10K MINEXTENTS 100 MAXEXTENTS 1 0 0 0) Modification du rollback segment (mise online) a l t e r r o l l b a c k segment r b s l a r g e o n l i n e

70/116 Rollback 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 t e, s. o p t i z e, s. hwmsize, s. xacts, 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 s s where n. usn=s. usn Quelles transactions utilisent quels rollback segments? s e l e c t s. username, t. xidusn, t. u b a f i l e, 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 t where s. s a d d r=t. s e s a d d r

71/116 Rollback et PL/SQL Contrôle de transactions Commandes COMMIT et ROLLBACK Lancer une transaction avec la première commande du LMD à la suite d un COMMIT ou un ROLLBACK Utiliser le COMMIT ou le ROLLBACK de SQL pour terminer une transaction

72/116 Rollback et PL/SQL Commande ROLLBACK

73/116 Rollback et PL/SQL Contrôle de transactions Déterminer le traitement des transactions pour le bloc PL/SQL suivant BEGIN END; INSERT 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;

74/116 UNDO Tablespace Gestion automatique des Undo Tablespace (9i) Objectifs : Gestion moins contraignante par le DBA des segments de Rollback (moins de problème concernant leur taille) Possibilité d historiser les modifications sur plusieurs générations de transactions

75/116 UNDO Tablespace Exemple de paramètrage Paramétrage du temps de retention des données dans Undo Tablespace : 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 Ora-1555 (snapshot too old) Plus l intervalle de retention choisi est grand, plus le tablespace UNDO devra être volumineux

76/116 UNDO Tablespace Gestion d une Base avec Rollback CREATE DATABASE t e s t r o l l CONTROLFILE REUSE LOGFILE GROUP 1 ( $ORA DBS/ oradata17 /CHAR T/CHAR T LOG 11. rdo, $ORA DBS/ oradata17 /CHAR T/CHAR T LOG 12. rdo ) SIZE 10M, GROUP 2 ( $ORA DBS/ oradata17 /CHAR T/CHAR T LOG 21. rdo, $ORA DBS/ oradata17 /CHAR T/CHAR T LOG 22. rdo ) SIZE 10M $ORA DBS/ oradata17 /CHAR T/CHAR T SYSTEM 1. dbf SIZE 100M MAXLOGFILES 20 MAXDATAFILES 1022 MAXLOGMEMBERS 3 CHARACTER SET WE8ISO8859P1 ;

77/116 UNDO Tablespace Création d une base avec UNDO Tablespace (9i) Create d a t a b a s e Testundo MAXINSTANCES 1 MAXLOGHISTORY 1 M a x l o g f i l e s 5 maxlogmenbers 3 m 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 m a size u n l i m i t e d e x t e n t management l o c a l D e f a u l t Temporary T a b l e s p a c e Temp T 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 next 640 k m a x s i z e u n l i m i t e d

78/116 UNDO Tablespace Création 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 C h a r a c t e r s e t WE8MSWIN1252 NATIONAL c h a 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 ;

79/116 UNDO Tablespace Gestion de Tablespace UNDO Si le parametre undo_management = AUTO et si aucun Tablespace Undo n est créé : Oracle crée un tablespace Undo SYS_UNDO cat init.ora... ########################################### # Base de données utilisant le tablespace Undo # pour la gestion des mises à jour ########################################### undo_management=auto undo_retention=10800 undo_tablespace=tbsundo...

80/116 UNDO Tablespace Gestion de Tablespace UNDO Implémentation de tablespace Undo 1 Creation d un tablespace UNDO Exemple : TBSUNDO 2 Spécifier le TBS Undo dans init.ora UNDO_TABLESPACE=TBS_UNDO undo_management=auto

81/116 UNDO Tablespace Gestion de Tablespace UNDO Paramétrage du tablespace Undo de la base CREATE DATABASE <SID >... UNDO TABLESPACE undotbs DATAFILE 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; Création du tablespace UNDO CREATE UNDO TABLESPACE u n d o b i s DATAFILE 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 utilisé ALTER SYSTEM SET UNDO TABLESPACE=u n d o b i s ;

82/116 UNDO Tablespace Conversion rollback segment/undo Tablespace Conversion d une base utilisant un Rollback Segment vers un UNDO Tablespace CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE D: \ ORACLE\ORA92\ORA92\UNDOTBS01. DBF SIZE 500M; a l t e r system set undo management=auto scope=s p f i l e ; a l t e r system set u n d o t a b l e s p a c e=undotbs1 scope=s p f i l e ; ; Puis Arrêt et relance de la base

83/116 UNDO Tablespace Conversion UNDO Tablespace/rollback segment Conversion d une base utlisant un Tablespace UNDO vers un Rollback Segment create r o l l b a c k segment RB1 t a b l e s p a c e system s t o r a g e ( i n i t i a l 1M next 1M) ; a l t e r r o l l b a c k segment RB1 o n l i n e ; create r o l l b a c k segment RB2 t a b l e s p a c e r b s s t o r a g e ( i n i t i a l 1M next 1M) ; a l t e r r o l l b a c k segment RB2 o n l i n e ;

84/116 UNDO Tablespace Parametrage de la base (Init.ora, spfile) Exécution de la base avec init.ora Startup pfile= c:\oracle\datafile\initprod.ora Génération d un fichier init.ora à partir spfile (Server Parameter Files - fichier binaire) create p f i l e= m: \ admin\ p f i l e \ i n i t b i s. ora from s p f i l e= m: \ admin\ p f i l e \ s p f i l e L I B 9. ora ;

85/116 Paramètrage de la base Parametrage de la base (Init.ora, spfile) Génération d un fichier spfile à partir init.ora c r e a t e s p f i l e = c : \ o r a c l e \ o r a 9 i \ d a t a b a s e \ s p f i l e P r o d. o r a from p f i l e = c : \ o r a c l e \ o r a 9 i \ d a t a b a s e \ i n i t P r o d. o r a ; Erreur possible : c r e a t e s p f i l e from p f i l e = c : \ o r a c l e \ o r a 9 i \ d a t a b a s e \ i n i t P r o d. o r a ; ERREUR à la ligne 1 : ORA-32002: impossible de créer un SPFILE déjà utilisé par l instance Identification du fichier spfile utilisé SELECT name, value FROM v$parameter WHERE name = s p f i l e ;

86/116 Paramètrage de la base Parametrage de la base (Init.ora, spfile) Modification du parametrage de la base en mémoire ou dans le fichier SPFILE Exemple : a l t e r system set undo management=auto scope=memory;

87/116 Paramètrage de la base Parametrage de la base (Init.ora, spfile) scope prend l une des valeurs suivantes : MEMORY : Prise en compte des modifications uniquement dans l instance courante (valeur par défaut) Pas de modification du fichier SPFILE Utilisation pour les paramètres dynamiques uniquement SPFILE : Prise en compte des modifications dans le fichier SPFILE Pas d effet sur l instance courante tant qu elle n est pas redémarrée Utilisation pour les paramètres statiques et dynamiques BOTH : Prise en compte des modifications dans l instance courante et dans le fichier SPFILE Utilisation pour les paramètres dynamiques uniquement

88/116 Partitionnement des données Partitionnement des données Objectifs : Organiser les données pour améliorer les performances Accès aux données avec un niveau de granularité plus fin

89/116 Partitionnement des données Avantages : Partitionnement des données Création de tables plus grandes que la taille permise (au dela de la limite physique du disque ou de la partition SF) Possibilité de stocker les partitions dans des endroits différents Suppression très rapidement des données plus utiles ou non utilisées Possibilité de destruction de la partition pour supprimer les données Optimisation de requêtes en accèdant uniquement aux données nécessaires (sinon prise en compte/consultation de tous les enregistrements) Partitionnement de tables : utilisé aussi et généralement pour les BD réparties

90/116 Partitionnement des données Techniques de partitionnement Techniques de partitionnement Fragmentation horizontale Découpage horizontal de la table Répartition des enregistrements dans plusieurs partitions Nécessité de définir d une condition de partitionnement (permet de déterminer la partition dans laquelle sera stocké l enregistrement) Récupération de tous les enregistrements (regroupement des contenus des partitions) : union d ensemble

91/116 Partitionnement des données Techniques de partitionnement Techniques de partitionnement Fragmentation horizontale

92/116 Partitionnement des données Techniques de partitionnement Techniques de partitionnement Fragmentation verticale Découpage vertical de la table Répartition des colonnes dans plusieurs partitions Possibilité de séparer les données fréquemment utilisées des données accèdées plus rarement Récupération de tous les enregistrements : jointure entre les partitions

93/116 Partitionnement des données Techniques de partitionnement Techniques de partitionnement Fragmentation verticale

94/116 Partitionnement des données Techniques de partitionnement Partitionnement : compléments Possibilité d utiliser d un partitionnement vertical et horizontal sur une même table de définir des partitions de partitions

95/116 Partitionnement des données Schéma Physique Schéma Physique Définition d une partition horizontale create table PROFESSEURS (NUM PROF NUMBER( 4 ),... c o n s t r a i n t PK PROFESSEURS primary key (NUM PROF) ) PARTITION BY RANGE (NUM PROF) (PARTITION P1 VALUES LESS THAN (1000) TABLESPACE ECOLE PARIS, PARTITION P2 VALUES LESS THAN ( 2 0 0 0) TABLESPACE ECOLE TUNIS ) ; s e l e c t from PROFESSEURS PARTITION ( P1 ) ; s e l e c t from PROFESSEURS PARTITION ( P2 ) ;

96/116 Partitionnement des données Schéma Physique Schéma Physique Définition d une partition horizontale create table PROFESSEURS (NUM PROF NUMBER( 4 ),... c o n s t r a i n t PK PROFESSEURS primary key (NUM PROF) ) PARTITION BY RANGE (DATE ENTRÉE) ( 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 ) ) ) ;

97/116 Index Index Objectifs : Vérification des contraintes d unicité (clé, contrainte explicite) : index créés automatiquement Amélioration de l accès aux données Utilisation de la clé d une table Utilisation d autres attributs NB: Possilité d utilisation d un ou plusieurs attributs (index composite) Positionnement d un index sur des informations permettant de diminuer le coût des accès Attention : la définition d un index utilise de l espace disque

98/116 Création d Index Index CREATE [ UNIQUE BITMAP ] INDEX [<schema >.] <nom index> ON <nom de table> (<nom de colonne > [ASC DESC] [, <nom de colonne > [ASC DESC ] ],... ) CREATE INDEX IndNomPrenomProf ON I n d i v i d u ( nomprof, prenomprof ) ;

99/116 Index Type d Index Arbres équilibrés (B-arbre - par défaut) : toutes les branches de l arbre ont la même longueur (réduction importante du nombre d accès) Bitmap : définition d une chaîne de bits pour chaque valeur (si peu de valeurs sont possibles)

100/116 Index Index type B-arbre (B-tree) Exemple Chaque clé est atteinte en au plus 2 accès

101/116 Index type Bitmap Exemple Index Table contenant les identifiants de Professeur et les classes dans laquelles ils interviennent (valeurs de l attribut : 1, 2, 3) NumProf... civilité... 23 M 12 Mme 45 M 76 Melle 87 M 19 Mme 34 M 56 M 97 Melle 22 Mme civilité Valeur Index M 001 Mme 010 Melle 100 Recherche des éléments de civilité Melle : opération ET binaire entre la valeur de l index et 100

102/116 Index Cas d utilité d un index Attributs utilisés dans des jointures Attributs servant souvent pour les sélections Table de gros volume dont la majorité des requêtes sélectionne moins de 15% des lignes index Bitmap : attribut avec peu de valeurs distinctes index B-arbre : attribut avec beaucoup de valeurs distinctes

103/116 Index Cas où un index est inutile Beaucoup de modification (insertion/suppression) de table Nécessité de recréer l index! Table de petit volume (sauf Oracle) Requête SQL dont la clause WHERE fait appel à une fonction Utilisation de NULL dans la requête (WHERE... is NULL)

104/116 Schéma Physique Ajout d index Index c r e a t e t a b l e COURS (NUM COURS NUMBER( 2 ),... c o n s t r a i n t PK COURS p r i m a r y key (NUM COURS),... ) ; c r e a t e t a b l e PROFESSEURS (NUM PROF NUMBER( 4 ),... c o n s t r a i n t PK PROFESSEURS p r i m a r y key (NUM PROF),... ) ; c r e a t e t a b l e CHARGE (NUM PRO F..., NUM COURS..., c o n s t r a i n t PK CHARGE p r i m a r y 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 INDEX NDX PROF ON PROFESSEURS (NUM PROF) ; CREATE INDEX NDX COURS...

105/116 Index Taille d une Table & Taille d un Index Exemple Table (110 octets par enregistrement) : Clé primaire (10 octets), Informations complémentaires (100 octets) Index (14 octets par enregistrement) : Clé primaire (10 octets), Adresse Physique (4 octets) Bloc de 512 octets Nombre d enregistrements de l ordre de 100 000

106/116 Index Taille d une Table & Taille d un Index Exemple Pour les données : Pour un nombre entier d enregistrements par bloc (512/110) Nombre maximal d enregistrements par bloc est 4 Il faudrait donc (100 000/4) = 25000 blocs de données Pour les index : Pour un nombre entier d enregistrements par bloc (512/14) Nombre maximal d enregistrements par bloc est 36 Il faudrait donc (100 000/36) = 2778 blocs d index

107/116 Vues Vues Une vue est une table virtuelle le résultat d une requête que l on nomme Objectifs : Simplification des requêtes complexes Résolution des problèmes de confidentialité Garantie de l intégrité d une base

108/116 Création d une vue Vues 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 s e l e c t > [WITH CHECK OPTION [CONSTRAINT <nom de c o n t r a i n t e >]] [WITH READ ONLY] Exemple : CREATE VIEW ProfMath AS SELECT FROM PROFESSEURS WHERE = Mathématique ;

109/116 Utilisation d une vue Vues SELECT... FROM <nom de vue> WHERE... Exemple : SELECT FROM ProfMath where age > 30 ; Utilisation du nom de la vue : dans toute requête où le nom d une table peut être sépcifié (SELECT, UPDATE, DELETE, INSERT, GRANT)

110/116 Vues Suppression et renommage Suppresion : DROP VIEW <nom de vue> supprime la vue mais pas les données Renommage : RENAME <a n c i e n nom de vue> TO <nouveau nom de vue> Liste des vues : Consultation des tables système ALL-CATALOG, USER VIEWS et ALL VIEWS

111/116 Vues Exemple de simplification de requêtes 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. NomIndividu, I 2. NomIndividu, Note FROM Film 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 C WHERE C. NumFilm = F. NumFilm AND C. NumCritique = I 2. NumIndividu AND F. NumRealisateur = I 1. NumIndividu Utilisation : SELECT NumFilm, T i t r e, NomCrit, Note FROM F i l m C r i t i q u e WHERE NomReal= ROHMER

112/116 Vues Exemple de restriction d accès Confidentialité : CREATE VIEW PROFVIEW AS SELECT NUM PROF, NOMP, SPECIALITE, SALAIRE ACTUE FROM PROFESSEUR ; Seul le créateur de PROFESSEUR accèder à PROFESSEUR, et il donne l accès aux autres, qu à la vue Visibilité des informations uniquement entre 8h et 17h : CREATE VIEW PROFESSEUROUVRABLe AS SELECT FROM PROFESSEUR WHERE TO CHAR(SYSDATE, HH ) BETWEEN 08 AND 17

113/116 Vues Vérification de contraintes d intégrité CREATE VIEW C r i t i q u e S a n s A v i s AS SELECT FROM C r i t i q u e WHERE A p p r e c i a t i o n IS NULL Puis mise à jour : UPDATE C r i t i q u e S a n s A v i s SET A p p r e c i a t i o n= Sans i n t e r ê t WHERE Note = 0

114/116 Vues Modification d une vue Mise à jour ou modification (UPDATE, DELETE, INSERT) possibles si la ou les lignes concernées peuvent être retrouvées. La vue ne doit pas contenir : d opérateurs ensemblistes (UNION, EXCEPT, INTERSECT) d opérateurs DISTINCT de fonction d aggrégation comme attribut de clause GROUP BY, ORDER BY, CONNECT BY de jointure de sous requêtes Oracle doit être capable de déduire les modifications des tables

115/116 Particularité d Oracle Condition de mise à jour Vues Jointures possible si la clé est préservée dans la table résultat CREATE OR REPLACE VIEW VueFilmsComplets AS SELECT numfilm, t i t r e, NumIndividu as NumRealisateur, nomindividu as NomRealisateur, 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 u WHERE R e a l i s a t e u r = n u m i n d i v i d u Mise à jour possible : UPDATE VueFilmsComplets SET T i t r e = Upper ( T i t r e ) ;

116/116 Particularité d Oracle Condition de mise à jour Vues Conditions de mise à jour : cas particulier Oracle (2) Mises à jour impossible : UPDATE VueFilmsComplets SET NomRealisateur = ROHMER WHERE T i t r e = Upper ( genou de C l a i r e ) NumIndividu ne pourrait pas être clef primaire de la vue INSERT INTO VueFilmsComplets ( Numfilm, T i t r e, NomRealisateur, PreReal ) VALUES (200000, Upper ( Les Amours d A s t r é e e t de Céladon ), ROHMER, ERIC ) Les attributs n appartiennent pas à une seule table