Vous êtes sur la page 1sur 5

TP9 : BASE DE DONNEES AVANCEES

(S3 :2018/19)
- Dictionnaire de données
- Gestion des utilisateurs, droit et rôles.
- Gestion des Profiles utilisateurs

Introduction : Ce TP est composé de trois parties à savoir : Le dictionnaire de données, la gestion des
utilisateurs et leurs rôles et privilèges et la gestion des profiles. LA première va nous permettre d’étudier
la structure centralisée (dictionnaire de données) sur laquelle repose Oracle. La compréhension du
fonctionnement du dictionnaire est essentielle à l’administration des bases de données. Dans la deuxième
on va administrer des utilisateurs par leurs créations et attribution des rôles et privilèges. Et enfin dans la
dernière partie on va étudier les profiles utilisateurs en changeant quelques paramètres et testant leurs
mode de fonctionnement a fin d’appréhender davantage le rôle de la gestion des profiles
I- Dictionnaire de données :

Le dictionnaire des données sous ORACLE contient des informations concernant les différentes tables
stockées dans la base, son utilité s’avère très importante dans les grandes bases de données, là on en peut
chercher une information complète si l’on détient juste un bout, Ainsi la table user_tables liste toutes les
tables dont vous (l’utilisateur connecté à la base) êtes propriétaire. La table all_tables liste elle toutes les
tables contenues dans la base. Et autres vues comme dbs_tab_privs , dba_role_privs et dba_sys_privs
sont utiles pour l’administration des compte et droits. Ces tables récapitulatives ont de nombreux attributs,
Pour connaître ces attributs on utilise l’opérateur DESC (ou DESCRIBE)
1- A fin de visualiser les vues de Dictionnaire soit on se connecte par le compte sysdba ou par le compte
sys, pour se connecter par ce dernier il va falloir réinitialiser son mot de passe par la commande :
C :>\users\hp> set oracle_sid=ORCL ( pour les gens ui ont la bse de données ORCL)

Après avoir réinitialisé le compte de l’utilisateur sys se connecter via l’outil SQLdeveloper et réaliser
la suite de cette partie
!!!Attention : Pour certaines versions SQLdeveloper il faut changer le rôle en SYSDBA comme
illustrée dans l’image ci-dessous (partie encerclée en rouge)
2- La table DICTIONARY ayant le synonyme DICT contient de dictionnaire de données de la base de
données, Quelles sont les champs que contient cette table ? décrivez-les ?
3- Utiliser la table ALL_COL_COMMENTS (ou bien USER_COL_COMMENTS) de dictionnaire puis
visualiser le commentaire sur la colonne start_date de la table JOB_HISTORY
4- Examiner la table USER_TRIGGERS de dictionnaire, qui stocke les informations sur tout les triggers
dans votre schema. Ci-dessous quelque colonne de cette table
TRIGGER_NAME ,TRIGGER_TYPE ,TRIGGERING_EVENT, TABLE_OWNER
TABLE_NAME , COLUMN_NAME , WHEN_CLAUSE ,STATUS , ACTION_TYPE
TRIGGER_BODY.
Question : Prenez un trigger de votre choix et extraire le contenue de ces champs.
5- Examiner la table User_source, all_source pour visualiser les codes source des triggers et des
procédures et fonction que vous avez réalisés
6- On veut savoir les noms des la tables qui contient la colonne JOB_id, réaliser le en dérivant les
étapes à suivre
7- Recenser les contraintes appliquées sur le champ emplyee_id dans chaque table.
8- Chercher l’ensemble des tables ayant un même propriétaire (owner).
9- Liste des rôles, privilèges system et privilèges Object dans le dictionnaire :
- Exécuter les requêtes ci-dessous en remplaçant lors de l’exécution ‘&user’ par les utilisateurs hr ,
scott et sys , décrivez ce que donne chaque requêtes
---- Liste des rôles attribués :
SELECT granted_role FROM dba_role_privs where grantee = upper('&user')

---- Liste des privilèges systèmes:


SELECT privilege FROM dba_sys_privs WHERE grantee=upper('&user') UNION SELECT
privilege || '( par le rôle ' || grantee ||')' FROM dba_sys_privs WHERE grantee IN (SELECT
granted_role FROM dba_role_privs where grantee = upper('&user'));
---- Liste des privilèges objets :
SELECT privilege || ' ON '||owner||'.'||table_name FROM DBA_TAB_PRIVS WHERE
grantee=upper('&user') UNION SELECT privilege || ' ON '||owner||'.'||table_name || ' (par le rôle ' ||
grantee ||')' FROM DBA_TAB_PRIVS
II- Gestion des utilisateurs, privilèges et roles :

