Vous êtes sur la page 1sur 102

1/102

Bases de Donnees Avancees


Securite, Confidentialite
et sauvegarde/restauration
Thierry Hamon
Bureau H202
Institut Galil
ee - Universit
e Paris 13
&
LIMSI-CNRS
hamon@limsi.fr
http://perso.limsi.fr/hamon/Teaching/BDA-20132014/

INFO2 BDA

2/102

Introduction

Parmi les roles dun Administrateur dune Base de Donnees :


Le role organisationnel concerne
la definition du schema conceptuel des donnees
le partage de ces donnees par les utilisateurs

3/102

Taches de ladministrateur
creer la BD et assurer son evolution :
ladministrateur a la t
ache de creer la BD et ses composantes
conformement `
a un schema conceptuel. Il doit assurer ainsi levolution de
cette base en modifiant, en creant ou en supprimant certaines structures.

gerer les privil`eges dacc`es :


ladministrateur attribue et retire des privil`eges dacc`es aux donnees aux
differents utilisateurs de la base de donnees

assurer la securite et la coherence des donnees :


ladministrateur doit mettre en place les structures et les procedures
permettant de faire face `
a tous les incidents et de retrouver lintegrite et
la coherence des donnees

4/102

Vues

Le niveau externe : Vues et droits dacc`es

CREATE VIEW V AS (SELECT . . . ) ;

CREATE OR REPLACE VIEW V AS ( r e q u


e t e de d
efinition );
CREATE OR REPLACE VIEW V AS (SELECT . . . ) WITH GRANT OPTION ;
CREATE OR REPLACE VIEW V AS (SELECT . . . ) WITH CHECK OPTION ;

GRANT . . . ; REVOKE . . .
CREATE ROLE . . . ;

5/102

Vues

Le niveau externe : Vues et droits dacc`es


