Administration des bases de données



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

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

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

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

Bases de données avancées Concurrence d'accès et reprise

Réplication des données

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Cours de Base de Données Cours n.12

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

Implémentation des SGBD

UNION INTERCEPT SELECT WHERE JOINT FROM ACID

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

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

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

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

Bases de données et sites WEB

Données Réparties. Thibault BERNARD.

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

Eléments de base de la sécurité des bases de données

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

Compétences Business Objects

Auto-évaluation Oracle: cours de base

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

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

Présentation du module Base de données spatio-temporelles

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

TP Contraintes - Triggers

Année Universitaire 2009/2010 Session 2 de Printemps

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Les bases de données

Administration des bases de données relationnelles Part I

CREATION WEB DYNAMIQUE

Olivier Mondet

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.

Module BDR Master d Informatique (SAR)

Le Langage De Description De Données(LDD)

Cours Bases de données

Gestion des utilisateurs et de leurs droits

Bases de données relationnelles

TP11 - Administration/Tuning

Intégrité des données

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

COMPOSANTS DE L ARCHITECTURE D UN SGBD. Chapitre 1

Vincent Augusto

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

Du 10 Fév. au 14 Mars 2014

Bases de Données Réparties

Encryptions, compression et partitionnement des données

Transactionnel et transactionnel réparti. Source R.CHEVANCE G.Gardarin

Oracle Maximum Availability Architecture

1 Position du problème

CHAPITRE 1 ARCHITECTURE

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

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Création et Gestion des tables

Master Exploration Informatique des données DataWareHouse

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

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

Cours: Administration d'une Base de Données

Projet gestion d'objets dupliqués

Gestion répartie de données - 1

//////////////////////////////////////////////////////////////////// Administration bases de données

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

Bases de données cours 1

Optimisations des SGBDR. Étude de cas : MySQL

Devoir Data WareHouse

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

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

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

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

Langage SQL : créer et interroger une base

TP3 : Creation de tables 1 seance

Bases de Données Avancées

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

SQL Historique

Notion de base de données

Partie II Cours 3 (suite) : Sécurité de bases de données

Gestion de données réparties. Cours 1

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Secteur Tertiaire Informatique Filière étude - développement. Accueil. Apprentissage. Période en entreprise. Evaluation.

Introduction aux SGBDR

Bases de données Cours 1 : Généralités sur les bases de données

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

Modélisation et Gestion des bases de données avec mysql workbench

Les systèmes de base de données temps réels. Pokrovskaya Natalia, Kabbali Nadia

Chapitre III Architecture de Base de Données Oracle

CYCLE CERTIFIANT ADMINISTRATEUR BASES DE DONNÉES

A QUOI SERVENT LES BASES DE DONNÉES?

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

I4 : Bases de Données

3. La SGA ou System global Area

Plan de formation : Certification OCA Oracle 11g. Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques

Les bases de l optimisation SQL avec DB2 for i

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

Introduction aux bases de données Cours 1 : Généralités sur les bases de données

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

Les bases de données Page 1 / 8

Systèmes de Gestion de Bases de Données (SGBD) relationnels Maude Manouvrier

Transcription:

Administration des bases de données Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/

Administration des bases de données IV SGBD Transactionnels : protection et sécurité des données

OBJECTIFS 4.1. NOTIONS 4.1.1. SGBD transactionnel 4.1.2 Panne : protection et récupération des données 4.1.3. Gestion des accès concurrents 4.2. PRATIQUES 4.2.1. Gestion de transaction en SQL 4.2.2. Panne : journalisation sous Oracle 10g 4.2.3. Séquences Oracles

PANNES & TRANSACTIONS Type de panne Panne d action et de transaction : locale à la BD Globale au système Panne système (soft crash): sans atteinte à la mémoire physique Panne mémoire (hard crash) : problème sur la mémoire secondaire Exemple : gros systèmes 4.1.1 Défaillance Locale Soft crash Hard crash Fréquence ~ 10 / minute 2 à 3 / semaine 1 à 2 / an Résistance aux pannes : mémoire sûre Tps reprise instantané qques minutes qques heures [Gray 81, Härder, Reuter 83] Reprise sur panne SGBD restreint : pas de support à la reprise SGBD complet : reprise basée sur la notion de transaction

