0% ont trouvé ce document utile (0 vote)
132 vues67 pages

Gestion des exceptions en PL/SQL

Le document décrit la gestion des exceptions en PL/SQL, notamment la capture et le traitement des exceptions prédéfinies. Il aborde également les procédures stockées, leur création, leur appel et leur suppression.

Transféré par

Amira Skander
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
132 vues67 pages

Gestion des exceptions en PL/SQL

Le document décrit la gestion des exceptions en PL/SQL, notamment la capture et le traitement des exceptions prédéfinies. Il aborde également les procédures stockées, leur création, leur appel et leur suppression.

Transféré par

Amira Skander
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

- Partie 3 -

1
Gestion des exceptions

2
Manipulation des exceptions en PL/SQL
• Le traitement des exceptions PL/SQL est un mécanisme pour
manipuler les erreurs rencontrées lors de l’exécution.

• L'utilisation de ce mécanisme permet à l'exécution de continuer


si l'erreur n'est pas suffisamment importante pour produire
la terminaison de la procédure.

• La décision de permettre à une procédure de continuer après


une condition d'erreur est une décision que le développeur doit
faire en fonction des erreurs possibles.

3
Manipulation des exceptions en PL/SQL

•Une exception non traitée, provoque l’échec du bloc PL/SQL

•Pour se protéger contre ces situations, il est possible de


gérer ces exceptions:
– La gestion d’une exception consiste à prévoir un traitement
approprié qui absorbe ou résout l’erreur.

•L’endroit de ce traitement est la section EXCEPTION


4
Manipulation des exceptions en PL/SQL
• En cas d’une exception rencontrée dans la section
exécutable d’un bloc, le contrôle passe immédiatement
à la section EXCEPTION du même bloc :

DECLARE

BEGIN

Erreur
...
...
EXECPTION

END; 5
Capture des exceptions
Syntaxe :

EXCEPTION
WHEN exception1 THEN
énoncé1;
énoncé2;
…….
[WHEN exception2 [OR exception3 …] THEN
énoncé3;
énoncé4;
…….]

[WHEN OTHERS THEN


énoncé5;
énoncé6;
…….]

6
Exemple
DECLARE
V_nom Chercheur.Cnom%TYPE;
BEGIN
SELECT nom
INTO V_nom
FROM Chercheur

DBMS_OUTPUT.PUT_LINE (‘Nom Chercheur : ’|| V_nom);
Exception
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE (‘Plusieurs chercheurs Trouvés.’);

END;
7
Exceptions prédéfinies (dans ORACLE)

– Elles sont prédéfinies par Oracle


– Elles possèdent des noms significatifs
– Elles sont automatiquement provoquées

– Les exceptions les plus courantes sont les suivantes :


• Exception NO_DATA_FOUND (ORA-01403)
• Exception TOO_MANY_ROWS (ORA-01422)
• Exception DUP_VAL_ON_INDEX (ORA-00001)
• Exception VALUE_ERROR (ORA-06502)
• Exception ZERO_DIVIDE (ORA-01476)
• Exception INVALID_CURSOR (ORA-01722)

8
• Exception TOO_MANY_ROWS (ORA-01422)

– Condition de provocation : lorsqu ’ un curseur implicite


d’interrogation identifie plus d’une seule ligne à retourner

– Exemple : plusieurs étudiants ayant la même filière


DECLARE
V_NomETUD ETUDIANT.NomETUD%TYPE;
BEGIN
SELECT NomETUD
INTO V_NomETUD
FROM ETUDIANT WHERE filière = ‘Informatique’;
EXECPTION
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE (‘Plusieurs étudiants trouvés.’);

END;
9
• Exception NO_DATA_FOUND (ORA-01403)

– Condition de provocation : lorsqu ’ un curseur implicite


d’interrogation ne retourne aucune ligne

– Exemple : cas de recherche d’un étudiant inexistant


DECLARE
ETUDIANT_REC ETUDIANT%ROWTYPE;

BEGIN
SELECT * INTO ETUDIANT_REC
FROM ETUDIANT WHERE NumETUD= -1;
EXECPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE (‘Etudiant Inexistant’);