Le niveau externe correspond `a la partie visible de la base de
donnees pour chaque utilisateur.
Dans un contexte multi-utilisateurs, un SGBD doit :
assurer la confidentialite et lintegrite des donnees. La
confidentialite peut etre assuree par lutilisation des vues
(views), qui agissent comme des fenetres sur la BD;
permettre de contr
oler lacc`es aux donnees (privil`eges en
lecture, modification ou suppression). Il sagit de droits
dacc`es.

6/102

Vues

Les Vues
Vues mono-table

Creation dune Vue mono-table :


CREATE OR REPLACE VIEW P r o f s 8 0
AS
(SELECT NUM PROF, NOM, SPECIALITE , DATE ENT
FROM PROFESSEURS
WHERE DATE ENT > 01011980 ) ;
C r e a t e [ o r R e p l a c e ] VIEW Nom Vue As
( R e q u
e t e de d
e f i n i t i o n de l a v u e ) ;

7/102

Vues

Vues mono-table
TTITLE L e s P r o f e s s e u r s
SELECT NUM PROF, NOM, SPECIALITE , DATE ENT FROM PROFESSEURS ;

Les Professeurs :
NUM_PROF NOM
1 Bottle
2 Bolenov
3 Tonilaclasse
4 Pastecnov
5 Selector
6 Vilplusplus
7 Francesca
8 Pucette

SPECIALITE
po
esie
r
eseau
poo
sql
sql
poo
sql

DATE_ENT
01/10/70
15/11/68
01/10/79
01/10/75
15/10/82
25/04/90
01/10/75
06/12/88

8/102

Vues

Vues mono-table

TTITLE L e s P r o f e s s e u r s embauch
e s d e p u i s 1980
SELECT NUM PROF, NOM, SPECIALITE , DATE ENT FROM P r o f s 8 0 ;

Les Professeurs embauch


es depuis 1980 :
NUM_PROF NOM
SPECIALITE
5 Selector
sql
6 Vilplusplus
poo
8 Pucette
sql

DATE_ENT
15/10/82
25/04/90
06/12/88

9/102

Vues

Mise `a jour Insertion


INSERT INTO P r o f s 8 0 V a l u e s ( 1 7 , Le n o u v e a u , Data WareHouse ,
25032003 ) ;

SELECT NUM_PROF, NOM, SPECIALITE, DATE_ENT FROM PROFESSEURS ;


LES PROFESSEURS :
NUM_PROF NOM
SPECIALITE
DATE_ENT
1 Bottle
po
esie
01/10/70
2 Bolenov
r
eseau
15/11/68
3 Tonilaclasse
poo
01/10/79
4 Pastecnov
sql
01/10/75
5 Selector
sql
15/10/82
6 Vilplusplus
poo
25/04/90
7 Francesca
01/10/75
8 Pucette
sql
06/12/88
17 Le nouveau
Data WareHouse
25/03/03

10/102

Vues

Mise `a jour Insertion

SELECT NUM_PROF, NOM, SPECIALITE, DATE_ENT FROM Profs80;


Les Professeurs embauch
es depuis 1980 :
NUM_PROF NOM
SPECIALITE
DATE_ENT
5 Selector
sql
15/10/82
6 Vilplusplus
poo
25/04/90
8 Pucette
sql
06/12/88
17 Le nouveau
Data WareHouse
25/03/03

Linsertion est prise en compte dans la table et dans la vue issue de


cette table

11/102

Vues

Mise `a jour modification dans la vue

UPDATE P r o f s 8 0 SET DATE ENTREE = 01042003


WHERE NUM PROF = 1 7 ;

12/102

Vues

Mise `a jour - Insertion dans la vue


INSERT INTO P r o f s 8 0 V a l u e s ( 1 8 , Le n o u v e a u , Data WareHouse ,
01011970 ) ;

SELECT NUM_PROF, NOM, SPECIALITE, DATE_ENT FROM PROFESSEURS ;


LES PROFESSEURS :
NUM_PROF NOM
SPECIALITE
DATE_ENT
1 Bottle
po
esie
01/10/70
2 Bolenov
r
eseau
15/11/68
3 Tonilaclasse
poo
01/10/79
4 Pastecnov
sql
01/10/75
5 Selector
sql
15/10/82
6 Vilplusplus
poo
25/04/90
7 Francesca
01/10/75
8 Pucette
sql
06/12/88
17 Le nouveau
Data WareHouse
01/04/03
18 Le nouveau
Data WareHouse
01/01/70

13/102

Vues

Mise `a jour - Insertion dans la vue

SELECT NUM_PROF, NOM, SPECIALITE, DATE_ENT FROM Profs80;


Les Professeurs embauch
es depuis 1980 :
NUM_PROF NOM
SPECIALITE
DATE_ENT
5 Selector
sql
15/10/82
6 Vilplusplus
poo
25/04/90
8 Pucette
sql
06/12/88
17 Le nouveau
Data WareHouse
01/04/03

Linsertion nest prise en compte que dans la table. Elle ne lest


donc pas dans la vue issue de cette table, car la date dentree ne
correspond pas `a la definition.

14/102

Vues

Mise `a jour clause WITH CHECK OPTION


La clause WITH CHECK OPTION empeche quun utilisateur mette `a
jour dans une vue des tuples non conformes `a la definition de la
vue.
Creation avec WITH CHECK OPTION :
CREATE OR REPLACE VIEW P r o f s 8 0
AS
(SELECT NUM PROF, NOM, SPECIALITE , DATE ENT
FROM PROFESSEURS WHERE DATE ENT > 01011980 )
WITH CHECK OPTION ;

15/102

Vues

Mise `a jour clause WITH CHECK OPTION


SELECT * FROM PROFESSEURS ;
NUM_PROF
1
2
3
4
5
6
7
8
18
17

NOM
Bottle
Bolenov
Tonilaclasse
Pastecnov
Selector
Vilplusplus
Francesca
Pucette
Le nouveau
Le nouveau

SPECIALITE
po
esie
r
eseau
poo
sql
sql
poo
sql
Data WareHouse
Data WareHouse

DATE_ENT
01/10/70
15/11/68
01/10/79
01/10/75
15/10/82
25/04/90
01/10/75
06/12/88
01/01/70
01/04/03

DER_PROM SALAIRE_BASE SALAIRE_ACTUEL


01/10/88
2000000
2600000
01/10/98
1900000
2468000
01/01/89
1900000
2360000
2500000
2500000
01/10/88
1900000
1900000
05/06/94
1900000
2200000
11/01/98
2000000
3200000
29/02/96
2000000
2500000

SELECT * FROM Profs80;


NUM_PROF
5
6
8
17

NOM
Selector
Vilplusplus
Pucette
Le nouveau

SPECIALITE
sql
poo
sql
Data WareHouse

DATE_ENT
15/10/82
25/04/90
06/12/88
01/04/03

16/102

Vues

Mise `a jour - Insertion dans la vue


INSERT INTO P r o f s 8 0 V a l u e s ( 2 7 , Le n o u v e a u , Data WareHouse ,
25032003 ) ;
SELECT * FROM PROFESSEURS ;
NUM_PROF NOM
SPECIALITE
DATE_ENT DER_PROM SALAIRE_BASE SALAIRE_ACTUEL
1 Bottle
po
esie
01/10/70 01/10/88
2000000
2600000
2 Bolenov
r
eseau
15/11/68 01/10/98
1900000
2468000
3 Tonilaclasse poo
01/10/79 01/01/89
1900000
2360000
4 Pastecnov
sql
01/10/75
2500000
2500000
5 Selector
sql
15/10/82 01/10/88
1900000
1900000
6 Vilplusplus
poo
25/04/90 05/06/94
1900000
2200000
7 Francesca
01/10/75 11/01/98
2000000
3200000
8 Pucette
sql
06/12/88 29/02/96
2000000
2500000
18 Le nouveau
Data WareHouse 01/01/70
17 Le nouveau
Data WareHouse 01/04/03
27 Le nouveau
Data WareHouse 25/03/03

17/102

Vues

Mise `a jour - Insertion dans la vue

SELECT * FROM Profs80;


NUM_PROF NOM
5 Selector
6 Vilplusplus
8 Pucette
17 Le nouveau
27 Le nouveau

SPECIALITE
sql
poo
sql
Data WareHouse
Data WareHouse

DATE_ENT
15/10/82
25/04/90
06/12/88
01/04/03
25/03/03

Linsertion est prise en compte dans la table et dans la vue issue de


cette table.

18/102

Vues

Mise `a jour - Insertion dans la vue


INSERT INTO P r o f s 8 0 V a l u e s ( 2 8 , Le n o u v e a u , Data WareHouse ,
25031970 ) ;
INSERT INTO P r o f s 8 0
ERREUR `
a la ligne 1 :
ORA01402: v u e WITH CHECK OPTION v i o l a t i o n de c l a u s e WHERE
SELECT *
NUM_PROF
1
2
3
4
5
6
7
8
18
17
27

FROM PROFESSEURS ;
NOM
SPECIALITE
Bottle
po
esie
Bolenov
r
eseau
Tonilaclasse poo
Pastecnov
sql
Selector
sql
Vilplusplus
poo
Francesca
Pucette
sql
Le nouveau
Data WareHouse
Le nouveau
Data WareHouse
Le nouveau
Data WareHouse

DATE_ENT
01/10/70
15/11/68
01/10/79
01/10/75
15/10/82
25/04/90
01/10/75
06/12/88
01/01/70
01/04/03
25/03/03

DER_PROM SALAIRE_BASE SALAIRE_ACTUEL


01/10/88
2000000
2600000
01/10/98
1900000
2468000
01/01/89
1900000
2360000
2500000
2500000
01/10/88
1900000
1900000
05/06/94
1900000
2200000
11/01/98
2000000
3200000
29/02/96
2000000
2500000

NB : Linsertion nest prise en compte ni dans la table ni dans la


vue.

19/102

Vues

Mise `a jour - Insertion dans la vue

SELECT * FROM Profs80;


NUM_PROF NOM
5 Selector
6 Vilplusplus
8 Pucette
17 Le nouveau
27 Le nouveau

SPECIALITE
sql
poo
sql
Data WareHouse
Data WareHouse

DATE_ENT
15/10/82
25/04/90
06/12/88
01/04/03
25/03/03

20/102

Vues

Conditions pour les mises `a jour


La norme SQL2 a defini un ensemble de conditions que doit
respecter une vue pour etre modifiable :
La definition de la vue ne doit pas contenir apr`es la clause
FROM les directives JOIN, UNION, INTERSECT ou EXCEPT.
La clause SELECT ne doit pas contenir la directive DISTINCT.
La clause SELECT ne peut contenir que des references aux
colonnes de la table source. Les operateurs dagregats (SUM,
AVG, COUNT, MIN, MAX) sont exclus.
La clause FROM contient exactement une table ou une vue
elle-meme modifiable.
La clause WHERE ne doit pas contenir de clause GROUP BY ou
HAVING.

21/102

Vues

Les Vues
Vues multi-tables

Creation :
CREATE OR REPLACE VIEW
E n s e i g n e r (NUMP, NOMP, SPECIALITE , NOMC, NUMC)
AS
(SELECT P . NUM PROF, P .NOM, P . SPECIALITE , C .NOM, C . NUM COURS
FROM PROFESSEURS P , COURS C , CHARGE H
WHERE C . NUM COURS = H . NUM COURS
AND H . NUM PROF = P . NUM PROF
AND C . ANNEE=2);
SELECT FROM E n s e i g n e r ;

22/102

Vues

Vues multi-tables
SELECT * FROM Enseigner;
NUMP
----1
3
3
7
8
8

NOMP
------------Bottle
Tonilaclasse
Tonilaclasse
Francesca
Pucette
Pucette

SPECIALITE
----------po
esie
poo
poo
sql
sql

NOMC
NUMC
-------- ----Sgbd
4
Sgbd
4
Analyse
5
Sgbd
4
Sgbd
4
Analyse
5

SQL> insert into Enseigner values (37, Le nouveau, Musique, Danse, 6);
insert into Enseigner values (37, Le nouveau, Musique, Danse, 6)
*
ERREUR `
a la ligne 1 :
ORA-01779: Impossible modifier colonne correspondant `
a une table non
prot
eg
ee par cl
e

23/102

Vues

Vues multi-tables
i n s e r t i n t o E n s e i g n e r v a l u e s ( 3 7 , Le n o u v e a u , Musique ,
Danse , 6 ) ; IMPOSSIBLE

Ces vues sont accessibles uniquement en lecture


Pour pallier linsuffisance, les SGBD proposent un trigger
particulier INSTEAD OF.
Le trigger permet linsertion, la modification et la suppression dans
ce type de vues.
create or r e p l a c e t r i g g e r i n s e r t e n s e i g n e r
i n s t e a d o f i n s e r t on E n s e i g n e r
begin
i n s e r t i n t o p r o f e s s e u r s v a l u e s ( : new . n u m p r o f , : new . nom ,
: new . s p e c i a l i t e ) ;
i n s e r t i n t o c o u r s v a l u e s ( : new . n um cou rs , : new . nom , 2 ) ;
i n s e r t i n t o c h a r g e v a l u e s ( : new . n u m p r o f , : new . n u m c o u r s ) ;
end ;
/

24/102

Clusters

Cluster

Jointure physique entre tables : clusters


Index sur un table ou sur plusieurs tables reunies par un cluster
Possibilite de definir des index multiples sur un objet : Oracle
choisira le meilleur index pour une requete donnee

25/102

Clusters

Cluster
Jointure physique : Eviter de perdre du temps `a verifier les
conditions de jointure lors dune requete multi-tables
Cluster : Permet le regroupement physique des tables autour des
cles de jointure (cle de cluster)
NB : Utilisation limitee aux jointures tr`es frequemment sollicitees
Type de cluster sous Oracle :
Cluster `a index : indexation sur la cle du cluster
Cluster `a hachage : fonction de hachage appliquee `a la cle du
cluster

26/102

Clusters

Cluster
Creation (syntaxe simplifiee)
CREATE CLUSTER n o m c l u s t e r
(< n o m c l e 1 t y p e c l e 1 > [ , <n o m c l
e type cle2 . . . ]
[ SIZE t a i l l e b l o c ]
{ INDEX | HASHKEYS i n t e g e r } ;

Suppression
DROP CLUSTER <n o m c l u s t e r >
[ INCLUDING TABLES [ CASCADE CONSTRAINTS ] ]

INCLUDING TABLES : suppression des tables liees au cluster


(DROP TABLE prealable sinon)
CASCADE CONSTRAINTS : suppression des contraintes
dintegrite referentielles pointant sur les tables du cluster

27/102

Clusters

Conclusion
Schema Physique (n`eme version)
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 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) , . . . ) ;

La creation des tables se fait en plusieurs etapes :


Les attributs ainsi que leurs domaines de definitions ;
Les contraintes, les index ;
Faut-il regrouper les donnees (creer des clusters) pour accelerer les
traitements ?
De nos jours, ce nest plus preconise par certains editeurs (tel que
Oracle)

28/102

Administration dun SGBD

Taches de ladministrateur

Apr`es installation du logiciel ;


Configuration suivant larchitecture standard OFA (Optimal
Flexible Architecture) :
Fichiers de donnees
Fichiers Redo-log
Fichiers de contr
ole

+ Fichier dinitialisation

29/102

Administration dun SGBD

Taches de ladministrateur

Creation de la BD
(les fichiers dependent des OS ; plusieurs types de fichiers
seront crees) ;
CREATE TABLESPACE NomBD
DATAFILE c : \ Chemin \ t a b l e s p a c e s \NomBD . d b f SIZE 3M ;
3 M
e gas ou m M
e gas
CREATE TABLESPACE NomBD
DATAFILE c : \ Chemin \ t a b l e s p a c e s \tmp NomBD . d b f SIZE 3M ;
3 M
e gas ou m M
e gas

30/102

Administration dun SGBD

Taches de ladministrateur
3

Creation des utilisateurs :


CREATE USER NomUser IDENTIFIED BY M o t P a s s e U s e r
DEFAULT TABLESPACE NomBD
TEMPORARY TABLESPACE tmp NomBD ;

Creer un role et un profil :


GRANT CONNECT TO NomUser ;
GRANT RESOURCE TO NomUser ;
GRANT SEL CATALOG ROLE TO NomUser ;

Les droits connect et resource permettent de faire de


nombreux traitements sur oracle (creer des tables, des index,
des vues, des triggers, du pl/sql etc..., )
le droit sel_catalog_role est tr`es important pour pouvoir
consulter le dictionnaire de donnees dOracle et faire le suivi
des optimisations.

31/102

Administration dun SGBD

Taches de ladministrateur

Destruction des utilisateurs :


DROP USER NomUser CASCADE ;

Modification du mot de passe des utilisateurs :


ALTER USER NomUser IDENTIFIED BY n o u v e a u m o t d e p a s s e ;
SHOW USER ;

SHOW ERRORS ;

...

32/102

Administration dun SGBD

Taches de ladministrateur
Faut-il partager les donnees ?
Faut-il attribuer/retirer des privil`eges dacc`es ?
Quel type de droits dacc`es `a accorder aux autres utilisateurs ?
GRANT { p r i v i l `
ege syst`
eme | r
ole}
eme2 | ro
le2 } . . . ]
[ , { privil`
ege syst`
TO { u t i l i s a t e u r | r
o l e | PUBLIC} [ , u t i l i s a t e u r 2
[ WITH GRANT OPTION ] ;

...]

REVOKE { p r i v i l `
ege syst`
eme | r
ole}
[ , { privil`
ege syst`
eme2 | ro
le2 } . . . ]
FROM { u t i l i s a t e u r | r
o l e | PUBLIC} [ , u t i l i s a t e u r 2

...]

33/102

Droits dacc`
es

Droits dacc`es
Il existe deux familles de permissions :
les permissions syst`eme : pour Oracle, plusieurs dizaines de
privil`eges sont disponibles
Par exemple, la creation dutilisateurs (CREATE USER), la creation et la
suppression de tables (CREATE TABLE / DROP TABLE), la creation
despace disque (CREATE TABLESPACE), la sauvegarde de table (BACKUP
...), la creation de r
oles (CREATE ROLE)...

les permissions objet qui permettent de donner des droits sur


les donnees elles memes.

34/102

Droits dacc`
es

Droits dacc`es

Attribuer des privil`eges :

GRANT p r i v i l `
e g e | ALL TO u t i l i s a t e u r | PUBLIC [ WITH GRANT OPTION ] ;

Retirer des privil`eges :


REVOKE p r i v i l `
e g e | ALL FROM u t i l i s a t e u r | PUBLIC ;

35/102

Droits dacc`
es

Droits dacc`es
Attribuer des privil`eges syst`eme sous Oracle :
GRANT { p r i v i l `
ege syst`
eme | r
ole } [ , { privil`
ege syst`
eme2 |
ro
le2 } . . . ]
TO { u t i l i s a t e u r

| r
o l e | PUBLIC} [ ,

utilisateur2

[ WITH GRANT OPTION ] ;

Les principales options possibles des privil`eges syst`eme


dOracle sont :
grant
grant
grant
grant
grant
grant

connect
create trigger
create procedure
create session
c r e a t e view
unlimited tablespace

...]

36/102

R
oles

Roles
Un role est un groupement de privil`eges.
Un utilisateur est un nom de compte Oracle.
PUBLIC permet de transmettre les droits `a tous les utilisateurs
associes `a lespace de stockage (tablespace) concerne
WITH GRANT OPTION permet de re-attribuer au(x)
beneficiaires(s) les privil`eges definis dans GRANT

Retirer des privil`eges syst`eme sous Oracle :


REVOKE { p r i v i l `
ege syst`
eme | r
ole } [ , { privil`
ege syst`
eme2
| ro
le2 } . . . ]
FROM { u t i l i s a t e u r | r
o l e | PUBLIC} [ , u t i l i s a t e u r 2 . . . ] ;

37/102

R
oles

Roles

Attribuer des privil`eges objet sous Oracle : (syntaxe simplifiee)


GRANT { p r i v i l `
e g e 1 [ ( colonne11 , [ colonne12 . . . ] ) ] | r
ole}
[ , { privil`
e g e 2 [ ( colonne21 . . . ) ] | r o
le2 } . . . ]
ON Sch
e maDeLobjet
TO { u t i l i s a t e u r | r
o l e | PUBLIC} [ , u t i l i s a t e u r 2 . . . ]
[ WITH GRANT OPTION ] ;

Les principales options possibles des privil`eges objet dOracle


sont :
ALTER, SELECT, DELETE, UPDATE, RENAME, LOCK, ....

38/102

R
oles

Roles

Retirer des privil`eges objet sous Oracle : (syntaxe simplifiee)


REVOKE { p r i v i l `
ege1 | r
ole } [ , { privil`
ege2 | ro
le2 } . . . ]
ON Sch
e maDeLobjet
FROM { u t i l i s a t e u r | r
o l e | PUBLIC} [ , u t i l i s a t e u r 2 . . . ]

[ CASCADE CONSTRAINTS ] ;

39/102

R
oles

Les roles sous Oracle


Le principe dun role Oracle (ROLE) est de creer un groupement
nomme de privil`eges. Celui-ci peut etre accorde `a dautres
utilisateurs.
Privilge 1

Utilisateur 1
Rle A
Utilisateur 2

Privilge 2
Rle B

Utilisateur 3

Privilge 3
Rle C

Utilisateur 4

Privilge 4

La commande SQL qui permet de creer un r


ole est :
CREATE ROLE LeNomDuR
o le ;
GRANT L e P r i v i l `
e g e ON L o b j e t TO L e R
ole ;

40/102

R
oles

Les profils sous Oracle

Un profil est un ensemble de ressources limitees, `a attribuer aux


utilisateurs : des caracteristiques physiques telles que :
Un pourcentage dutilisation dans un tablespace ;
Un nombre de connexions ;
Une priorite dexecution des requetes, etc.

41/102

R
oles

Les profils sous Oracle

Exemple : Creer un profil et laffecter `a un utilisateur :


Create p r o f i l e
profexpl
Session per user 1
I d l e t i m e 120
connect ;

limit

Affecter le profile `a lutilisateur thierry


Alter user t h i e r r y

profile

profexpl ;

42/102

R
oles

Roles et utilisateurs

Les principaux roles, predefinis par Oracle et attribues aux


utilisateurs SYSTEM et SYS, sont :
R^
ole
Privil`
ege syst`
eme
----------------------------------------------CONNECT
CREATE SESSION, CREATE TABLE, ...
RESOURCE

CREATE CLUSTER,
CREATE PROCEDURE, ...

DBA

Tous les privil`


eges

43/102

S
ecurit
e

Securite des donnees

Gestion des privil`eges dacc`es


Gestion des transactions
Resolution des conflits dacc`es

44/102

S
ecurit
e

Securite des donnees


Gestion des privil`eges dacc`es

Privil`eges sur les tables, les vues et les index


Accorder des privil`eges :
GRANT p r i v i l `
ege (s)
ON Nom de Table [ ( Nom de Colonne , . . . ) ] | ON Nom de Vue
TO u t i l i s a t e u ( s ) | TO PUBLIC [ WITH GRANT OPTION ] ;

Retirer des privil`eges


REVOKE p r i v i l `
ege (s)
ON Nom de Table [ ( Nom de Colonne , . . . ) ]
FROM u t i l i s a t e u ( s ) ; | FROM PUBLIC ;

| ON Nom de Vue

Les privil`eges sont : ALL, SELECT, INSERT, DELETE, UPDATE,


INDEX, ALTER REFERENCE, CREATE

45/102

S
ecurit
e

Linstruction GRANT

Celui qui cree une table, une vue ou un index poss`ede tous les
privil`eges sur cet objet
Linstruction GRANT lui permet dautoriser dautres personnes `a
lutiliser.

46/102

S
ecurit
e

Linstruction GRANT
Exemple 1 : Permettre `a lutilisateur Etudiant1 de lire et
mettre `a jour la table ELEVES
GRANT SELECT , UPDATE ON ELEVES TO E t u d i a n t 1

Lutilisateur CMOI a cree la table ELEVES. La lecture de celle-ci


se fait par
SELECT FROM ELEVES ;

Lutilisateur Etudiant1 doit la lire avec :


SELECT FROM CMOI . ELEVES ;

47/102

S
ecurit
e

Linstruction GRANT
Exemple 2 : Permettre aux utilisateurs Etudiant1 et
Etudiant2 de lire et mettre `a jour la table ELEVES.
GRANT SELECT , UPDATE ON ELEVES TO E t u d i a n t 1 , E t u d i a n t 2 ;

UPDATE est generalement la seule commande (parfois aussi


SELECT), pour laquelle on peut specifier une liste des attributs, et
donc empecher toute modification sur les autres.
Exemple 3 : Permettre aux utilisateurs Etudiant1 et
Etudiant2 de lire et mettre `a jour lattribut poids de la table
ELEVES.
GRANT SELECT , UPDATE ON ELEVES ( p o i d s ) TO E t u d i a n t 1 , E t u d i a n t 2 ;

48/102

S
ecurit
e

Linstruction GRANT

Exemple 4 : Permettre `a tous les utilisateurs de lire la table


ACTIVITES.
GRANT SELECT ON ACTIVITES TO PUBLIC ;

Exemple 5 : Permettre `a un utilisateur privilegie SuperMan de tout


faire sur la table RESULTATS
GRANT ALL ON RESULTATS TO SuperMan ;

49/102

S
ecurit
e

Linstruction GRANT
Exemple 6 : Permettre `a un utilisateur privilegie SuperMan de
creer des index sur la table PROFESSEUR
GRANT INDEX ON PROFESSEURS TO SuperMan ;

Exemple 7 : Permettre `a un utilisateur privilegie SuperMan de


modifier la structure de la table PROFESSEURS
GRANT ALTER ON PROFESSEURS TO SuperMan ;

Remarque : Les 2 privil`eges INDEX et ALTER ne sont pas autorises


pour une vue.

50/102

S
ecurit
e

Option WITH GRANT OPTION


Jusqu`a present, ceux qui recevaient un privil`ege ne pouvaient le
ceder `a dautres. Cette faculte existe avec loption WITH GRANT
OPTION.
Exemple 8 : Donner `a lutilisateur Etudiant1 de lire et mettre `a
jour la table ELEVES, en lui permettant de redistribuer ce privil`ege
`a dautres.
GRANT SELECT , UPDATE ON ELEVES TO E t u d i a n t 1 WITH GRANT OPTION ;

Un utilisateur ne peut distribuer de privil`eges que sur les objets


quil detient ou sur les objet pour lesquels il a recu des privil`eges
avec loption WITH GRANT OPTION

51/102

S
ecurit
e

Option WITH GRANT OPTION


GRANT SELECT
ON T CHAMBRE
TO DUBOIS

Autorise DUBOIS `a lancer des ordres SQL SELECT sur la table


T CHAMBRE. Notez labsence du mot TABLE
GRANT SELECT
ON TABLE T CMAMBRE
TO DUFOUR
WITH GRANT OPTION

Autorise DUFOUR `a lancer des ordres SQL SELECT sur la table


T CHAMBRE mais aussi `a transmettre `a tout autre utilisateur les
droits quil a acquis dans cet ordre

52/102

S
ecurit
e

Option WITH GRANT OPTION (1)

GRANT SELECT , UPDATE


ON TABLE T CHAMBRE
TO PUBLIC

Autorise tous les utilisateurs presents et `a venir `a lancer des ordres


SQL SELECT et UPDATE sur la table T CHAMBRE

53/102

S
ecurit
e

Option WITH GRANT OPTION (2)


DURAND lance lordre suivant :
GRANT ALL PRIVILEGES
ON TABLE T CHAMBRE
TO DUBOIS

Ce qui autorise DUBOIS `a lancer sur la table T CHAMBRE, les memes


ordres SQL, que ceux autorises `a DURAND (SELECT, INSERT,
DELETE).
On parle alors dheritage de droits cest-`a-dire que lutilisateur
dotes de ces droits peut `a nouveau les ceder `a un ou plusieurs
autres utilisateurs

54/102

S
ecurit
e

Linstruction REVOKE
Lutilisateur peut toujours reprendre un privil`ege quil a donne `a
quelquun.
Exemple 9 : Reprendre le privil`ege INDEX accorde `a lutilisateur
SuperMan sur la table PROFESSEURS
REVOKE INDEX ON PROFESSEURS FROM SuperMan ;

Exemple 10 : Reprendre le privil`ege UPDATE accorde `a


lutilisateur Etudiant1 sur la table ELEVES
REVOKE UPDATE ON PROFESSEURS FROM E t u d i a n t 1 ;

55/102

S
ecurit
e

Linstruction REVOKE

Exemple 11 : Donner tous les privil`eges, sauf ALTER, sur la table


ACTIVITES, `a tous les utilisateurs
GRANT ALL ON ELEVES TO PUBLIC ;
REVOKE ALTER ON ELEVES FROM PUBLIC ;

56/102

S
ecurit
e

Linstruction REVOKE

Exemple 12 : Ne permettre lacc`es `a la table RESULTATS qu`a


SuperMan
REVOKE ALL ON RESULTATS FROM PUBLIC ;
GRANT ALL ON RESULTATS TO SuperMan ;

57/102

S
ecurit
e

Linstruction REVOKE
Remarque

SQL respecte les r`egles suivantes :


Cumul des privil`eges : Si un utilisateur recoit de plus dune
personne le privil`ege dacceder `a une table, il pourra continuer
dy acceder jusqu`a ce que son privil`ege lui soit retire par tous
ceux qui le lui ont donne (les privil`eges identiques sont donc
cumules).
Propagation de la suppression des privil`eges : Enlever un
privil`ege `a un utilisateur revient `a lenlever `a toutes les
personnes qui lont recu de ce dernier.

58/102

S
ecurit
e

Linstruction REVOKE
REVOKE SELECT
ON T CHAMBRE
FROM DUBOIS

Supprime le privil`ege de selection de la table T CHAMBRE attribue `a


DUBOIS
REVOKE INSERT , DELETE
ON TABLE T CHAMBRE
FROM DUVAL, DUBOIS

Supprime les privil`eges dinsertion et de suppression de la table


