1 LP Informatique(DA2I), UF7 : Administration Système, Réseaux et Base de donné

1 LP Informatique(DA2I), UF7 : Administration Système, Réseaux et Base de données 13/12/2007, Enseignant : M. Nakechbnadi, mail : nakech@free.fr Première parie : Administration d’une BD Chapitre 2 : Transaction, Gestion d’accès au données sous ORACLE 2.1/ Les privilèges sous oracle Il en existe deux types, les privilèges systeme et les privilèges objet. 2.1.1/ Les privilèges système Il existe a peu prés 127 privilèges système qui sont classés par catégories. Nous allons en présenter quelqu’uns pour bien situer les privilèges système.  Les privilèges sur les opérations système : Ces privilèges la permettent de réaliser des opération sur la base de données --> create tablespace (permet de créer un tablespace) --> create database (permet de créer une base de données) --> alter system (permet de modifier les paramètres de la base de données)  Les privilèges agissant sur la gestion des objets sur les schéma utilisateur Ces privilèges permettent de modifier et d'agir sur les objets du schéma des utilisateur: --> create table (permet de créer une table) --> create user (permet de créer un utilisateur) --> alter profile (permet de modifier un profil) 2.1.2/ Les privilèges objets Les privilèges sur les objets donnent le droit de réaliser une opération particulière sur une table, une vue, une séquence ou même des fonctions. Par exemple y accéder, la mettre a jour ou même y insérer des information. Voici quelques exemples de privilèges objets : --> select (permet d'accéder à un objet) --> update (permet de mettre à jour un objet) --> insert (permet d'insérer des information dans une table) --> references (permet de référencer une table lors d'un create table ou d'un alter table) 2 2.2/ Gestion des privilèges Sous oracle on utilise la commande grant pour attribuer les deux type de privilèges. 2.2.1/ Les privilèges système : Les privilèges système seront étudiés en détail plus tard. Deux privilèges sont important A connaître :  GRANT connect to utilisateur  GRANT resource to utilisateur 2.2.2/ Les privilèges objet : Pour attribuer un privilège 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 privilèges  PRIVILEGE : le privilège à attribuer  OBJET : l'objet sur lequel le privilège va être attribuer  ROLE : le rôle auquel le privilège va être attribuer  UTILISATEUR : l'utilisateur auquel le privilège va être attribuer  PUBLIC : le privilège est attribué a tous le monde  WITH GRANT OPTION : le destinataire du privilège pourra à son tour attribuer ce privilège. Exemple d'attribution de privilège: grant select, insert, update, delete on t_abonnements to user_1 Cette attribution de privilège de type privilège objet permet de donner le droit d'accéder, insérer des informations, mettre à jour et supprimer des informations dans la table t_abonnements à l'utilisateur user_1. 2.3/ Droits d’accès Plusieurs utilisateurs peuvent accéder même table d’une base (en tant que client ou par accès direct). Les données peuvent être confidentielles ou partagées entre plusieurs utilisateurs 3 Contrôle de l'accès à la base  Le contrôle de l'accès à la base est effectué en associant à chaque utilisateur - un nom de login - un mot de passe  Chaque utilisateur a des privilèges d'accès à la base : droit ou non  de créer des tables ou des vues,  de lire ou de modifier des tables ou des vues. Propriétaire des données  Une table ou un objet (et les données qu’elle contient) appartient à celui qui l’a créé  Le propriétaire d'une table peut donner à d'autres le droit de travailler avec sa table  Les vues permettent d’affiner les droits que l’on donne sur ses propres données : On peut donner des droits sur des vues et pas sur les tables sous-jacentes. Intérêt des vues? Donner des droits à une partie d’une table Exemple :  On considère la table note (nom, matiere, note)  CREATE VIEW note_bd (nom, matiere, note) AS select * from note where matière = ‘BD’  Grant update on note_bd(note) to Michel ; Michel est le l’enseignant responsable du cours BD Accorder des droits (sous oracle)  GRANT privilège ON table/vue TO utilisateur [WITH GRANT OPTION]  Des privilèges : SELECT INSERT UPDATE [(col1, col2,…)] DELETE INDEX ALTER ALL L’option WITH GRANT OPTION permet à l'utilisateur qui reçoit le privilège de le donner à d'autres utilisateurs. 4 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 privilège ON table/vue FROM utilisateur 2.4/ Les transactions Définition : Une transaction est un ensemble d’opérations d’accès et de mise à jour de données. Ces opérations doivent être traitées comme un tout et le SGBD doit assurer d’une part l’indivisibilité des opérations soumises, la cohérence du système après l’exécution de l’ensemble des opérations. Début d'une transaction  Dans la norme SQL2 toute modification appartient à une transaction  Une transaction démarre au début de la session  Une transaction démarre automatiquement après la fin d’une transaction (pas de commande pour démarrer 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 annulées  Les ordres DDL (create table par exemple) provoquent un COMMIT automatique Propriétés des transactions  Atomicité : un tout indivisible  Cohérence : une transaction doit laisser la base dans un état cohérent ; elle ne doit pas mettre les données dans un état « anormal » 5  Isolation : les données non validées d’une transaction ne doivent pas être vues par les autres transactions  Durabilité : le SGBD doit garantir que les modifications d'une transaction validée seront conservées, même en cas de panne Exemple d’annulation d’une transaction insert into dept values (10, 'Finance', 'Paris'); delete from emp; rollback; Transaction « non terminée »  La dernière transaction est automatiquement validée à la sortie de SQL*PLUS si elle ne se termine pas par un ROLLBACK  Ce comportement dépend du logiciel utilisé ; avec d’autres logiciels une transaction non validée explicitement est annulée Isolation des transactions En fonctionnement standard les modifications effectuées par une transaction ne sont connues des autres transactions qu’après sa validation Transactions longues Exemple : Organisation par une agence de voyage d’un voyage Nice – Wuhan (Chine) Nécessite la réservation de plusieurs billets d’avion : Nice – Paris ; Paris – Beijing ; Beijing – Wuhan. On commence par réserver les 2 premiers mais si on ne peut trouver de Beijing – Wuhan, il faut tout annuler. On met donc toutes ces réservations dans une transaction ; ça peut être long si l’agence discute avec le client pendant la transaction SQL Problèmes 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 désigner des points de reprise dans une transaction : savepoint nomPoint 6  On peut ensuite annuler toutes les modifications effectuées depuis un point de reprise s’il y a eu des problèmes : rollback to nomPoint  Ça évite d’annuler toute la transaction et permet d’essayer de pallier le problème Exemple insert into ….; savepoint p1; delete from …; update …; savepoint p2; insert into …; rollback to p2; commit; Annexe complément SQL Séquence Créer une séquence  CREATE SEQUENCE nom_séquence [INCREMENT BY entier1][START WITH entier2]  create sequence seqdept increment by 10 start with 10 Utilisation des séquences  Deux pseudo-colonnes permettent d'utiliser les séquences : CURVAL retourne la valeur courante NEXTVAL incrémente la séquence et retourne la nouvelle valeur  insert into dept(dept, nomd) values (seqdept.nextval, 'Finances'); Modification des séquences ALTER SEQUENCE nom_séquence INCREMENT BY entier1 alter sequence seqdept increment by 5 Pour Visualiser la valeur d’une séquence Select seqdept.curval from dual uploads/Finance/ grant-droit.pdf

  • 20
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Mai 08, 2021
  • Catégorie Business / Finance
  • Langue French
  • Taille du fichier 0.0785MB