You are on page 1of 6

LP Informatique(DA2I), UF7 : Administration Systme, Rseaux et Base de donnes

13/12/2007, Enseignant : M. Nakechbnadi, mail : nakech@free.fr


Premire parie : Administration dune BD

Chapitre 2 : Transaction, Gestion daccs au donnes sous ORACLE

2.1/ Les privilges sous oracle


Il en existe deux types, les privilges systeme et les privilges objet.

2.1.1/ Les privilges systme

Il existe a peu prs 127 privilges systme qui sont classs par catgories. Nous allons
en prsenter quelquuns pour bien situer les privilges systme.

 Les privilges sur les oprations systme : Ces privilges la permettent de


raliser des opration sur la base de donnes

--> create tablespace (permet de crer un tablespace)


--> create database (permet de crer une base de donnes)
--> alter system (permet de modifier les paramtres de la base de donnes)

 Les privilges agissant sur la gestion des objets sur les schma utilisateur
Ces privilges permettent de modifier et d'agir sur les objets du schma des
utilisateur:

--> create table (permet de crer une table)


--> create user (permet de crer un utilisateur)
--> alter profile (permet de modifier un profil)

2.1.2/ Les privilges objets

Les privilges sur les objets donnent le droit de raliser une opration particulire sur
une table, une vue, une squence ou mme des fonctions. Par exemple y accder, la
mettre a jour ou mme y insrer des information.

Voici quelques exemples de privilges objets :