END;
– Remarque : L ’ absence d ’ un gestionnaire pour l ’ exception
NO_DATA_FOUND entraîne une sortie du bloc avec échec 10
• Exception DUP_VAL_ON_INDEX (ORA-00001)
– Condition de provocation : lorsqu’une commande SQL tente
d’insérer une valeur dupliquée dans une colonne définie avec un
PRIMARY KEY …

– Exemple : cas d’insertion avec duplication de clé primaire


BEGIN
INSERT INTO Etudiant (NumETUD, …)
VALUES (10, ‘Dupont’, ‘Informatique’);
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
DBMS_OUTPUT.PUT_LINE (‘Insertion rejetée :NumETUD existe déjà.’);
END;

11
• Exception VALUE_ERROR (ORA-06502)
– Condition de provocation : en cas de troncature ou d’erreur
de conversion

– Exemple : Affectation générant une troncature


DECLARE
V_message VARCHAR2 (10);
BEGIN
V_message :=‘Chaîne trop longue’;
EXCEPTION
WHEN VALUE_ERROR THEN
DBMS_OUTPUT.PUT_LINE (‘Erreur de troncature’);
END;

12
• Exception ZERO_DIVIDE (ORA-01476)
– Condition de provocation : tentative de division par ZERO

– Exemple
DECLARE
V_nombre1 int :=10;
V_nombre2 int :=5;
V_resultat number (5,3);
BEGIN
V_resultat := 100/(V_nombre1 -2* V_nombre2);
EXCEPTION
WHEN ZERO_DIVIDE THEN
DBMS_OUTPUT.PUT_LINE (‘Exception ZERO_DIVIDE’);
END;

13
• Exception INVALID_CURSOR (ORA-01722)
– Condition de provocation : au moment ou un curseur fermé
est référencé dans une opération de lecture (FETCH), de
fermeture (CLOSE) ou via des attributs (%FOUND,
%NOTFOUND, %ROWCOUNT)

• Exceptions génériques OTHERS


— Condition de provocation : toute exception non gérée
— WHEN OTHERS doit être la dernière

14
Les procédures stockées

15
Les procédures stockées

Les procédures stockées sont des blocs PL/SQL qui possèdent des noms

Elles consistent à stocker le code du bloc PL/SQL compilé dans la


base de données ( commande : CREATE PROCEDURE … ).

Elles peuvent être appelées à partir d’un autre bloc PL/SQL …

16
Les procédures stockées
Syntaxe:
CREATE PROCEDURE Nom_Procédure (Param1, … , Paramn)
IS
[Déclarations des variables locales]
BEGIN

EXCEPTION

END ;
/
 « Procedure Created »  La procédure est correcte
Ou
« Procedure Created with compilation errors »
 SHOW ERRORS; 17
Les procédures stockées
CREATE PROCEDURE Nom_Procédure (Param1,…,Paramn)
IS
[Déclarations des variables locales]
BEGIN

EXCEPTION

END ;
/

Exemple:

18
Les procédures stockées
CREATE PROCEDURE Nom_Procédure (Param1…, Parami , …)
IS
[Déclarations des variables locales]
BEGIN

EXCEPTION

END ;
/
Parami suit la syntaxe : Nom_du_Paramètre [IN | OUT | IN OUT] Type
Où :
IN : Paramètre d’entrée
OUT : Paramètre de sortie
IN OUT : Paramètre d’entrée/Sortie

Par défaut le paramètre est IN


19
Appel des procédures stockées
Une procédure stockée est appelée par les autres applications soit:
• en utilisant son nom dans un autre bloc PL/SQL (ou dans une autre
procédure).
• par EXECUTE dans SQL*Plus.

· Dans un bloc PL/SQL :


BEGIN

Nom_Procédure (valeur_Param1,…, valeur_Paramn) ;
END ;

· Dans SQL*PLUS :
EXECUTE Nom_Procédure (valeur_Param1,…, valeur_Paramn) ;
20
Suppression des procédures stockées

• Comme tout objet manipulé par Oracle, les procédures stockées


peuvent être supprimées si nécessaire.
• Cette suppression est assurée par la commande suivante :
DROP PROCEDURE nom_procédure;

21
Conventions de nommage
PL/SQL

22
Lisibilité des programmes PLSQL (Convention de nommage)

• Pour une meilleur lisibilité des programmes, il est


recommandé de préfixer les identificateurs selon les
conventions suivantes :

Identificateurs Préfixe Exemple


Variables V_ V_Salaire

Curseurs C_ C_Etudiants