PANNE LOCALE & TRANSACTIONS 4.1.1 Problème Plusieurs clauses SQL pour une seule action logique Problème de cohérence si panne lors d une de ces instructions Exemple Suppression manuelle d un enregistrement en cascade DELETE FROM table2 WHERE INSERT INTO table2 VALUES table2 table1 Transaction - Unité logique de traitement correspondant à un ensemble d actions - Actions atomiques : validation, annulation et ré-exécution de transaction - Unité de base pour la gestion des pannes et celle des accès concurrents

TRANSACTION 4.1.1 Transaction Unité logique de traitement formée d une suite d actions limitée par une opération de validation ou d annulation. OK Validation Publication définitive des modifications (enregistrement physique) Annulation / Invalidation Retour de la BD à l état en début de transaction En cours de transaction : mémorisation des actions réalisées dans un journal (fichier de log ou de redo-log) avant et après Accès concurrents : verrous en cours de transaction NO INSERT INTO UPDATE SELECT SELECT INSERT INTO ALTER TABLE. OK OK

TRANSACTION 4.1.1 Principes ACID [Bjork, 1973] Atomicité Cohérence Isolation Durabilité Transactions atomiques (tout ou rien) Les transactions maintiennent la cohérence de la BD Les Transactions, mêmes concurrentes, sont isolées les unes des autres Après validation, mise à jour pérenne même si panne

TRANSACTION : SQL 4.1.1 Début de transaction implicite Début de session ou fin de la transaction précédente Fin de transaction implicite Ordre LDD (CREATE, ALTER, DROP etc.), fin de session ou panne Fin de transaction explicite Validation COMMIT Termine une transaction par la validation des actions effectuées Annulation des verrous et publication définitive des modifications effectuées, qui deviennent alors visibles aux autres utilisateurs Annulation ROLLBACK Termine une transaction en annulant toutes les actions effectuées Annulation des verrous et publication définitive des modifications effectuées

TRANSACTION : SQL 4.1.1 DELETE FROM personne WHERE... ; INSERT INTO TABLE personne VALUES... ; COMMIT ; UPDATE personne... SET ; ALTER TABLE societe ADD. ; UPDATE personne... SET ; DELETE FROM personne WHERE... ;? ROLLBACK ;

ORACLE : TRANSACTIONS & CONTRAINTES 4.2.1 Contraintes différées Il est possible de différer la vérification d une contraintes en fin de transaction Deux statuts : contrainte différable (DEFERRABLE) ou non Deux états (contrainte différable) : immédiate ou différée (DEFERRED) Utilisation d une contrainte différable Attribution du caractère différable lors de la création + état initial CREATE TABLE piece (id NUMBER, elt NUMBER, CONSTRAINT fk_piece_elt FOREIGN KEY(elt) REFERENCES elt(id) DEFERRABLE INITIALLY DEFERRED ); INITIALLY IMMEDIATE Changement d état dans une transaction ou toute une session SET { CONSTRAINT CONSTRAINTS} { ctr1 [, ctr2 ] ALL} { IMMEDIATE DEFERRED } ALTER SESSION SET CONSTRAINTS = { IMMEDIATE DEFERRED }

ORACLE : PROPRIETES DES TRANSACTIONS 4.2.1 Associer des propriétés à une transaction Valable uniquement si aucune autre transaction en cours SET TRANSACTION [mode_acces] [niveau_isolation] Niveau d isolation cf. partie verrouillage SERIALIZABLE REPEATABLE READ READ COMMITED READ UNCOMMITED Mode d accès READ ONLY READ WRITE READ WRITE incompatible avec READ UNCOMMITED Sous-transaction positionnement d un point intermédiaire dans la transaction SAVEPOINT <point_repere> ; annulation des actions depuis ce point de repère (et non depuis le début) ROLLBACK TO <point_repere> ;