--> select (permet d'accder un objet)


--> update (permet de mettre jour un objet)
--> insert (permet d'insrer des information dans une table)
--> references (permet de rfrencer une table lors d'un create table ou d'un alter table)
2.2/ Gestion des privilges

Sous oracle on utilise la commande grant pour attribuer les deux type de privilges.

2.2.1/ Les privilges systme :


Les privilges systme seront tudis en dtail plus tard. Deux privilges sont important
A connatre :

 GRANT connect to utilisateur

 GRANT resource to utilisateur

2.2.2/ Les privilges objet :


Pour attribuer un privilge objet, il faut utiliser la commande GRANT, voici la syntaxe a
respecter :

GRANT [DBA/PRIVILEGE] ON [OBJET] TO [ROLE/UTILISATEUR/PUBLIC] WITH GRANT


OPTION

 DBA : tous les privilges


 PRIVILEGE : le privilge attribuer
 OBJET : l'objet sur lequel le privilge va tre attribuer
 ROLE : le rle auquel le privilge va tre attribuer
 UTILISATEUR : l'utilisateur auquel le privilge va tre attribuer
 PUBLIC : le privilge est attribu a tous le monde
 WITH GRANT OPTION : le destinataire du privilge pourra son tour attribuer ce privilge.

Exemple d'attribution de privilge:


grant select, insert, update, delete on t_abonnements to user_1

Cette attribution de privilge de type privilge objet permet de donner le droit d'accder,
insrer des informations, mettre jour et supprimer des informations dans la table
t_abonnements l'utilisateur user_1.

2.3/ Droits daccs


Plusieurs utilisateurs peuvent accder mme table dune base (en tant que client ou par
accs direct).

Les donnes peuvent tre confidentielles ou partages entre plusieurs utilisateurs


Contrle de l'accs la base

 Le contrle de l'accs la base est effectu en associant chaque utilisateur


- un nom de login
- un mot de passe

 Chaque utilisateur a des privilges d'accs la base : droit ou non


 de crer des tables ou des vues,
 de lire ou de modifier des tables ou des vues.

Propritaire des donnes

 Une table ou un objet (et les donnes quelle contient) appartient celui qui la cr

 Le propritaire d'une table peut donner d'autres le droit de travailler avec sa table

 Les vues permettent daffiner les droits que lon donne sur ses propres donnes :
On peut donner des droits sur des vues et pas sur les tables sous-jacentes.

Intrt des vues? Donner des droits une partie dune table

Exemple :
 On considre la table note (nom, matiere, note)

 CREATE VIEW note_bd (nom, matiere, note)


AS select * from note where matire = BD

 Grant update on note_bd(note) to Michel ;


Michel est le lenseignant responsable du cours BD
Accorder des droits (sous oracle)

 GRANT privilge ON table/vue TO utilisateur [WITH GRANT OPTION]

 Des privilges :
SELECT
INSERT
UPDATE [(col1, col2,)]
DELETE
INDEX
ALTER
ALL

Loption WITH GRANT OPTION permet l'utilisateur qui reoit le privilge de le donner
d'autres utilisateurs.
Accorder des droits (exemples)

 grant select on emp to clement;


 grant select, update on emp to clement, chatel;
 grant select on emp to public;

Changer son mot de passe : alter user clement identified by motDePasse;

Reprendre les droits : REVOKE privilge ON table/vue FROM utilisateur

2.4/ Les transactions


Dfinition : Une transaction est un ensemble doprations daccs et de mise jour de
donnes. Ces oprations doivent tre traites comme un tout et le SGBD doit assurer dune
part lindivisibilit des oprations soumises, la cohrence du systme aprs lexcution de
lensemble des oprations.

Dbut d'une transaction

 Dans la norme SQL2 toute modification appartient une transaction


 Une transaction dmarre au dbut de la session
 Une transaction dmarre automatiquement aprs la fin dune transaction (pas de
commande pour dmarrer une transaction en SQL2)
 La structure des transactions est plate : les transactions ne peuvent se chevaucher

Terminer une transaction

 Pour terminer une transaction on peut


- valider la transaction (COMMIT) : toutes les modifications deviennent effectives
- annuler la transaction (ROLLBACK) : toutes les modifications sont annules

 Les ordres DDL (create table par exemple) provoquent un COMMIT automatique

Proprits des transactions

 Atomicit : un tout indivisible


 Cohrence : une transaction doit laisser la base dans un tat cohrent ; elle ne doit pas
mettre les donnes dans un tat anormal
 Isolation : les donnes non valides dune transaction ne doivent pas tre vues par les
autres transactions

 Durabilit : le SGBD doit garantir que les modifications d'une transaction valide seront
conserves, mme en cas de panne

Exemple dannulation dune transaction

insert into dept values (10, 'Finance', 'Paris');


delete from emp;
rollback;

Transaction non termine

 La dernire transaction est automatiquement valide la sortie de SQL*PLUS si elle ne


se termine pas par un ROLLBACK

 Ce comportement dpend du logiciel utilis ; avec dautres logiciels une transaction non
valide explicitement est annule

Isolation des transactions

En fonctionnement standard les modifications effectues par une transaction ne sont


connues des autres transactions quaprs sa validation

Transactions longues Exemple :

Organisation par une agence de voyage dun voyage Nice Wuhan (Chine)
Ncessite la rservation de plusieurs billets davion : Nice Paris ; Paris Beijing ; Beijing
Wuhan.

On commence par rserver les 2 premiers mais si on ne peut trouver de Beijing Wuhan, il
faut tout annuler.

On met donc toutes ces rservations dans une transaction ; a peut tre long si lagence
discute avec le client pendant la transaction SQL

Problmes avec les transactions longues

 Manque de souplesse : si on ne trouve pas de voyage Beijing Wuhan, on annule tout

 On aurait pu garder le Nice Paris et essayer de passer par Shanghai pour aller
Wuhan, en annulant seulement le Paris Beijing

Points de reprise

 On peut dsigner des points de reprise dans une transaction : savepoint nomPoint
 On peut ensuite annuler toutes les modifications effectues depuis un point de reprise
sil y a eu des problmes : rollback to nomPoint

 a vite dannuler toute la transaction et permet dessayer de pallier le problme

Exemple

insert into .;
savepoint p1;
delete from ;
update ;
savepoint p2;
insert into ;
rollback to p2;
commit;

Annexe complment SQL

Squence

Crer une squence


 CREATE SEQUENCE nom_squence [INCREMENT BY entier1][START WITH entier2]
 create sequence seqdept increment by 10 start with 10

Utilisation des squences


 Deux pseudo-colonnes permettent d'utiliser les squences :
CURVAL retourne la valeur courante
NEXTVAL incrmente la squence et retourne la nouvelle valeur
 insert into dept(dept, nomd) values (seqdept.nextval, 'Finances');

Modification des squences


ALTER SEQUENCE nom_squence INCREMENT BY entier1
alter sequence seqdept increment by 5

Pour Visualiser la valeur dune squence


Select seqdept.curval from dual

You might also like