Paramètre P_ P_Immat

23
Gestion des utilisateurs et de
leurs droits
(Chapitre 7)
Gestion des utilisateurs et de leurs droits
Pour la gestion de la sécurité, Oracle permet :

– de définir les utilisateurs qui peuvent se connecter à la BD

– de définir les droits de chaque utilisateur à l’intérieur de la BD

– D’imposer une politique de gestion de mots de passe,

– …

25
Modes d’identification des utilisateurs
Un utilisateur peut être identifié par Oracle
ou par le système d’exploitation:

a/ Identification par Oracle


1. l’utilisateur se connecte à la base en utilisant un nom et un Mot de Passe (MdP)
2. Oracle vérifie le nom et le MdP
SQL> CONNECT nom/MdP

b/ Identification par le le Système d’Exploitation (SE):


1. l’utilisateur se connecte à la base sans saisir ni de nom ni de MdP.
2. Oracle ne vérifie pas le MdP, mais contrôle simplement que le nom de
l’utilisateur au niveau du SE correspond à un nom d’utilisateur dans la
BD. L’identification initiale a été réalisée par le SE.
SQL> CONNECT /

26
Créer des utilisateurs
Création d’un utilisateur:
L’ordre SQL CREATE USER permet de créer un nouvel utilisateur:

Syntaxe:
CREATE USER nom IDENTIFIED { BY mot_de_passe | EXTERNALLY }
[ PASSWORD EXPIRE ]
[ ACCOUNT { LOCK | UNLOCK } ]
…;

IDENTIFIED : indique si l’utilisateur est identifié par le SE (EXTERNALLY ) ou


par Oracle (BY mot_de_passe)

PASSWORD EXPIRE: permet de forcer une modification du mot de passe lors de la


première connexion
ACCOUNT: peut prendre deux valeurs:
1. LOCK: le compte est verrouillé et la connexion est interdide,
2. UNLOCK: le compte n’est pas verrouillé et la connexion est autorisée
28
Création d’un utilisateur:
L’ordre SQL CREATE USER permet de créer un nouvel utilisateur:

Syntaxe:
CREATE USER nom IDENTIFIED { BY mot_de_passe | EXTERNALLY }
[ PASSWORD EXPIRE ]
[ ACCOUNT { LOCK | UNLOCK } ]
…;

- Exemple de création d’un utilisateur identifié par Oracle (mot_de_passe =tempo):


CREATE USER Simon IDENTIFIED BY tempo
PASSWORD EXPIRE;
ACCOUNT LOCK;

29
modification d’un utilisateur
Syntaxe:
ALTER USER nom
[IDENTIFIED { BY mdp | EXTERNALLY }]
[PASSWORD EXPIRE ]
[ACCOUNT {LOCK | UNLOCK} ]

;

Exemples :
l. Modification du mot de passe d’un utilisateur: ALTER USER Simon
IDENTIFIED BY nouveau_mot_de_passe;

2. Verrouillage d’un compte: ALTER USER Simon ACCOUNT LOCK;

3. Déverrouillage d’un compte: ALTER USER Simon ACCOUNT UNLOCK;

30
Suppression d’un utilisateur
Syntaxe:
DROP USER nom [CASCADE];

Exemple :
DROP USER Simon CASCADE;

• Si l’utilisateur possède des tables, l’option CASCADE doit


être présente pour forcer la suppression préalable de ses tables

• Si l’utilisateur possède des tables et l’option CASCADE n’est


pas présente : Erreur

• Un utilisateur connecté ne peut pas être supprimé


31
Gérer les droits des utilisateurs
Droits (privilèges) des
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é.

• Il ne peut même pas se connecter à la base !

33
Utilisateur Oracle

34
Gestion des Privilège système
Privilège système:

• Un Privilège système est le droit d’exécuter un ordre SQL en général

• Chaque ordre SQL a au moins un privilège système associé qui porte


le même nom que l’ordre SQL

• Par exemple l’ordre CREATE TABLE possède un privilège système


associé CREATE TABLE qui donne le droit de créer une table dans
son propre schéma

• Exemples de privilèges système: CREATE TABLE, DROP TABLE,


CREATE USER, ALTER USER, DROP USER, …
1. attribution d’un privilège système à un utilisateur:
Syntaxe:
GRANT nom_privilège [, …]
TO {nom_utilisateur | PUBLIC} [,…]
[WITH ADMIN OPTION]