T CHAMBRE attribue `a DUVAL et DUBOIS precedemment, mais pas
celui de mise `a jour (UPDATE)

59/102

S
ecurit
e

Linstruction REVOKE

REVOKE GRANT OPTION FOR SELECT


ON TABLE T CMAMBRE
FROM DUFOUR

Supprime la possibilite pour DUFOUR de transmettre le privil`ege de


selection sur la table T CHAMBRE

60/102

S
ecurit
e

Privil`eges et vues
En combinant la notion de vue et une gestion adequate des
privil`eges, on atteint une securite presque totale des donnees.
Exemple 13 : Permettre `a une categorie dutilsateurs (ou `a tous les
utilisateurs) dacceder en lecture `
a lensemble de la table PROFESSEURS sauf
aux attributs DATE ENTREE, DER PROM, SALAIRE BASE, SALAIRE ACTUEL
CREATE OR REPLACE VIEW PROFS ( NumeroPrf , NomPrf , S p e c i a l i t e P r f )
AS
(SELECT NUM PROF, NOM, SPECIALITE FROM PROFESSEURS ) ;
GRANT SELECT ON PROFS TO PUBLIC ;

On prendra soin de ne pas donner aux utilisateurs le privil`ege dacceder


directement `
a la table PROFESSEURS. Par contre, le createur dune vue doit
toujours disposer du privil`ege SELECT sur toutes les tables qui entrent dans la
definition de la vue.

61/102

S
ecurit
e

Privil`eges et vues
Exemple 14 : Le contr
ole des informations critiques peut aussi se
faire par lintegration du nom de lutilisateur createur de lobjet
dans la condition de selection.
CREATE OR REPLACE VIEW MesCours AS
(SELECT NOM, ANNEE FROM COURS WHERE NUM COURS
IN ( SELECT NUM PROF FROM CHARGE WHERE NUM PROF
IN ( SELECT NUM PROF FROM PROFESSEURS WHERE NOM = USER ) ;
GRANT ALL ON MesCours TO PUBLIC ;

NB : USER est un mot reserve.


Le contenu de la vue MesCours est lensemble des cours de
lutilisateur.

62/102

Transaction

Gestion des transactions


Une transaction est une unite logique de travail, un ensemble
dinstructions de mise `a jour des donnees que SQL traite comme
une seule entite :
soit toutes les instructions sont executees ensemble,
soit aucune ne lest.
Exemple :
si une somme dargent doit transiter dun compte `a un autre, les
deux operations (credit et debit) de mise `a jour doivent
absolument seffectuer toutes les deux (ou ne pas seffectuer du
tout) pour que la coherence des donnees soit respectee.

63/102

Transaction

Gestion des transactions

Le mecanisme des transactions est necessaire parce que divers


evenements peuvent interrompre lexecution dune sequence
dinstructions :
defaillance du syst`eme,
panne de courant, micro-coupure,
le desir de revenir en arri`ere et abandonner les modifications
faites jusqualors.

64/102

Transaction

Gestion des transactions

Dans Oracle, le debut dune transaction est implicitement


defini par le debut de la session, ou par la derni`ere instruction
COMMIT ou ROLLBACK.
Les instructions du DDL et du DCL executent
automatiquement des COMMIT.
Les modifications (INSERT, DELETE, UPDATE) dune table ne
sont rendues permanentes que si lon quitte la session ou si
lon execute la commande COMMIT.

65/102

Transaction

Gestion des transactions

Tant que les changements `a la base nont pas eu lieu de facon


permanente :
lutilisateur peut voir ces changements par des ordres SELECT,
les autres utilisateurs ne voient pas les modifications,
lutilisateur peut defaire les modifications par linstruction
ROLLBACK.
Un ROLLBACK automatique a lieu en cas de panne du syst`eme

66/102

Transaction

Gestion des transactions


Exemples :
CREATE TABLE T ( A NUMBER,
B NUMBER, PRIMARY KEY (A));
INSERT INTO T VALUES ( 1, 1);
INSERT INTO T VALUES ( 2, 2);
SELECT * FROM T ;
Le r
esultat obtenu est :
A
B
-------- --------1
1
2
2
COMMIT ;
Validation effectu
ee.

67/102

Transaction

Gestion des transactions


INSERT INTO T VALUES ( 3, 3);
INSERT INTO T VALUES ( 4, 4);
SELECT * FROM T ;
Le r
esultat obtenu est :
A
B
--------- --------1
1
2
2
3
3
4
4
ROLLBACK ;
Annulation (ROLLBACK) effectu
ee.
SELECT * FROM T ;
Le r
esultat obtenu est :
A
B
--------- --------1
1
2
2

68/102

Transaction

Gestion des transactions

INSERT INTO T VALUES ( 3, 3);


SAVEPOINT A ;
1 ligne cr
e
ee.
Point de sauvegarde (SAVEPOINT) cr
e
e.
INSERT INTO T VALUES ( 4, 4);
1 ligne cr
e
ee.
SELECT * FROM T ;
Le r
esultat obtenu est :
A
B
--------- --------1
1
2
2
3
3
4
4

69/102

Transaction

Gestion des transactions

ROLLBACK TO SAVEPOINT A;
Annulation (ROLLBACK) effectu
ee.
SELECT * FROM T ;
Le r
esultat obtenu est :
A
B
--------- --------1
1
2
2
3
3

70/102

Transaction

Blocage des tuples et des tables


Transaction T1
SELECT * FROM T ;
Le r
esultat obtenu est :
A
B
--------- --------1
1
2
2
3
3
Transaction T2
SELECT * FROM T ;
Le r
esultat obtenu est :
A
B
--------- --------1
1
2
2
3
3

71/102

Transaction

Blocage des tuples et des tables


Transaction T1
update t set b = b - 2 ;
1 ligne mise `
a jour.
select * from t;
A
B
--------- --------1
1
2
2
3
1
Transaction T2
select * from t ;
A
B
--------- --------1
1
2
2
3
3
update t set b = b - 2 ;
-- blocage tant que T1 na pas fait de COMMIT

72/102

Transaction

Blocage des tuples et des tables


Transaction T1
COMMIT;
Validation effectu
ee.
Transaction T2
1 ligne mise `
a jour.
select * from t;
A
B
--------- --------1
1
2
2
3
-1
COMMIT;
Validation effectu
ee.

73/102

Transaction

Blocage des tuples et des tables


Transaction T1
select * from t;
A
B
--------- --------1
1
2
2
3
-1
Transaction T2
select * from t;
A
B
--------- --------1
1
2
2
3
-1

74/102

Transaction

Blocage des tuples et des tables


Transaction T1
lock table t IN EXCLUSIVE MODE;
Table(s) verrouill
ee(s).
Mises `
a jour
Mises `
a jour
Commit ;
Transaction T2
En attente
En attente
lock table t IN EXCLUSIVE MODE;
etc...

75/102

Transaction

Blocage des tuples et des tables

Le blocage de tuples et de tables se fait par la commande SQL :


LOCK TABLE LeNomDeLObjet IN LeMode MODE ;

LeNomDeLObjet : Le nom dune table ou dune vue.


Le mode partage ou exclusif ... (SHARE, SHARE UPDATE,
EXCLUSIVE)

76/102

Transaction

Divers : Les Synonymes, les roles, le mot de passe :

CREATE SYNONYM

p r f FOR p r o f e s s e u r s ;

CREATE ROLE r i r i ;
GRANT ALL ON e l e v e s TO r i r i ;
GRANT r i r i TO e c o l e ;
ALTER USER a n c i e n p w d IDENTIFIED BY newpwd ;

77/102

Sauvegarde

Backup et restauration

Bien definir une strategie de sauvegarde et restauration


Les questions `a se poser
est-t-il acceptable de perdre des donnees en cas de panne des
fichiers de donnees ?
est-t-il utile de recouvrer des donnees perdues ?
la base de donnees ne doit-t-elle jamais sarreter ?

Bien tirer partie des mecanismes dOracle pour se premunir


des pertes de donnees
technique de mise en miroir de fichier redo log et de controle

78/102

Sauvegarde

Backup et restauration

Tester votre strategie de sauvegarde et restauration


Adapter le rythme des sauvegardes par rapport au besoins
Conserver les sauvegardes tant que utile
Bien choisir son mode darchivage (ARCHIVELOG,
NOARCHIVELOG) car de ce choix dependra les possibilites de
restauration

79/102

Sauvegarde

Sauvegarde en NoArchivLog
Modes de sauvegarde :
Backup complet `a la creation de la base et `a chaque
modification importante de sa structure (ajout dun fichier,
dun tablespace, ...)
Ce backup doit se faire en mode normal apr`es un SHUTDOWN
NORMAL ou IMMEDIATE
les fichiers `a sauvegarder sont :
les fichiers de donnees de tous les tablespaces
les fichiers REDO LOG
les fichiers de contr
ole

NB : Il faut aussi definir une periodicite des sauvegardes


adaptees aux besoins

80/102

Sauvegarde

Sauvegarde en NoArchivLog
Etapes de sauvegarde en mode Noarchivlog :
1

Liste des noms des fichiers `a sauvegarder :


Fichiers de donnees
SELECT FROM d b a d a t a f i l e s ;

Fichiers de contr
oles
SELECT FROM v $ p a r a m e t e r
WHERE name LIKE c o n t r o l f i l e s ;

Fichiers Redolog
SELECT FROM v $ l o g f i l e ;

81/102

Sauvegarde

Sauvegarde en NoArchivLog

Arreter la base normalement


(shutdown normal ou immediate) et utiliser les commandes de
lOS (tar, cp, rcp, dump, opy, arj, ...) pour effectuer les
sauvegardes

Redemarrer la base apr`es un CONNECT sys as sysdba


SQL >startup

Effectuer en fonction de la quantite des donnees quon


accepte de perdre des exports reguliers et dimensionner si utile
les fichiers Redo log en fonction

82/102

Sauvegarde

Sauvegarde en ArchivLog

Modes de sauvegarde :
Backup complet `a la creation ou `a intervalles reguliers
(suivre les memes etapes quen mode noarchivelog)
Backup partiel de la base
Archivage automatique ou manuelle de fichiers REDO LOG
Backup du fichier de contr
ole en cas de modification de la
structure de la base (ajout dun tablespace ...)

83/102

Sauvegarde

Sauvegarde en ArchivLog
Backup partiel :
1

Backup dun Tablespace OFFLINE en 4 etapes


Etape 1 : Identifier les fichiers appartenant au tablespace X
SELECT f i l e n a m e FROM s y s . d b a d a t a f i l e s
WHERE t a b l e s p a c e n a m e = X ;

Etape 2 : Mettre le Tablespace X OFFLINE NORMAL


ALTER TABLESPACE X OFFLINE NORMAL ;

Etape 3 : Utiliser les commandes de lOS (cp, tar, dump, ...)


pour sauvegarder effectivement les fichiers sur bande ou disque
Etape 4 : Reactiver le Tablespace X
ALTER TABLESPACE X ONLINE ;

84/102

Sauvegarde

Sauvegarde en ArchivLog
Backup partiel :
2

Backup dun Tablespace (TS) ONLINE en 4 etapes


Etape 1 : Identifier les fichiers appartenant au tablespace X
SELECT f i l e n a m e FROM s y s . d b a d a t a f i l e s
WHERE t a b l e s p a c e n a m e = X ;

Etape 2 : Indiquer `a Oracle le debut de la sauvegarde de X


ALTER TABLESPACE X BEGIN BACKUP ;

Etape 3 : Utiliser les commandes de lOS (cp, tar, dump, ...)


pour sauvegarder effectivement les fichiers sur bande ou disque
Etape 4 : Informer Oracle de la fin de la sauvegarde du
tablespace X
ALTER TABLESPACE X END BACKUP ;

NB : La sauvegarde de plusieurs TS peut se faire


sequentiellement ou en parall`ele

85/102

Sauvegarde

Sauvegarde en ArchivLog
Backup partiel :
1

Sauvegarde du fichier de contr


ole, base fermee
Utiliser les commandes de lOS pour sauvegarder

Sauvegarde du fichier de contr


ole Base Ouverte. Deux
possibilites :
Generation du texte de la commande de creation du fichier de
contr
ole
ALTER DATABASE BACKUP CONTROLFILE TO TRACE ;

Generation dune copy du fichier de contr


ole
ALTER DATABASE
BACKUP CONTROLFILE n o m f i c [ REUSE ] ;

86/102

Sauvegarde

Restauration dune base


Pourquoi restaurer ?
Au moment dune panne, les blocs de donnees modifies par
une transaction peuvent ne pas avoir ete ecrits dans les fichiers
REDO LOG
Le fichier REDO LOG peut contenir des donnees non validees
Les fichiers Redo log, les fichiers darchives, les fichiers de
contr
oles ou les fichiers de donnees peuvent etre corrompus ou
perdus

Deux types de recouvrement


Recouvrement dinstance (arret brutal dun ou plusieurs
process Oracle tel DBWR, LGWR, ...)
Recouvrement apr`es une panne disque

87/102

Sauvegarde

Restauration dune base


Restauration dinstance
Survient `a la suite de larret brutal des processus en taches de
fond (DBWR, LGWR, SMON, PMON, ...)
Est valable aussi bien en mode avec ou sans archive
Oracle realise automatiquement les etapes suivantes :
application de limage apr`es
application de limage avant

88/102

Sauvegarde

Restauration dune base

Restauration apr`es une panne disque : en mode NOARCHIVELOG


Si perte dun fichier de donnees : repartir dun Backup `a froid
Si perte dun fichier Redo Log : recuperer le fichier en miroir
sinon restaurer la base enti`ere
Si perte dun fichier de contr
ole : recuperer le fichier en miroir
ou recreer le fichier de contr
ole sinon restaurer la base enti`ere

89/102

Sauvegarde

Restauration dune base


Restauration apr`es une panne disque : en mode ARCHIVELOG
La commande RECOVER :
Cette commande est loutil de recouvrement en mode
ARCHIVELOG
Cest aussi une clause de la commande ALTER DATABASE
(forme dutilisation deconseillee par Oracle)
Privil`ege requis : ALTER DATABASE
Syntaxe :
[ ALTER DATABASE ]
RECOVER [ AUTOMATIC ] [ FROM l o c a t i o n ]
{ [ DATABASE ] [ UNTIL CANCEL
| UNTIL TIME d a t e
| UNTIL CHANGE i n t e g e r
| UNTIL BACKUP CONTROLFILE ]
| TABLESPACE t a b l e s p a c e [ , t a b l e s p a c e ] . . .
| DATAFILE f i l e n a m e [ , f i l e n a m e ] . . .
| LOGFILE f i l e n a m e
| CONTINUE [ DEFAULT ]
| CANCEL }

90/102

Sauvegarde

Restauration dune base


Restauration apr`es une panne disque : en mode ARCHIVELOG (suite)
La commande RECOVER (suite)

Mots cles ou param`etres et description :


AUTOMATIC : gestion automatique des noms des fichiers Redo
`a appliquer
FROM location : indication de la localisation des archives
DATABASE : recouvrer la base enti`ere (par defaut)
UNTIL CANCEL : recouvrer jusquau fichier Redo log le plus
recent possible
UNTIL TIMES date : recouvrer jusqu`a la date de la panne
UNTIL CHANGE integer : recouvrer jusquaux transactions
consistantes avant le SCN (integer)

91/102

Sauvegarde

Restauration dune base


UNTIL BACKUP CONTROLFILE : Utiliser la sauvegarde du
fichier de controle `a la place du fichier courant
TABLESPACE tablespace : recouvrer uniquement un
tablespace
DATAFILE filename : recouvrer un fichier de donnees
LOGFILE filename : continuer le recouvrement avec ce
fichier
CONTINUE [DEFAULT] : continuer en appliquant les redo
automatiquement
CANCEL : finir la restauration basee sur lannulation

92/102

Sauvegarde

Restauration dune base


Restauration apr`es une panne disque : En mode ARCHIVELOG (suite)

Recouvrement complet base fermee


Cas o`
u cela est utile:
perte dun ou plusieurs fichiers de donnees du Tablespace
System
perte dun fichier de contr
ole (pas de copie)
perte dun fichier de donnees contenant un segment RBS
un fichier pour les RBS a ete endommage
la base ne peut etre ouverte en mode NORMAL

NB :
pas de perte des Redo Log courants
pas de perte des fichiers darchives

93/102

Sauvegarde

Restauration dune base


Restauration apr`es une panne disque : En mode ARCHIVELOG (suite)
Recouvrement complet base fermee (suite)

Etapes `a suivre
1

arreter la base

remedier `a la panne

reprendre la derni`ere sauvegarde et les fichiers darchives

redemarrer la base en mode MOUNT


connect s y s as sysdba ;
s t a r t u p MOUNT ;

94/102

Sauvegarde

Restauration dune base

Renommer ou relocaliser les fichiers si necessaire


ALTER DATABASE RENAME FILE . . . TO . . .

Commencer le recouvrement
RECOVER AUTOMATIC
DATABASE . . . ;

Ouvrir normalement la base


ALTER DATABASE OPEN ;

95/102

Sauvegarde

Restauration dune base


Restauration apr`es une panne disque : en mode ARCHIVELOG (suite)

Dans quels etats doivent etre les fichiers REDO LOG et


dARCHIVES ?
Recouvrement complet base ouverte, tablespace OFFLINE
Cas o`
u cela est utile :
les fichiers dun ou plusieurs tablespaces sont endommages
les fichiers du tablespace SYSTEM ne sont pas endommages
les fichiers contenant les RBS ne sont pas endommages

96/102

Sauvegarde

Restauration dune base


Restauration apr`es une panne disque : en mode ARCHIVELOG (suite)
Recouvrement complet base ouverte, tablespace OFFLINE (suite)

Etapes `a suivre
1

Si la base nest pas dej`a ouverte, demarrer une nouvelle


instance (base montee puis ouverte), mettre le tablespace
ayant des fichiers endommages OFFLINE.
connect s y s as sysdba
( ou s q l >STARTUP MOUNT p u i s OPEN ; )
ALTER TABLESPACE n o m t a b l e s p a c e OFFLINE ;

Remedier `a la panne

Remplacer les fichiers endommages par leur sauvegarde

97/102

Sauvegarde

Restauration dune base

Recouvrer les fichiers endommages


RECOVER TABLESPACE
nomtablespace1 ,

. . . , nomtablespaceN ;

RECOVER DATAFILE n o m f i c h i e r 1 ,
5

... ,

nomfichierN ;

Remettre le ou les tablespaces ONLINE


ALTER DATABASE n o m t a b l e s p a c e 1 ,

. . . ONLINE ;

98/102

Sauvegarde

Restauration dune base


Restauration apr`es une panne disque : en mode ARCHIVELOG (suite)

Recouvrement incomplet
Recouvrement incomplet necessaire :
en cas de perte des fichiers Redolog
en cas de suppression accidentelle dune table
...

Le recouvrement incomplet peut etre base sur :


lannulation (UNTIL CANCEL)
En cas de perte dun ou plusieurs groupes de Redo Log, le
recouvrement sarrete sur le fichier Redo Log le plus recent
le temps (UNTIL TIME date) : connaissant la date
approximative `a laquelle est survenue une panne, on souhaite
recuperer lactivite sur la base davant cette date
le SCN (UNTIL CHANGE scn) : connaissant un Systeme
Change Number donne, on souhaite recuperer toutes les
transactions consistantes davant ce SCN

99/102

Sauvegarde

Restauration dune base


Restauration apr`es une panne disque : en mode ARCHIVELOG (suite)
Recouvrement incomplet (suite)

Etapes du recouvrement base sur lannulation, le temps et le SCN


1

Fermer si utile la base avec loption ABORT


connect s y s as sysdba ;
shutdown a b o r t ;

Sauvegarder tous les fichiers de la base (donnees, controles,


param`etres, ...)

Remedier `a la panne disque si necessaire

Si le fichier de contr
ole ne correspond pas, chercher une
bonne version sauvee ou recreer le fichier de controle

100/102

Sauvegarde

Restauration dune base

Recuperer la sauvegarde des fichiers de la base mis en cause


Si aucune sauvegarde nexiste, recreer des fichiers de meme
taille vide

Sous SQL, demarrer une instance (base montee)

101/102

Sauvegarde

Restauration dune base

Restauration apr`es une panne disque : En mode ARCHIVELOG (suite)


Recouvrement incomplet (suite)

Etapes du recouvrement base sur lannulation, le temps et le SCN


(suite)
7

Relocaliser ou renommer si utile les fichiers endommages

Mettre les fichiers `a reparer ONLINE si recouvrement base sur


le temps ou le SCN

102/102

Sauvegarde

Restauration dune base


9

Utiliser les commandes suivantes pour effectuer le


recouvrement :
RECOVER d a t a b a s e UNTIL CANCEL ;

ou
RECOVER d a t a b a s e
UNTIL TIME YYYYMMHH24 : MI : SS ;

ou
RECOVER d a t a b a s e
UNTIL CHANGE s c n ;

NB : si lon utilise la sauvegarde du fichier de controle, preciser


loption USING BACKUP ...

Vous aimerez peut-être aussi