PANNES ET TRANSACTION : JOURNALISATION 4.1.2 Journalisation - Performance : modifications mémorisées en cache (volatil) et recopie sur disque à intervalles prédéfinis. - Sécurité : cache perdu lors des pannes systèmes - Journalisation : mémorisation des informations qui ont été modifiées en cache mais pas encore reportées sur disque Journal Id_transaction Time Fichier / Page Valeur avant Valeur après Journal des images avant - Valeurs des données mises à jour et pas encore sur écrites sur disque, avant modification - Protection des données : utilisation pour défaire une transaction (undo log) Journal des images après - Valeurs des données mises à jour et pas encore sur écrites sur disque, après modification - Protection des données : utilisation pour rejouer une transaction (redo log)

PANNES ET TRANSACTION : JOURNALISATION 4.1.2 Protection des données : journalisation avant action log avant 2 journal 4 log après 3 Cache donnée lue 1 5 donnée modifiée BD persistante Performance : journal également en mémoire volatile (cache) Protection des données validation sauvegarde automatique sur DD validation après écriture

JOURNALISATION : ORACLE 4.2.1 Fichiers de journalisation - Fichiers de redo-log (.rdo ou.log) : journalisation avant et après Peuvent être multiplexés pour limiter les risques sur panne mémoire - Dimensionnement du journal : tablespace UNDO - Restauration de la base : suppression ou archivage (ARCHIVELOG MODE) du fichier une fois utilisé pour rejouer les transactions - Manipulation : outil Log Miner Vue V$LOGFILE V$LOG_HISTORY V$LOG Rôle Description des fichiers de journalisation Informations sur l'historique de tous les redos Information sur chaque groupe de log

JOURNALISATION : ORACLE 4.2.1 Gestion des tablespaces UNDO - Tablespace : partition logique de la mémoire - Tablespace UNDO : partition spécifiquement attribuée au journal. - Dimensionnement : importance du dimensionnement du journal : étude des vues dynamiques du dictionnaire de données + outil Undo Advisor Vue DBA_TABLESPACES DBA_UNDO_EXTENTS V$UNDOSTATS Rôle Liste des TABLESPACES. Champ CONTENT : type (UNDO ) Caractéristiques des UNDO segments % d utilisation du TABLESPACE

REPRISE APRES PANNE 4.1.2 Panne locale (problème de cohérence de la base) Gestion immédiate : ROLLBACK explicite ou implicite Reprise à froid : hard crash support mémoire physique endommagé recopie d une sauvegarde antérieure (dump) si copie physique du journal non atteinte : on rejoue les actions du journal Reprise à chaud : soft crash 1. Recherche dans le journal du dernier point de reprise système (copie physique) 2. Ré-exécution des transactions mémorisées après le point de reprise (redo log) 3. Annulation des transactions journalisées mais non encore validées (undo log) Oracle : gestion automatique à l aide des segments d annulation (ROLLBACK segments / UNDO segments)

REPRISE A CHAUD : SOFT CRASH 4.1.2 Validation logique et sauvegarde physique point de contrôle T1 (copie physique) COMMIT T2 T3 COMMIT crash T4 COMMIT? temps T5? Action de restauration Aucune Annulation (Rollback) Rejouer le transaction Transaction T1 T4, T5 T2, T3

BD REPARTIES 4.1.2 Validation en deux étapes Double COMMIT machine distante 1 demande COMMIT distant coordinateur demande COMMIT distant machine distante 2 prêt prêt ordre COMMIT distant ordre COMMIT distant COMMIT OK Commit OK COMMIT global OK COMMIT global OK

BD REPARTIES 4.1.2 Panne sur demande de préparation machine distante 1 demande COMMIT distant coordinateur demande COMMIT distant machine distante 2 prêt ordre ROLLBACK distant timeout ordre ROLLBACK distant panne reprise ROLLBACK OK ROLLBACK OK ROLLBACK global OK ROLLBACK global OK