Exemple : GRANT CREATE TABLE TO Paul;

Le privilège peut être attribué à un utilisateur ou à


tous les utilisateurs (PUBLIC):
Exemple : GRANT CREATE TABLE TO PUBLIC;
Le privilège attribué est immédiatement actif.
1. attribution d’un privilège système à un utilisateur:
Syntaxe:
GRANT nom_privilège [,…]
TO {nom_utilisateur | PUBLIC} [,…]
[WITH ADMIN OPTION]

La clause WITH ADMIN OPTION donne au bénéficiaire le

droit de retransmettre le privilège système à d’autres utilisateurs.


2. Révocation d’un privilège système à un utilisateur:

Syntaxe:
REVOKE nom_privilège [,…]
FROM {nom_utilisateur | PUBLIC} [,…]

Exemple : REVOKE CREATE TABLE FROM Paul;

Le privilège est immédiatement révoqué et ne peut plus être


exercé.
2. Révocation d’un privilège système

Si vous avez attribué un privilège avec l’option WITH ADMIN OPTION


et que vous souhaitiez enlever cette possibilité de transmission:
– il faut révoquer le privilège et l’attribuer de nouveau sans l’option.

Tous les privilèges système peuvent être révoqués d’un seul


coup avec le mot clé ALL PRIVILEGES :
REVOKE ALL PRIVILEGES FROM ...

40
2. Révocation d’un privilège système (suite)

L’ordre REVOKE permet de révoquer uniquement les privilèges qu’un


utilisateur a reçu en direct
(non les privilèges qu’il a implicitement via PUBLIC):

•Si un privilège a été attribué à un utilisateur et à PUBLIC:


– la révocation de l’utilisateur est sans effet sur la possibilité pour
l’utilisateur de continuer à exercer le privilège :
– car il le possède toujours via PUBLIC.

41
Gestion des Privilège objet
Privilège objet

• Définition : Un Privilège objet est le droit d’accéder à un Objet (Table,


Vue, Séquence, …) d’un autre utilisateur.

• Par défaut, seul le propriétaire d’un objet a le droit d’y accéder

• Pou qu’un autre utilisateur puisse accéder à l’objet, le propriétaire de


l’objet doit lui donner un privilège objet

43
Privilège objet
• Définition : Un Privilège objet est le droit d’accéder à un Objet (Table,
Vue, Séquence, …) d’un autre utilisateur.

• Par défaut, seul le propriétaire d’un objet a le droit d’y accéder

• Pou qu’un autre utilisateur puisse accéder à l’objet, le propriétaire de


l’objet doit lui donner un privilège objet

• Les principaux privilèges objets sont les suivants :


Privilège Table Programme PL/SQL
SELECT X
INSERT X
UPDATE X
DELETE X
EXECUTE X
44
1. attribution d’un privilège objet à un utilisateur :
L’ordre SQL GRANT permet d’attribuer un privilège objet:

GRANT {liste_privilèges | ALL} ON nom_objet


TO { nom_utilisateur | PUBLIC }
[ WITH GRANT OPTION ]

avec liste_privilèges peut être égale à:


– SELECT : lecture de toutes les colonnes d’une table ou d’une vue.
– INSERT[liste_colonne] : insertion dans une table ou dans une vue,
éventuellement limitée à certaines colonnes.
– UPDATE[liste_colonne] : mise à jour dans une table ou dans une vue,
éventuellement limitée à certaines colonnes.
– DELETE : suppression dans une table ou dans une vue.

Exemple:
GRANT SELECT, UPDATE ON Table_1 TO Simon

45
1. attribution d’un privilège objet à un utilisateur :

GRANT {liste_privilèges | ALL} ON [nom_schéma.]nom_objet


TO { nom_utilisateur | PUBLIC} [WITH GRANT OPTION ]

La clause WITH GRANT OPTION donne au bénéficiaire


le droit de transmettre le privilège objet.
Exemple:
D’abord, le propriétaire de la table «Table_1» exécute:
GRANT SELECT, UPDATE ON Table_1
TO User_1 WITH GRANT OPTION;

Ensuite, l’utilisateur «User_1» peut exécuter:


GRANT SELECT ON Table_1 TO User_2

46
3.2.1 attribution d’un privilège objet à un utilisateur :