NB : La gestion des utilisateurs, rôle et profile va être faite par le compte : sysdba en se
connectant via l’invite de commande cmd
1- Créer les utilisateurs devuser1, et devuser4 par la commande suivante :
create user devuser1 identified by 1234
create user devuser4 identified by 1234 password expire
2- Attribuer les privilèges y compris les rôles connect et resource de l'utilisateur hr
(extraits des 2 premières requêtes la question 9 ci-dessus « 1ere requête ») aux
utilisateurs devuser1 et devuser4
3- Plusieurs développeurs sont amenés à travailler sur le schéma hr. Ils devront
tous avoir les mêmes droits que hr. Pour cela vous aller créer le rôle
developer_user qui contiendra tous les droits, puis affecter ce rôle aux
utilisateurs.
a) Créer le rôle developer_user
b) Attribuer les privilèges de l'utilisateur hr au rôle developer_user
c) Créer les utilisateurs devuser2 et devuser3 leurs attribuer le rôle
developer_user.
4- Modifier les utilisateurs devuser1 et devuser4 par :
a) Attribuer le rôle developer_user aux utilisateurs devuser1 et devuser4
b) Exécuter les 2 premières requêtes de l’exercice précédant question 9 pour
l’utilisateur ’devuser1’, puis Révoquer les privilèges attribués directement
(dans la question 2) ne laisser que les privilèges attribués via le rôle
developer_user
c) À partir de l’invite cmd, se connecter par devuser4,
- Un message apparait, à quoi ça correspond ?
- Faites le nécessaire pour que devuser4 puisse se connecter.
- Une fois fait créer la table client (id, nom, adresse)
5- On souhaite maintenant créer un utilisateur correspondant à
l ’ administrateur de la base de données. Cet utilisateur doit posséder tous les
droits sur la base de données.
a. Créer un utilisateur adm_user
b. Donner le privilège ALL PRIVILEGESà l'utilisateur adm_user.
c. Est-ce que adm_user peut créer des tables ?
d. Est-ce que adm_user peut créer ou modifier des utilisateurs ?
e. Est-ce que adm_user peut lire toutes les tables du dictionnaire des données ?
pour répondre a cette question il faut :
i. Dans un premier temps, vérifier par un select d’une des vue de dictionnaire

par exemple : select * from dba_profiles

(Quel est le message d’erreur)


ii. Après, attribuer à adm_user le privilège SELECT ANY
DICTIONARY, revérifier par la même requête (est ce que le message
d’erreur est disparu ?)
iii. Supprimer l’utilisateur devuser4 par la commande : drop user devuser4
-Que remarquer vous ? et pourquoi ? que faut t-il pour forcer la suppression de
devuser4 ? Faites le pour forcer la suppression.
III- Gestion des Profiles :

1- Créer le profile DEVELOPER_USER avec les paramètres suivant


La durée avant expiration (PASSWORD_LIFE_TIME) est de 50 jours, la durée de
grâce (PASSWORD_GRACE_TIME) de 10 jours, la durée avant réutilisation
(PASSWORD_REUSE_TIME) de 120 jours et le nombre maximum de réutilisation
(PASSWORD_REUSE_MAX) de 3.

2 - Utiliser le dictionnaire de données pour étudier le profile DEVELOPER_USER:


par la requête suivante
Select profile, resource_name,limit from dba_profiles where
resource_type='PASSWORD' ORDER BY PROFILE;

a- Quelle est la politique de changement des mots de passe (Durée avant


expiration, durée de grâce, durée et nombre de changements avant réutilisation
pour le profile par default
b. Au bout de combien d’échecs de connexion un compte avec le profil developer_user
sera- t-il bloqué ?
c. A quel(s) utilisateur(s) les profiles par default et developer_user sont-ils affectés
citer juste 3 utilisateurs? (utiliser la vue du dictionnaire dba_users)
d. Affecter le profil developer_user aux utilisateurs devuser1, devuser2 et devuser3
(vérifier en consultant à nouveau la vue dba_users)
e. Modifier le profil developer_user pour que les comptes soient bloqués au bout
de 3 échecs de connexion pour une durée de 3 minutes (0.0021).
f. Essayer de se connecter avec l’utilisateur DEVUSER1 en tapant 3 fois un mot de passe
incorrecte, que remarquez-vous ? Attendre 3 minutes et ressayer avec le bon mot de passe,
commenter ?
g. Faire le nécessaire pour que le temps d'inactivité soit de 5 minutes par défaut, et
qu'il soit illimité pour developer_user.