Bases de Données TP Transactions et Gestion des Droits Utilisateurs



Documents pareils
Bases de données et sites WEB

TP Contraintes - Triggers

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

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

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

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

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

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

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

Le Langage SQL version Oracle

Les bases de données

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

SQL Historique

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

OpenPaaS Le réseau social d'entreprise

Le langage SQL (première partie) c Olivier Caron

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.

A QUOI SERVENT LES BASES DE DONNÉES?

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

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

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

Olivier Mondet

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

TP3 : Creation de tables 1 seance

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

Cours: Administration d'une Base de Données

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

Compétences Business Objects

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

TP Programmation Java / JDBC / Oracle

Bases de données relationnelles

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

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

Gestion des utilisateurs et de leurs droits

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

BTS/CGO P10 SYSTEME INFORMATION Année

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

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

I4 : Bases de Données

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

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

L objet de cet article est de présenter succinctement ces possibilités.

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

CREATION WEB DYNAMIQUE

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

TP Administration Oracle

Le Langage De Description De Données(LDD)

Bases de Données Avancées

Historisation des données

I/ Présentation. On considère une BD CIRQUE dont le schema conceptuel : PERSONNEL _CIRQUE (NOM, ROLE) ;

Devoir Data WareHouse

A QUOI SERVENT LES BASES DE DONNÉES?

Création et Gestion des tables

Bases de données avancées

Configurer la supervision pour une base MS SQL Server Viadéis Services

1. Base de données SQLite

Pratique et administration des systèmes

Java DataBaseConnectivity

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

I. MySQL : Serveur et SGBD

Master Exploration Informatique des données DataWareHouse

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

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

Les déclencheurs. Version 1.0. Grégory CASANOVA

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Introduction à JDBC. Accès aux bases de données en Java

Auto-évaluation Oracle: cours de base

Implémentation des SGBD

420-PK6-SL Banques de données Avancées. UTILISATEURS (suite)

PHP 4 PARTIE : BASE DE DONNEES

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

Support de cours. Introduction à SQL et MySQL. 2003, Sébastien Namèche

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

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

Mysql. Les requêtes préparées Prepared statements

Gestion des droits d accès. Quelques exemples de vulnérabilité

Mejdi BLAGHGI & Anis ASSÈS

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Raja Bases de données distribuées A Lire - Tutoriel

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

MODE OPERATOIRE CORIM PROGRESS / SECTION MEI. Exploitation Informatique

Bases de Données Réparties

IFT3030 Base de données. Chapitre 1 Introduction

Gestion des utilisateurs, des groupes et des rôles dans SQL Server 2008

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

MySQL / SQL EXEMPLES

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Bases de données Cours 4 : Le langage SQL pour ORACLE

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

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

Université de Nice Sophia-Antipolis. Langage SQL. version 5.7 du polycopié. Richard Grin

Langage SQL : créer et interroger une base

PROJET 1 : BASE DE DONNÉES REPARTIES

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

Les BASES de DONNEES dans WampServer

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

Transcription:

Bases de Données TP Transactions et Gestion des Droits Utilisateurs 1. Dictionnaire de données Nous rappelons que le dictionnaire de données est un ensemble de tables dans lesquelles sont stockées les descriptions des objets de la base. Les tables de ce dictionnaire peuvent être consultées au moyen du langage SQL. Des vues de ces tables permettent à l utilisateur de voir les objets qui lui appartiennent (tables préfixées par USER) ou sur lesquels il a des droits (tables préfixées par ALL). L administrateur a pour sa part accès à toutes les vues (les tables précédentes ainsi que les tables préfixées par DBA). Quelques vues et tables du dictionnaire de données : USER TABLES: tables et vues créées par l utilisateur ; USER CATALOG (ou CAT) : tables et vues sur lesquelles l utilisateur a des droits à l exception des tables et vues du dictionnaire de données ; USER TAB COLUMNS (ou COLS) : colonne de chaque table ou vue créée par l utilisateur courant ; USER CONSTRAINTS : définition des contraintes pour les tables des utilisateurs ; USER CONS COLUMNS : colonnes qui interviennent dans les définitions des contraintes ; USER TAB PRIVS : droits attribués et/ou reçus par l utilisateur USER SYS PRIVS : privilèges donnés à l utilisateur de manière générale ; USER TAB PRIVS MADE : droits attribués par l utilisateur ; USER TAB PRIVS RECD : droits reçus par l utilisateur ; ALL CATALOG : liste de tous les objets accessibles par l utilisateur ; ALL TABLES Description des tables accessibles par l utilisateur. Connectez vous et effectuer les requêtes suivantes : 1. Créer une table TEST( A smallint, B smallint, C varchar2(20)) et la contrainte TESTPK (clé primaire sur a) et insérer une dizaine de n-uplets dans TEST 1