BD REPARTIES 4.1.2 Panne sur validation distante machine distante 1 demande COMMIT distant coordinateur demande COMMIT distant machine distante 2 prêt prêt ordre COMMIT distant ordre COMMIT distant COMMIT OK panne timeout reprise COMMIT OK

CONCURRENCE : PROBLEME 4.1.3 Accès concurrents Plusieurs utilisateurs ou applications accèdent/modifient aux mêmes données. Problèmes sur les valeurs de lectures et sur le maintien de la cohérence. Perte d opération UPDATE O1 O1 Lecture O1 UPDATE O1 T1 UPDATE tampon Lecture O1 Ecriture O1 Écriture O1 UPDATE tampon T2 Perte T2

CONCURRENCE : PROBLEME 4.1.3 Lecture fantôme Incohérence apparente : laisse croire au non respect des contraintes SELECT O1 SELECT O2 CHECK 01 = 02 01 02 Lecture O2 UPDATE O2 UPDATE O1 (idem) Écriture O2 T1 Lecture O1 Lecture O2 Lecture O1 T2 01 02!! Écriture O1

CONCURRENCE : PROBLEME 4.1.3 Incohérence de la base Lecture fantôme conduisant à des inconsistances permanentes UPDATE O1 UPDATE O2 (idem) Lecture O1 CHECK 01 = 02 01 02 Lecture O2 UPDATE O2 UPDATE O1 (idem) T1 Ecriture O1 Lecture O2 Écriture O2 Lecture O1 T2 01 02?? Ecriture O2 Écriture O1

CONCURRENCE : SECURISATION 4.1.3 Principes Contrôle des accès concurrents sur les données en cours de m.a.j. Transaction : grain temporel minimal de gestion des accès (ACID) Granularité : Unité de base dont l accès peut-être contrôlé variable suivant la transaction : champ, tuple, relation Objectif : sérialisation de l exécution des transactions. Sérialisation Schéma sériel: schéma d exécution où les transactions sont exécutées à la suite les unes des autres : pas de concurrence. Schéma sérialisable : un schéma de transactions concurrentes T 1,,T n est sérialisable si il existe un schéma sériel de transactions qui produit le même résultat quelque soit l état initial de la base Schéma sérialisable par permutation : schéma sérialisable où on peut permuter les actions deux à deux pour avoir un schéma sériel

CONCURRENCE : SECURISATION 4.1.3 Opérations Compatibles: exécutables en parallèle sans problème Permutables: ordre d exécution sans influence sur le résultat Opérations de T1 et T2 Lecture/Ecriture A et Lecture/Ecriture B Lecture A et Ecriture A Ecriture A et Ecriture A compatible oui non non permutable oui non non Graphe de précédence d un schéma d exécution Définition: il y a précédence d une transaction T1 sur une transaction T2 si il existe au moins une opération O1 de T1 non permutable avec une opération O2 de T2 et qui est avant O2 dans le schéma d exécution T1 T2 T3 T1 T2 T3 Condition suffisante de sérialisation: un schéma d exécution est sérialisable si le graphe de précédence qui lui est associé est sans circuit.

GESITON DE CONCURRENCE PAR ESTAMPILLAGE 4.1.3 Sérialisation - approche optimiste : contrôle par estampillage ou validation - approche prudente : verrouillage Estampillage Numéro d ordre attribué aux transactions Traces sur les éléments de la BD lors de toute lecture / écriture : LL(E) numéro de la dernière transaction à avoir lu l élément E LE(E) numéro de la dernière transaction à avoir écrit / modifié E Algorithme d ordonnancement: T i veut opérer sur une donnée E si i LL(E) (resp. LE(E) ) alors on peut exécuter i (transaction bien postérieure) sinon, on annule et reprend la transaction d estampille LL(E) ( resp. LE(E) ). Approche optimiste : on suppose que tout se passe bien a priori. Si ordonnancement non sérialisable, il faut alors différer ou défaire les transactions