Pour attribuer un privilège objet, il faut :

• être propriétaire de l’objet

• ou avoir reçu le privilège avec la clause WITH GRANT OPTION ;

• ou avoir reçu le privilège système ANY OBJECT PRIVILEGE.

47
2. Retirer un privilège objet à un utilisateur:

L’ordre SQL REVOKE permet de révoquer un privilège objet.


Syntaxe:
REVOKE {ALL | liste_privilèges} ON
[nom_schéma.]nom_objet
FROM {nom_utilisateur |PUBLIC}
Exemple :
REVOKE SELECT ON Table_1 FROM User_2 ;

REVOKE SELECT, UPDATE ON Table_1 FROM User_1;

REVOKE DELETE ON Table_1 FROM PUBLIC

Le privilège est immédiatement enlevé et ne peut plus être exercé.


48
2. Retirer un privilège objet à un utilisateur:

Syntaxe:
REVOKE {ALL | liste_privilèges} ON
[nom_schéma.]nom_objet
FROM {nom_utilisateur |PUBLIC}
• Si vous avez attribué un privilège avec l’option WITH GRANT OPTION
• et que vous souhaitiez enlever cette possibilité de transmission,
• il faut révoquer le privilège et l’attribuer de nouveau sans
l’option.
Gestion des Rôles
Notion de Rôle
• Définition: Un rôle est un regroupement nommé de
privilèges (système et/ou objet) qui peut être attribué à un
utilisateur.

• Tous les privilèges regroupés dans le rôle sont alors


simultanément attribués à l’utilisateur

51
Notion de Rôle
• Définition: Un rôle est un regroupement nommé de
privilèges (système et/ou objet) qui peut être attribué à un
utilisateur.

• Tous les privilèges regroupés dans le rôle sont alors


simultanément attribués à l’utilisateur

• Les rôles permettent de simplifier la gestion des droits.

• Les principales caractéristiques des rôles sont les suivantes :


– Un rôle peut être attribué à un autre rôle.
– Un utilisateur peut avoir plusieurs rôles.
– Un rôle n’appartient à personne.
52
Les étapes de gestion des Rôles
• La mise en oeuvre des rôles s’effectue en trois étapes :
1. création du rôle ;
2. attribution des privilèges (système et objet) au rôle ;
3. attribution du rôle aux utilisateurs.

53
Le principe d’un rôle (ROLE) est de créer un groupement
nommé de privilèges. Celui-ci peut être accordé à d’autres
utilisateurs.

 Utilisateur1 Privilège 1
Rôle A

Privilège 2
 Utilisateur2
Rôle B
Privilège 3
 Utilisateur3
Rôle C Privilège 4

 Utilisateur4

54
:
Les principaux rôles, prédéfinis par Oracle et
attribués aux utilisateurs SYSTEM et SYS, sont :

Rôle Privilège système


CONNECT CREATE SESSION

RESOURCE CREATE TABLE, CREATE TRIGGER,


CREATE SEQUENCE,
CREATE PROCEDURE, …

DBA Tous les privilèges


55
1. Création d’un rôle:
L’ordre SQL CREATE ROLE permet de créer un rôle avec la Syntaxe:

CREATE ROLE nom


[ IDENTIFIED { BY mot_de_passe | EXTERNALLY}
| NOT IDENTIFIED ];

Les options sont :

IDENTIFIED BY mot_de_passe :Indique qu’un mot de passe est nécessaire pour


activer le rôle.
IDENTIFIED EXTERNALLY: Indique qu’une identification externe est
nécessaire pour activer le rôle.
NOT IDENTIFIED : Indique qu’aucune identification n’est nécessaire pour
activer le rôle. C’est la valeur par défaut.

56
1. Création d’un rôle:
L’ordre SQL CREATE ROLE permet de créer un rôle avec la
Syntaxe:
CREATE ROLE nom
[ IDENTIFIED { BY mot_de_passe | EXTERNALLY}
| NOT IDENTIFIED ];

Exemple : CREATE ROLE mailing;

Pour créer un rôle, il faut avoir le privilège système:


CREATE ROLE

57
Attribution (ou Ajout) d’un privilège à un rôle:

• L’ordre SQL GRANT permet d’attribuer des privilèges système


ou des privilèges objet à un rôle.

• Syntaxe pour les privilèges système:


GRANT nom_privilège [,...]
TO nom_rôle [,...]
[ WITH ADMIN OPTION ] ;

Exemple : GRANT CREATE SESSION, CREATE TABLE TO mailing;

58
Attribution (ou Ajout) d’un privilège à un rôle:
• L’ordre SQL GRANT permet d’attribuer des privilèges système ou
des privilèges objet à un rôle.

• Syntaxe pour les privilèges objet:


GRANT { nom_privilège[(liste_colonnes)] [,...] | ALL}
ON [nom_schéma.]nom_objet
TO nom_rôle [,...] ;

Exemple :
GRANT SELECT, INSERT ON Table_1 TO mailing;

59
Révocation (retrait) d’un privilège à un rôle
• L’ordre SQL REVOKE permet de révoquer des privilèges
système ou des privilèges objet à un rôle.

• Syntaxe pour les privilèges système


REVOKE nom_privilège [ ,...]
FROM nom_rôle [,...] ;

• Exemples :
–REVOKE CREATE TABLE FROM mailing;

60
Révocation (retrait) d’un privilège à un rôle
• L’ordre SQL REVOKE permet de révoquer des privilèges
système ou des privilèges objet à un rôle.

• Syntaxe pour les privilèges objet


REVOKE { nom_privilège [,...] | ALL }
ON nom_objet
FROM nom_rôle [,...] ;

• Exemples :
–REVOKE UPDATE ON Table_1 FROM mailing;

61
Attribution d’un rôle
à un utilisateur ou à un rôle
• L’ordre SQL GRANT permet d’attribuer un rôle à un
utilisateur ou à un rôle.

• Syntaxe:
GRANT nom_rôle1
TO { nom_utilisateur | nom_rôle2 }
[ WITH ADMIN OPTION ] ;

• Exemple : GRANT mailing TO simon;

Le rôle attribué n’est pas immédiatement actif


si l’utilisateur est déjà connecté.
62
Activation ou désactivation d’un rôle
• L’ordre SQL SET ROLE permet d’activer ou de désactiver un rôle.

• Syntaxe:
SET ROLE { nom_rôle [ IDENTIFIED BY mot_de_passe ] [,...]
| ALL [ EXCEPT nom_rôle [,...] ] | NONE
};

• Exemple -> L’utilisateur connecté active le rôle MAILING :


SET ROLE mailing;

63
Activation ou désactivation d’un rôle
• L’ordre SQL SET ROLE permet d’activer ou de désactiver un rôle.
• Syntaxe:
SET ROLE { nom_rôle [ IDENTIFIED BY mot_de_passe ] [,...]
| ALL [ EXCEPT nom_rôle [,...] ] | NONE
};
• Exemple -> L’utilisateur connecté active le rôle MAILING :
SET ROLE mailing;
• Les options sont :
–IDENTIFIED BY: Donne le mot de passe qui permet d’activer le
rôle.
–ALL: Tous les rôles attribués à l’utilisateur sont activés. La clause
EXCEPT permet d’en enlever certains.
–NONE : Aucun des rôles attribués à l’utilisateur n’est activé
(désactive donc tous les rôles).
64
Trouver des informations sur les Rôles
Les colonnes intéressantes de la vue USER_ROLE_PRIVS:
•GRANTEE : Nom de l’utilisateur ou du rôle qui a reçu le rôle.
•GRANTED_ROLE : Nom du rôle reçu.
•ADMIN_OPTION : Rôle reçu avec la clause WITH ADMIN OPTION (YES ou NO)

65
Rappel des Rôles prédéfinis

Oracle propose en standard un grand nombre de rôle prédéfinis,


parmi lesquels :
•CONNECT: Autorise la connexion (contient uniquement le
privilège système CREATE SESSION).

•RESOURCE: Permet la création des principaux objets (table...).

•DBA: Donne tous les privilèges système avec l’option WITH


ADMIN OPTION.

66
Révocation d’un rôle à un
utilisateur ou à un rôle
• L’ordre SQL REVOKE permet de révoquer (enlever) un
rôle à un utilisateur ou à un rôle.

• Syntaxe
REVOKE nom_rôle [,...]
FROM { nom_utilisateur | PUBLIC | nom_rôle } [,...] ;

• Exemple : REVOKE mailing FROM simon;

67

Vous aimerez peut-être aussi