GLIN605-2011-2012 2 2. Donner toutes les informations sur les tables sur lesquelles vous avez des droits 3. Donner le nombre d attributs de la table TEST 4. Donner la liste des contraintes (avec leur statut) créées 5. Donner les informations sur les contraintes de type clé primaire que vous avez créées 2. Privilèges d accès à la base de données Oracle permet à plusieurs utilisateurs de travailler sur la mme base de données en toute sécurité. Deux commandes sont à ce titre particulièrement importantes: GRANT et REVOKE et permettent de définir les droits de chaque utilisateur sur les objets de la base. Tout utilisateur accède à la base à l aide de son nom utilisateur et de son mot de passe. C est le nom utilisateur qui permet de déterminer les droits d accès aux objets de la base de données. En tant qu utilisateurs vous avez été créés par le DBA et vous avez été autorisés à vous connecter à la base Oracle Licnce. Vous avez aussi les privilèges de créer des objets de schéma de base de données utilisateur (tables, vues, contraintes etc). Lorsque dans une session de TP vous avez travaillé sous le nom d un utilisateur, vous n avez donc pas été en concurrence avec d autres utilisateurs. Nous allons vérifier que le SGBD gère la concurrence d accès à des objets de la base entre plusieurs utilisateurs (identiques ou différents). Tout utilisateur qui crée des objets est propriétaire de ces objets (table name, owner de USER tables dans le dictionnaire des données). Le créateur d un objet peut décider de donner (ou de supprimer) certains droits d accès à cet objet à tout autre utilisateur de sa connaissance. 2.1 L ordre GRANT GRANT privilege ON table/vue TO utilisateur [WITH GRANT OPTION] Cet ordre permet de donner le privilège concerné sur la table ou la vue à l utilisateur. Exemple : X a créé la table TEST et veut autoriser Y à lire cette table. Il passe alors l ordre GRANT SELECT ON TEST TO Y; Les privilèges qui peuvent tre donnés sont les suivants: 1. SELECT : droit de lecture ; 2. INSERT : droit d insertion de lignes ; 3. UPDATE : droit de modification de lignes ; 4. DELETE : droit de suppression de lignes ; 5. ALTER : droit de modification de la définition de la table ; 6. INDEX : droit de création d index ;

GLIN605-2011-2012 3 7. ALL : tous les droits ci-dessus. Un utilisateur ayant reçu un privilège avec la mention facultative WITH GRANT OPTION peut les transmettre à son tour à un autre utilisateur. Pour la suite du TP vous allez donc fonctionner par paire (X connecté sur la machine m1 et Y connecté sur la machine m2). X (Y) donne les droits de lecture de sa table TEST à l utilisateur Y (X) X (Y) donne les droits de modification de sa table à l utilisateur Y (X) Vérifier que les privilèges ont été bien accordés Testez vos nouveaux droits (les objets que vous interrogerez et dont vous n êtes pas propriétaire sont désignés par leur nom complet nompropriétaire.nomobjet). 2.2 L ordre REVOKE Un utilisateur ayant accordé un privilège peut le reprendre à tout moment à l aide de l ordre REVOKE. REVOKE privilege ON table/vue FROM utilisateur Enlever les privilèges précédemment accordés Vérifier que les privilèges ont bien été supprimés 3. Gestion des accès concurrents Une transaction (ensemble d ordres SQL) est atomique c est-à-dire qu elle ne peut se terminer que par un succés (elle est alors validée COMMIT) ou un échec (tous ses effets sont alors détruits ROLLBACK). En conséquence, en contexte multi-utilisateurs, les modifications effectuées par une transaction réalisée par un utilisateur ne sont connues des autres utilisateurs que lorsque la transaction a été confirmée par un COMMIT. Oracle gère automatiquement les accés concurrents. Si une transaction est en train de modifier les lignes d une table, les autres transactions peuvent accéder aux données telles qu elles étaient avant ces dernières modifications (pas de temps d attente pour la lecture). Pour rester simple nous dirons que toute transaction pose des verrous sur les objets qu elle manipule et que deux grands types de verrous existent : en lecture (verrou passant plusieurs lectures simultanées peuvent avoir lieu) en écriture (verrou bloquant la première écriture bloque les autres jusqu à ce que le verrou soit relaché) Commandes qui provoquent un blocage implicite sur les tables et les lignes impliquées : DELETE, INSERT, UPDATE, ALTER TABLE,... Le mode pour les transactions peut être