GESITON DE CONCURRENCE PAR VEROUILLAGE 4.1.3 Verrouillage : principes Une transaction peut poser et libérer des verrous sur les données sur lesquelles elle travaille (lecture, mise à jour, écriture ). Une transaction ne peut réaliser une opération sur une donnée que s il n y a pas de verrou posé dessus, où si la transaction possède le verrou en question. Sinon, elle est mise en attente au niveau de l opération en cours Approche prudente : pas d annulation de transaction en cours, sauf si verrou mortel Stratégies de verrouillage Verrous uniques stricts : verrou sur une donnée dès qu on l utilise Verrous distincts non nécessairement exclusifs : verrous différents suivant l action lecture (verrou partagé) / écriture (exclusif) lecture, mise à jour protégés ou non, exclusive ou non, etc Niveaux d isolation des transactions Matrice de compatibilité des opérations lecture / écriture C = 1 0 0 0

Accès concurrents : verrouillage Algorithme de verrouillage (cas général : verrous distincts) Avant chaque opération, la transaction vérifie si elle peut poser le verrou (exclusif ou non) qui correspond à cette dernière. Si non, attente. En pratique : Vecteur O(i,e) des opérations de la transaction T i en cours sur l élément e Demande LOCK : vecteur booléen M j (e) des modes de verrouillage demandés Demande UNLOCK: remise à zéro du mode correspondant dans O(i,e) Verrouillage autorisé si : Protocole de verrouillage en deux phases (2PL) M j (e) ( C * Σ Boole O(i,e) ) i j 2PL : dans la transaction, tous les verrouillages précèdent les libérations de verrou. Intérêt : condition suffisante pour assure des schémas d exécution sérialisables.

Accès concurrents : verrouillage Problèmes de verrouillage : verrou mortel INSERT O1 UPDATE O2 INSERT O2 SELECT O1 01 02 A LOCK : Écriture dans O1 B WAIT LOCK : Écriture dans O2 LOCK : Écriture dans O2 LOCK : Lecture dans O1 WAIT

Accès concurrents : verrouillage Détection des interblocages: graphe des attentes Graphe des attentes: une transaction T i attend une transaction T j si T i attend de pouvoir verrouiller une donnée d alors que le verrou correspondant appartient à T j. Interblocage (verrou mortel) ssi le graphe des attentes possède un circuit Résolution des interblocages T1 T2 T3 T4 Prévention: pré-ordonnancement des transactions Correction: algorithme de déblocage implicite Trop lourd Stratégie DIE_WAIT : T i attend T j uniquement si T i est plus vieille que T j. Sinon, T i est annulée (reprise). Stratégie WOUND_WAIT : T i attend T j uniquement si T i est plus jeune que T j. Sinon, T i tue T j (reprise provoquée). Stratégies plus souples : on blesse (ultimatum d une certaine durée) avant de tuer

Accès concurrents: verrouillage Problèmes de verrouillage : blocage permanent Problème: ensemble de transactions effectuant des actions compatibles (pas de verrou mortel) mais bloquant de facto les autres transactions. Solutions - file d attente des demandes de verrouillage - stratégies DIE_WAIT / WOUND_WAIT: pas de blocage permanent Problèmes de verrouillage : lecture fantôme Toujours possible : difficulté de définir des granules logiques communs T1 SELECT O1 SELECT O2 01 02 01 02 UPDATE O2 Lecture O1 LOCK : Lecture O2 LOCK : Écriture O2 01 02?? Lecture O2 UNLOCK : Commit T2

Accès concurrents : verrouillage Niveaux d isolations variables 2PL : assure la sériabilité mais restreint les exécutions concurrentes Protocoles plus permissifs plus de concurrence mais dangers associés Mode d opérations autorisés et durée des verrous : verrou court verrou long SQL2 : Niveaux d isolation normalisés libéré après l exécution de l opération concernée libéré en fin de transaction (2PL maximal) Niveau 0 verrou exclusif court en écriture uniquement Garantie : mises à jour assurées uniquement Niveau 1 verrou exclusif long en écriture uniquement Garantie : non perte et cohérence des mises à jour Niveau 2 Niveau 1 + verrous courts partagés en lecture Garantie : niveau 1 + cohérence des lectures Niveau 3 2PL : verrous longs écriture exclusive / lecture partagée Niveau 2 + lecture renouvelable

