Académique Documents
Professionnel Documents
Culture Documents
Les types et la responsabilité des utilisateurs diffèrent d’un utilisateur à un autre. Un administrateur a tout le
pouvoir sur oracle (Création de base de données, Création, modification, suppression des tables, Gestion de
sécurité, Gestion des historiques…). Ce qui n’est pas le cas pour un simple utilisateur à pouvoir restreint.
- Administrateur de la base de données (DBA): la responsabilité d’un DBA peut inclure l’installation et
la mise à jour de Oracle et les outils d’application, Création et gestion de la structure d’une base de données,
Gestion des sauvegardes, Gestion de la sécurité… Lors de l’installation un administrateur a été créé avec
l’authentification suivante :
Utilisateur : System Mot de passe : System
- Utilisateur de la base de donnée : l’ajout, la modification et la suppression des données s’il est autorisé à
le faire. Exemple d’utilisateur avec l’authentification suivante :
Utilisateur : VotrePréNom Mot de passe : VotreNom
Vous pouvez supprimer un utilisateur en utilisant la commande DROP USER. Pour supprimer, de plus, tous les
objets ( tables, vues, procédures, trigger …) créés par cet utilisateur, utilisez le paramètre CASCADE.
1
II. Gestion des utilisateurs et ses ressources
Plusieurs personnes peuvent travailler simultanément sur une base de données, toutefois ces personnes n'ont pas
forcément les mêmes besoins: certains peuvent modifier des données dans la table, tandis que d’autres n’ont le
droit que de la consulter. Ainsi, il est possible de définir des permissions pour chaque personne authentifiée.
Cette tâche incombe à l'administrateur de la base de données (en anglais DBA, DataBase Administrator). Il doit
dans un premier temps définir les besoins de chacun, puis les appliquer à la base de données sous forme de
permissions.
La clause GRANT permet d'attribuer des permissions à un ou plusieurs utilisateurs sur un ou plusieurs éléments
de la base de données. Par contre la commande REVOKE supprime un privilège à un ou plusieurs utilisateurs.
Lorsqu'un utilisateur est créé avec l'instruction CREATE USER, il ne dispose encore d'aucun droit car aucun
privilège ne lui a encore été assigné, par ailleurs il ne peut même pas se connecter à la base. Il faut donc lui
assigner les privilèges nécessaires
Il doit pouvoir se connecter, créer des tables, des vues... Ce sont des privilèges systèmes.
En fait, il existe deux grandes familles de privilèges. Les privilèges systèmes et les privilèges objets. Dans ce qui
suit nous verrons la syntaxe générale d’attribution de ces privilèges, soit à un utilisateur soit à un rôle.
Elles permettent à l’utilisateur de faire certaines actions sur n’importe quel objet de la base de données. Il existe
plusieurs privilèges de niveau système, voici quelques exemples :
Exemple:
GRANT CREATE TABLE
TO scott
WITH ADMIN OPTION;
L'option WITH ADMIN OPTION permet de pouvoir ensuite donner ce privilège à d’autres utilisateurs.
Elles permettent les manipulations sur des objets spécifiques. Par défaut, un utilisateur ne peut utiliser que ses
propres schémas (objects). Pour qu’un autre utilisateur puisse le faire, il faut lui donner ce privilège. Il faut donc
obligatoirement avoir le droit de donner ce privilège (en étant le propriétaire des objets ou en tant que
administrateur). Les privilèges OBJET donnent des droits sur les objets d'un schéma à un utilisateur. Les
privilèges objets sont donnés par le propriétaire du dit objet ou par l’administrateur.
2
Accorder un privilège de niveau objet
Syntaxe :
Il est possible de limiter le privilège à la colonne (ou la liste de colonnes) entre parenthèses de l’objet cité. Dans
le cas d'une autorisation collective, il est possible d'utiliser des mots clés spécifiques:
- Le mot clé ALL permet d'accorder tous les privilèges aux utilisateurs listés.
- Le mot clé PUBLIC permet d'accorder les privilèges listés, à l'ensemble des utilisateurs.
- L'option WITH GRANT OPTION permet de définir si l'utilisateur peut lui-même accorder à un autre
utilisateur les permissions qu'on lui accorde sur les éléments.
Exemple : Dans cet exemple, est attribué à l’utilisateur scott le privilège de sélection de toute la table Empl, et
la mise à jour des deux colonnes nom et prenom de la table Empl. La deuxième instruction lui retire le pouvoir
de consultation de la table Empl.
A titre d'exemple, supposons que Marc, propriétaire de la table confiserie veuille la rendre accessible en
consultation à Nathalie : il devra alors entrer la requête suivante :
Autres exemples
GRANT SELECT, UPDATE(name,volume_sucre)
ON Marc.confiserie
TO nathalie
WITH GRANT OPTION;
Dans le dernier exemple on précise que l'utilisatrice Nathalie a le droit de délivrer elle aussi ce privilège.
Puis préciser sur quelle table le privilège a été accordé par la clause ON schema.object
S'il faut donner plusieurs privilèges à plusieurs utilisateurs en même temps, oracle met à notre disposition la
notion de rôle.
3
3. Les Rôles
Les rôles sont des groupes nommés de privilèges associés qui sont accordés à des utilisateurs ou à d'autres rôles.
Les rôles sont accordés et révoqués comme n'importe quel autre privilège (GRANT, REVOKE). Ils peuvent être
activés ou désactivés pour chaque utilisateur.
Voici la syntaxe pour créer un rôle :
Lorsqu’un rôle est créé avec identification par un mot de passe, l’utilisateur qui reçoit ce rôle doit l’activer en
précisant le mot de passe à travers la commande SET ROLE nomderole IDENTIFIED BY password ; au
niveau de sa session.
Exemple:
CREATE ROLE nomderole ;
Une fois ce rôle est créé, il vous suffit de lui donner des privilèges (sur objets ou bien systèmes).
GRANT SELECT,INSERT,UPDATE
ON Empl
TO nomderole ;
Ensuite, il suffit de donner ce rôle à un utilisateur, en utilisant simplement la commande GRANT. On peut aussi
donner le rôle lors de la modification d’un utilisateur par la commande ALTER USER.
Pour supprimer un rôle déjà créé, il suffit d'utiliser la commande DROP ROLE.
Nous pouvons créer nos propres rôles comme nous pouvons utiliser les rôles prédéfinis. Pour chaque rôle
prédéfini un ensemble de privilège lui sont associés.
Pour permettre à plusieurs utilisateurs d’y accéder simultanément, le SGBD doit gérer les transactions avec le
minimum de conflits tout en veillant à la cohérence de la base de données.
Définition: Une transaction est une unité logique composée d'une ou plusieurs instructions SQL.
Une transaction commence implicitement à l’exécution de la première commande SQL et se termine par
un COMMIT pour validation ou un ROLLBACK pour annuler la transaction.
4
La transaction poursuit l’exécution des commandes SQL une après l’autre jusqu’à ce que l’un des événements
suivants se produit:
COMMIT: la transaction rencontre une instruction COMMIT explicite, toutes les modifications faites
sur la base de données jusqu’à ce point sont validées. Les modifications deviennent définitives et
visibles à tous les utilisateurs.
ROLLBACK: la transaction rencontre une instruction ROLLBACK explicite, toutes les modifications
faites sur la base de données jusqu’à ce point sont annulées.
Instruction LDD : si une instruction LDD est rencontrée tels que CREATE, DROP, RENAME, ou
ALTER, Oracle valide en premier lieu les instructions LMD courantes de la transaction et puis exécute
et valide l’instruction LDD en question. Il s’agit d’un commit implicite.
Fin normale du programme appelant: si le programme se termine sans erreurs, la transaction est
validée implicitement.
Arrêt anormal du programme: telle qu’une coupure de réseau où la transaction est annulée
implicitement.
En cours de transaction, seul l'utilisateur ayant effectué les modifications les voit. Ce mécanisme est utilisé par
les systèmes de gestion de bases de données pour assurer l'intégrité de la base en cas de fin anormale d'une tâche
utilisateur : il y a automatiquement ROLLBACK des transactions non terminées.
ORACLE est un système transactionnel qui assure la cohérence des données en cas de mise à jour de la base,
même si plusieurs utilisateurs lisent ou modifient les mêmes données simultanément.
ORACLE utilise un mécanisme de verrouillage pour empêcher deux utilisateurs d'effectuer des transactions
incompatibles et régler les problèmes pouvant survenir. ORACLE permet le verrouillage de certaines unités
(table ou ligne) automatiquement ou sur demande de l'utilisateur. Les verrous sont libérés en fin de transaction.
IV. Application