GLIN605-2011-2012 4 READ ONLY pour les transactions n effectuant que des lectures READ WRITE pour les transactions effectuant lectures et écriture (mode par défaut d ORACLE ) pouvant être complétés par l introduction d un niveau d isolation grâce à l instruction SET TRANSACTION ISOLATION LEVEL < niveau >, niveau pouvant être READ UNCOMMITTED, READ COMMITED, REPETEABLE READ et SERIALIZABLE (en Oracle seuls READ COM- MITED, et SERIALIZABLE ) Remarque : en mode READ WRITE le niveau d isolation READ COMMITED peut entraîner lectures non répétables et lecture de fantôme, le niveau d isolation SERIALIZABLE interdit tout phénomène indésirable. 3.1 Transactions au sein d une connexion unique L objectif est de voir l effet du commit et du rollback. Tester et noter les observations dans la session que vous avez ouverte : create table X (n Number (2)) ; insert into X values (1) ; commit ; insert into X values (2) ; rollback ; commit ; Effet des instructions du langage de définition Un ordre du langage de définition des données forme une transaction à lui tout seul. L exécution d un tel ordre effectue un commit puis s exécute et si tout s est bien passé un nouveau commit est effectué, sinon (en cas d erreur) la transaction n est pas terminée. Tester et noter vos observations : insert into X values (55) ; create table Y (n Number (2)) ; insert into X values (56) ; rollback ; 3.2 Transactions concurrentes 1. Nous commencerons par tester la concurrence entre deux sessions ouvertes par un même utilisateur. Pour cela, ouvrez deux sessions sous votre login.

GLIN605-2011-2012 5 Faites des modifications (du type LMD, pas de create ou de drop) dans une des sessions (sur la table EMP) et voyez si les modifications sont connues de l autre session. Faites un COMMIT des modifications et voyez si les modifications sont connues de l autre session. Modifiez le salaire d un même employé dans les deux sessions (avec des valeurs diffèrentes). Que se passe-t-il? Faites un COMMIT sur la session qui a fait les modifications en premier. Que se passe-t-il? Faites un select dans les 2 sessions pour voir la modification. Faites un COMMIT dans la deuxième session. Faites un select dans les 2 sessions pour voir la modification. Utilisez un SELECT FOR UPDATE sur une des sessions et essayez de modifier les lignes bloquées avec l autre session. 2. Nous poursuivrons en testant la concurrence utilisateurs bénéficiant de droits analogues sur des tables communes. L utilisateur tlibourel vous a donné la globalité de droits sur ses tables tlibourel.emp et tlibourel.dept (correspondant aux tables du script Création des premiers TP) Faites des sélections sur les mêmes lignes des mêmes tables. Par exemple, réaliser la même requête : Donnez le nom et la date dembauche des employés de la table tlibourel.emp. Réessayez le même exercice mais avec des commandes provoquant des blocages. Par exemple, X modifie la table tlibourel.emp : Modifiez le nom de lemployé BALIN en BALUN. Puis X et Y réalisent la même requête : Donnez le nom et la date d embauche des employés sur la table tlibourel.emp. Constatations. Tester avec COMMIT et ROLLBACK. 3. Vous poursuivrez en bénéficiant des droits que vous vous êtes alloués (cf. section 2) par paire d utilisateurs X et Y (sur vos tables mutuelles EMP et DEPT). Etreinte mortelle (DEADLOCK) : X fait un UPDATE sur le tuple i de la table EMP Y fait un UPDATE sur le tuple j de la table DEPT X fait un UPDATE sur le tuple j de la table DEPT Y fait un UPDATE sur le tuple i de la table EMP Constatations. Quelles sont les opérations qui ont été effectivement effectuées sur les tables concernées Tester les transactions concurrentes (selon le schéma du tableau 1 ) en mode isolation READ COMMITTED Que constatez-vous?

GLIN605-2011-2012 6 Table 1: premier essai T1 T2... UPDATE TEST set B= B+40 where A=2; // blocage UPDATE TEST set C= abc where A=1; // déblocage T3 SELECT * FROM TEST; UPDATE TEST set C= def where A=1; SELECT * FROM TEST; Table 2: deuxième essai T1 T2... UPDATE TEST set B= B-40 where A=1; UPDATE TEST set B= 0 where A=1; // blocage interblocage détecté - si T1 avortée ROLLBACK; //blocage // si T2 avortée ROLLBACK

GLIN605-2011-2012 7 Tester les transactions concurrentes (selon le schéma du tableau 2) en mode isolation READ COMMITTED Que constatez-vous? Tester les transactions concurrentes en mode READ ONLY. Que constatez-vous? Mettez en concurrence une transaction READ ONLY et une transaction READ WRITE en niveau READ COMMITTED. Que constatez-vous? Tester des transactions READ WRITE (selon le schéma du tableau 3) en niveau d isolation SERIALIZABLE Que constatez-vous? Faire Table 3: troisième essai T1 SELECT A FROM TEST WHERE B=1; T3 INSERT INTO TEST VALUES(20,100, aze ); UPDATE TEST SET B=20 WHERE A=25; T2 SELECT A FROM TEST WHERE B=1; //commentaire T4 INSERT INTO TEST VALUES(25,10, fgh ); UPDATE TEST SET B=10 WHERE A=20; //commentaire un résumé commentaire de vos diverses observations.