Professional Documents
Culture Documents
bases de donnes
Jean-Yves Antoine
http://www.info.univ-tours.fr/~antoine/
J.Y. Antoine
Administration des
bases de donnes
IV SGBD Transactionnels :
protection et scurit des donnes
J.Y. Antoine
OBJECTIFS
4.1. NOTIONS
4.1.1. SGBD transactionnel
4.1.2 Panne : protection et rcupration des donnes
4.1.3. Gestion des accs concurrents
4.2. PRATIQUES
4.2.1. Gestion de transaction en SQL
4.2.2. Panne : journalisation sous Oracle 10g
4.2.3. Squences Oracles
J.Y. Antoine
4.1.1
Frquence
Tps reprise
~ 10 / minute
instantan
2 3 / semaine qques minutes
1 2 / an
qques heures
[Gray 81, Hrder, Reuter 83]
4.1.1
table1
Transaction
- Unit logique de traitement correspondant un ensemble dactions
- Actions atomiques : validation, annulation et r-excution de transaction
- Unit de base pour la gestion des pannes et celle des accs concurrents
J.Y. Antoine
4.1.1
TRANSACTION
Transaction Unit logique de traitement
forme dune suite dactions limite par une
opration de validation ou dannulation
Validation Publication dfinitive
modifications (enregistrement physique)
OK
des
INSERT INTO
UPDATE
SELECT
OK
J.Y. Antoine
SELECT
INSERT INTO
NO
OK
ALTER TABLE
.
4.1.1
TRANSACTION
Principes ACID
[Bjork, 1973]
Atomicit
Cohrence
Isolation
Durabilit
J.Y. Antoine
COMMIT
Annulation
ROLLBACK
4.1.1
TRANSACTION : SQL
4.1.1
TRANSACTION : SQL
ROLLBACK ;
J.Y. Antoine
Contraintes diffres
Il est possible de diffrer la vrification dune contraintes en fin de transaction
Deux statuts : contrainte diffrable (DEFERRABLE) ou non
Deux tats (contrainte diffrable) : immdiate ou diffre (DEFERRED)
4.2.1
Niveau disolation
Mode daccs
READ ONLY | READ WRITE
Sous-transaction
positionnement dun point intermdiaire dans la transaction
SAVEPOINT <point_repere> ;
annulation des actions depuis ce point de repre (et non depuis le dbut)
ROLLBACK TO <point_repere> ;
J.Y. Antoine
4.2.1
4.1.2
Journal
Id_transaction
Time
Fichier / Page
Valeur avant
Valeur aprs
journal
log
aprs
3
donne
lue
Cache
donne
modifie
BD persistante
4.1.2
Fichiers de journalisation
- Fichiers de redo-log (.rdo ou .log) : journalisation avant et aprs
Peuvent tre multiplexs pour limiter les risques sur panne mmoire
- 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
Rle
V$LOGFILE
V$LOG_HISTORY
V$LOG
J.Y. Antoine
4.2.1
JOURNALISATION : ORACLE
4.2.1
JOURNALISATION : ORACLE
Gestion des tablespaces UNDO
- Tablespace : partition logique de la mmoire
- Tablespace UNDO : partition spcifiquement attribue au journal.
- Dimensionnement : importance du dimensionnement du journal : tude
des vues dynamiques du dictionnaire de donnes + outil Undo Advisor
Vue
Rle
DBA_TABLESPACES
J.Y. Antoine
% dutilisation du TABLESPACE
4.1.2
J.Y. Antoine
4.1.2
crash
(copie physique)
temps
T1
MIT
M
CO
M
CO
T2
T3
MIT
M
CO
MIT
T4
T5
Action de restauration
Aucune
Annulation (Rollback)
Rejouer le transaction
J.Y. Antoine
?
?
Transaction
T1
T4, T5
T2, T3
4.1.2
BD REPARTIES
Validation en deux tapes Double COMMIT
machine
machine
coordinateur
distante 1
distante 2
demande COMMIT distant
demande COMMIT distant
prt
ordre COMMIT distant
COMMIT OK
COMMIT global OK
J.Y. Antoine
prt
ordre COMMIT distant
Commit OK
COMMIT global OK
4.1.2
BD REPARTIES
Panne sur demande de prparation
machine
machine
coordinateur
distante 1
distante 2
demande COMMIT distant
demande COMMIT distant
panne
prt
timeout
ordre ROLLBACK distant
ROLLBACK OK
ROLLBACK global OK
J.Y. Antoine
reprise
4.1.2
BD REPARTIES
Panne sur validation distante
machine
machine
coordinateur
distante 1
distante 2
demande COMMIT distant
demande COMMIT distant
prt
prt
COMMIT OK
timeout
COMMIT OK
J.Y. Antoine
reprise
4.1.3
CONCURRENCE : PROBLEME
Accs concurrents
Plusieurs utilisateurs ou applications accdent/modifient aux mmes donnes.
Problmes sur les valeurs de lectures et sur le maintien de la cohrence.
Perte dopration
UPDATE O1
O1
UPDATE O1
Lecture O1
Lecture O1
T1
UPDATE
tampon
UPDATE
tampon
criture O1
T2
Ecriture O1
Perte T2
J.Y. Antoine
4.1.3
CONCURRENCE : PROBLEME
Lecture fantme
Incohrence apparente : laisse croire au non respect des contraintes
CHECK 01 = 02
01
SELECT O1
SELECT O2
02
UPDATE O2
UPDATE O1 (idem)
Lecture O2
criture O2
T1
Lecture O1
T2
Lecture O2
01 02 !!
J.Y. Antoine
Lecture O1
criture O1
4.1.3
CONCURRENCE : PROBLEME
Incohrence de la base
Lecture fantme conduisant des inconsistances permanentes
CHECK 01 = 02
UPDATE O1
UPDATE O2 (idem)
Lecture O1
Ecriture O1
T1
01 02 ??
J.Y. Antoine
Lecture O2
Ecriture O2
01
UPDATE O2
UPDATE O1 (idem)
02
Lecture O2
criture O2
Lecture O1
criture O1
T2
4.1.3
CONCURRENCE : SECURISATION
Principes
Contrle des accs concurrents sur les donnes en cours de m.a.j.
Srialisation
Schma sriel: schma dexcution o les transactions sont
excutes la suite les unes des autres : pas de concurrence.
Schma srialisable : un schma de transactions concurrentes
T1,,Tn est srialisable si il existe un schma sriel de transactions
qui produit le mme rsultat quelque soit ltat initial de la base
Schma srialisable par permutation : schma srialisable o on
peut permuter les actions deux deux pour avoir un schma sriel
J.Y. Antoine
4.1.3
CONCURRENCE : SECURISATION
Oprations
Oprations de T1 et T2
compatible
permutable
Lecture/Ecriture A et Lecture/Ecriture B
oui
oui
Lecture A et Ecriture A
non
non
Ecriture A et Ecriture A
non
non
T1
T2
T3
T1
T2
T3
4.1.3
Estampillage
Numro dordre attribu aux transactions
Traces sur les lments de la BD lors de toute lecture / criture :
LL(E)
LE(E)
4.1.3
Stratgies de verrouillage
Verrous uniques stricts : verrou sur une donne ds quon lutilise
Verrous distincts non ncessairement exclusifs : verrous diffrents suivant laction
lecture (verrou partag) / criture (exclusif)
lecture, mise jour protgs ou non, exclusive ou non , etc
C=
lecture / criture
1 0
0 0
Boole
ij
INSERT O1
UPDATE O2
01
02
WAIT
WAIT
J.Y. Antoine
T2
T3
T4
Trop lourd
Stratgie DIE_WAIT : Ti attend Tj uniquement si Ti est plus vieille que Tj . Sinon, Ti est
annule (reprise).
Stratgie WOUND_WAIT : Ti attend Tj uniquement si Ti est plus jeune que Tj . Sinon, Ti
tue Tj (reprise provoque).
Stratgies plus souples : on blesse (ultimatum dune certaine dure) avant de tuer
J.Y. Antoine
T1
SELECT O1
SELECT O2
Lecture O1
01 02
01
UPDATE O2
02
LOCK : Lecture O2
LOCK : criture O2
01 02 ??
J.Y. Antoine
Lecture O2
UNLOCK : Commit
T2
Niveau 1
Niveau 2
Niveau 3
J.Y. Antoine
SELECT O2
02
ROLLBACK
criture O2
Lecture O2
T1
O2??
ROLLBACK
T2
02
SELECT O2
Lecture O2
Lecture O2
SELECT O2
UPDATE
tampon
criture O2
T1
Lecture O2
COMMIT
T2
O2??
01
SELECT O1
SELECT O2
02
UPDATE O2
UPDATE O1
criture O2
Lecture O1
T1
criture O1
Lecture O2
O1 ??
T2
COMMIT
Age = 5
Age
5
UNDO segment
C : Fin UPDATE .. SET Age=5;
C : Fin transaction
Age = 5
Age =4
B : Fin SELECT Age FROM Nom ;
A
J.Y. Antoine
Lecture
salissante
Lecture non
renouvelable
Fantme
Lecture valide
Lecture renouvelable
Srialisable
Verrouillage de table
LOCK TABLE <nom_table> IN {EXCLUSIVE | SHARED } MODE
Mode exclusif (X) : table totalement verrouille sauf en consultation (SELECT).
Mode partag (S) : dautres transactions peuvent mettre un verrou partag sur
la table. Si plusieurs verrous S, impossibilit de modifier les donnes 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
parallles possible sur enregistrements diffrents.
J.Y. Antoine
Squences
Principe: dfinition de valeurs unique et accs concurrents
Objet nomm dans la base de donnes qui sert gnrer des valeurs (entiers)
uniques dans un environnement d utilisation multi-utilisateurs, sans conflit et sans
risque de verrous mortels
Une squence est un objet spcifique qui peut tre utilis dans plusieurs tables et par
plusieurs utilisateurs.
Un pas dincrment permet de dfinir le calcul de la valeur courante partir de la
valeur prcdente. Les valeurs sont comprises entre des valeurs maximales et
minimales (-1026 et 1027 par dfaut).
Une fois lensemble des valeurs parcouru, on peut autoriser le retour la valeur initiale
pour poursuivre la gnration laide de loption CYCLE
Squences
Cration
CREATE SEQUENCE [<schema>.]<nom_seq>
[ INCREMENT BY <entier> ]
[START WITH <entier>]
[ MAXVALUE entier ] [ MINVALUE entier ]
[ {CYCLE | NOCYCLE}]
[{CACHE <entier> | NOCACHE}] ;
Modification
Gnralement pour changer lamplitude de variation ou le pas dincrment
ALTER SEQUENCE [<schema>.]<nom_seq> + un des lments de cration
Suppression
DROP SEQUENCE <nom_sequence> ;
J.Y. Antoine
Squences
Utilisation
Exemple
CREATE SEQUENCE seq_exple NOCYCLE ;
SELECT seq_exple.NEXTVAL FROM seq_exple ;
...
SELECT seq_exple.CURVAL FROM seq_exple ;
...
SELECT seq_exple.CURVAL FROM seq_exple ;
J.Y. Antoine
/* 1re utilisation */
/* lecture 1re valeur */
Squences : Oracle
Visualisation de ltat dune squence
Lecture (SELECT) du pseudo-attribut <nom_seq>.CURVAL dans la
pseudo-table DUAL
NULL ?
Type
--------------------------------------
--------
---------------
SEQUENCE_OWNER
NOT NULL
VARCHAR2(30)
SEQUENCE_NAME
NOT NULL
VARCHAR2(30)
MIN_VALUE
NUMBER
MAX_VALUE
NUMBER
INCREMENT_BY
NOT NULL
NUMBER
CYCLE_FLAG
VARCHAR2(1)
ORDER_FLAG
VARCHAR2(1)
CACHE_SIZE
NOT NULL
NUMBER
LAST_NUMBER
NOT NULL
NUMBER
J.Y. Antoine
Squences
Utilisation explicite de squences avec SQL Loader
1.
2.
J.Y. Antoine
Bibliographie
Ouvrages de rfrences
DATE C. J. (2000) Introduction aux bases de donnes (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 cits
GRAY J.N. et al. (1981) The recovery manager of the system R Database Manager.
ACM Computing Surveys, 13(2).
HRDER 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).
J.Y. Antoine