Accès concurrents : verrouillage Niveaux d isolations variables problèmes éventuels Problème 1 : lecture salissante SELECT O2 01 02 ROLLBACK UPDATE O2 Écriture O2 T1 O2?? Lecture O2 ROLLBACK T2 Verrou court : UNLOCK avant COMMIT

Accès concurrents : verrouillage Problème 2 : lecture non renouvelable SELECT O2 01 02 Lecture O2 UPDATE O2 T1 Lecture O2 SELECT O2 Lecture O2 Écriture O2 COMMIT UPDATE tampon T2 O2?? Verrou court : UNLOCK avant COMMIT

Accès concurrents : verrouillage Problème 3 : lecture fantôme Rappel : au mieux, on ne peut que limiter les situations de lectures fantômes SELECT O1 SELECT O2 01 02 UPDATE O2 UPDATE O1 Écriture O2 T1 O1?? Lecture O1 Lecture O2 Écriture O1 COMMIT T2 Verrou court lecture / écriture

Accès concurrents : Oracle Verrouillage implicite des données Gestion transparente: automatique, suivant le niveau d isolation choisi Plusieurs niveaux d isolation : contrôle plus ou moins strict de la concurrence SERIALIZABLE REPEATABLE READ READ COMMITED READ UNCOMMITED Protocole 2PL : déverrouillage final sur COMMIT (si niveau SERIALIZABLE) Granularité fine : on peut ne verrouiller qu un tuple, un attribut Dictionnaire Oracle : V$LOCK Mise à jour des données (INSERT, UPDATE et DELETE ) Niveau SERIALIZABLE: verrou sur le tuple (ROW) de la table concernée. Création d un ROLLBACK segment : modifications visibles du seul utilisateur responsable de la transaction jusqu à la fin de transaction. Consultation de données (SELECT) Niveau SERIALIZABLE : verrou lecture protégée. Ne peut pas voir les mises à jour non encore publiées par les autres transactions.

Accès concurrents : Oracle Nom Age Age = 5 A : Début SELECT Age FROM Nom ; Léo 4 C C : Début UPDATE.. SET Age=5; A: Fin SELECT Age FROM Nom ; B : Début SELECT Age FROM Nom ; Age 5 UNDO segment C : Fin UPDATE.. SET Age=5; C : Fin transaction Age = 4 Age = 5 B : Fin SELECT Age FROM Nom ; A B

Accès concurrents : Oracle Niveaux d isolation Niveau d isolation Lecture salissante Lecture non renouvelable Fantôme Lecture non validée Lecture validée Lecture renouvelable Sérialisable SQL : Définir un niveau d isolation SERIALIZABLE par défaut Définition par transaction SET TRANSACTION [niveau_isolation] SERIALIZABLE REPEATABLE READ READ COMMITED READ UNCOMMITED

Accès Concurrents : Oracle Verrouillage explicite sur table ou enregistrements Verrouillage de table LOCK TABLE <nom_table> IN {EXCLUSIVE SHARED } MODE Mode exclusif (X) : table totalement verrouillée sauf en consultation (SELECT). Mode partagé (S) : d autres transactions peuvent mettre un verrou partagé sur la table. Si plusieurs verrous S, impossibilité de modifier les données par aucune des transactions. Verrouillage de tuple (ROW) LOCK TABLE <nom_table> IN {ROW EXCLUSIVE ROW SHARED SHARE ROW EXCLUSIVE} MODE Si verrou partagé uniquement sur les enregistrements (RS), modifications parallèles possible sur enregistrements différents.

Séquences Principe: définition de valeurs unique et accès concurrents Objet nommé dans la base de données qui sert à générer des valeurs (entiers) uniques dans un environnement d utilisation multi-utilisateurs, sans conflit et sans risque de verrous mortels Une séquence est un objet spécifique qui peut être utilisé dans plusieurs tables et par plusieurs utilisateurs. Un pas d incrément permet de définir le calcul de la valeur courante à partir de la valeur précédente. Les valeurs sont comprises entre des valeurs maximales et minimales (-10 26 et 10 27 par défaut). Une fois l ensemble des valeurs parcouru, on peut autoriser le retour à la valeur initiale pour poursuivre la génération à l aide de l option CYCLE Exemple d utilisation : clé primaire Générer les valeurs de la clé sur une importation si aucun champ de données ne joue ce rôle (équivalent à NumeroAuto en ACCESS ou Auto Increment en MySQL)

Séquences Création CREATE SEQUENCE [<schema>.]<nom_seq> [ INCREMENT BY <entier> ] [START WITH <entier>] [ MAXVALUE entier ] [ MINVALUE entier ] [ {CYCLE NOCYCLE}] [{CACHE <entier> NOCACHE}] ; Modification Généralement pour changer l amplitude de variation ou le pas d incrément ALTER SEQUENCE [<schema>.]<nom_seq> + un des éléments de création Suppression DROP SEQUENCE <nom_sequence> ;

Séquences Utilisation Utilisation dans toute commande SQL de manipulation des données (SELECT, INSERT, UPDATE) avec quelques restrictions <nom_sequence>.nextval : directive (pseudo-attribut) générant la première ou la prochaine valeur de la séquence et retourne la valeur de celle-ci (lecture et écriture) <nom_sequence>.curval : valeur courante de la séquence (lecture seule) Exemple CREATE SEQUENCE seq_exple NOCYCLE ; SELECT seq_exple.nextval FROM seq_exple ; /* 1ère utilisation */... SELECT seq_exple.curval FROM seq_exple ; /* lecture 1ère valeur */... SELECT seq_exple.curval FROM seq_exple ;

Séquences : Oracle Visualisation de l état d une séquence Lecture (SELECT) du pseudo-attribut <nom_seq>.curval dans la pseudo-table DUAL Dictionnaire Oracle : vue ALL_SEQUENCES Nom NULL? Type -------------------------------------- -------- --------------- SEQUENCE_OWNER NOT NULL VARCHAR2(30) SEQUENCE_NAME NOT NULL VARCHAR2(30) MIN_VALUE MAX_VALUE NUMBER NUMBER INCREMENT_BY NOT NULL NUMBER CYCLE_FLAG ORDER_FLAG VARCHAR2(1) VARCHAR2(1) CACHE_SIZE NOT NULL NUMBER LAST_NUMBER NOT NULL NUMBER

Séquences Utilisation explicite de séquences avec SQL Loader 1. Créer une séquence CREATE SEQUENCE seq_exple START WITH 1 INCREMENT 1 BY NOCYCLE ; 2. Utiliser la séquence dans le fichier de contrôle LOAD DATA INFILE 'donnees.don' INTO TABLE Table_exemple FIELDS TERMINATED BY ';' (pk_att "seq_exple.nextval", NOM. Utilisation implicite de séquences avec SQL Loader LOAD DATA INFILE 'donnees.don' INTO TABLE Table_exemple FIELDS TERMINATED BY ';' (pk_att SEQUENCE(Valeur_Init, Increment),

Bibliographie Ouvrages de références DATE C. J. (2000) Introduction aux bases de données (7 édition), Vuibert, Paris, ISBN 2-7117-8664-1. Partie IV : gestion de la concurrence, pp. 443-496. GRAY J., ANDREAS R. (1993) Transaction processing : concepts and techniques. Morgan Kaufmann, San Mateo, CA. Travaux cités GRAY J.N. et al. (1981) The recovery manager of the system R Database Manager. ACM Computing Surveys, 13(2). HÄRDER T., REUTER A. (1983) Principles of transaction-oriented database recovery. ACM Comput. Surv. 15(4). MOHON C. et al. (1992) A transaction recovery method supporting fine-granularity locking and partial rollbacks using write-ahead logging. ACM TODS 17(1).