TP Projet DBA Oracle
TP Projet DBA Oracle
TP Projet DBA Oracle
Instructions :
A rendre avant le 20 septembre 2022
Le travail peut être fait en binôme ou seul
Rendre un document MS Word contenant les captures expliquées des différentes étapes du TP
(numéroter toutes les parties et toutes les questions) :
Les captures ne doivent pas être floues.
Les captures provenant de sources différentes pour un même travail seront considérées
comme frauduleuses
Des captures similaires de 2 travaux différentes aussi seront considérées comme
frauduleuses.
Rendre un fichier .sql contenant les différentes commandes SQL du TP. Mettre les procédures
PL/SQL, les mettre dans des fichiers SQL isolés.
Mettre les noms des membres du groupe sur tous les fichiers.
1
TP projet DBA Oracle
Première partie
2
TP projet DBA Oracle
1. Après avoir lancé l’instance, créer un utilisateur tpuser1 dans la base de données
Oracle.
2. Si ça échoue, expliquez-en la cause et corrigez-la.
3. Créer un utilisateur tpuser1 dans la base de données pluggable créée lors de
l’installation.
4. Essayer de vous connecter avec le nouvel utilisateur. Si ça échoue, corrigez et
connectez-vous avec.
Donner à cet utilisateur le droit de créer des tables.
Connectez-vous avec et créez les tables emp et deptno en utilisant le script vu
sur le cours.
Donnez à tous les utilisateurs le droit d’interroger la table emp.
5. Affecter à l’utilisateur le tablespace par défaut comme espace par défaut en limitant a
1M la taille de l’espace utilisable ;
6. Quels sont les droits de l’utilisateur pour la session en cours (session_privs) ?
7. Exécuter le scenario ci-dessous en affichant les privilèges actifs après chaque
instruction :
Se déconnecter, se reconnecter : quels sont ses privilèges ?
Créer un rôle IndextRoles ayant CREATE ANY INDEX, ALTER ANY INDEX,
DROP ANY INDEX comme privilèges ;
Allouer ce rôle à l’utilisateur créé ;
Créer un rôle RoleAdmin ayant GRANT ANY PRIVILEGE comme privilège ;
Allouer ce rôle à l’utilisateur créé ;
8. Vérifier les limites des ressources de l’utilisateur.
9. Créer un tablespace USERS01 avec 2 datafiles de 10M ;
10. Affecter USERS01 comme tablespace par défaut à l’utilisateur en limitant son espace à
5M ;
11. Créer un profil nommé profiler01 autorisant deux connections simultanées par le même
utilisateur, chaque session ne devant pas dépasser 3 minutes ;
s’assurer que le profil est créé ;
affecter le profil à l’utilisateur créé dans la première partie et vérifier qu’il lui
est bien affecté.
Vérifier que les limites du profil s’appliquent à l’utilisateur.
12. Supprimer le profil ; quelles sont les nouvelles limites de ressources de l’utilisateur ?
3
TP projet DBA Oracle
Cette session permet de mettre en œuvre les différents mécanismes lies à la sécurité d’une base de
données :
(i) surveillance (auditing) du serveur de données,
(ii) archivage de journaux,
(iii) sauvegarde
(iv) reprise après incident
(v) duplication (ou multiplexage).
Voir la documentation oracle : https://docs.oracle.com/en/database/oracle/oracle-database/index.html
Surveillance (auditing)
1. Vérifier que l’audit trail et ses vues existent, sinon les créer ;
2. Quelles sont les options d’audit par défaut ? Positionner les options d’interrogation
et de modification de toute table par l’utilisateur ; vérifier que ces options sont bien
positionnées ;
3. Vérifier que ces options sont effectives. Si tel n’est pas le cas, corriger et vérifier ;
4
TP projet DBA Oracle
Sauvegardes
8. Créer un répertoire de sauvegarde ; y sauvegarder manuellement un tablespace.
9. Sauvegarder le fichier de contrôle.
10. Exécuter le scenario ci-dessous en utilisant le gérant de reprise RMAN :
Lancer RMAN en tant que SYSOPER ou en tant que SYSDBA ;
Monter la base (sans l’ouvrir) ;
Afficher les infos sur les tablespaces (nom, taille, emplacement, etc.) ;
Créer une copie du premier fichier de données ;
Sauvegarder l’espace system ;
Lister les sauvegardes et leur contenu ;
Vérifier la consistance d’une sauvegarde identifiée par sa clé
Reprise automatique
Cette session simule un incident logiciel afin de tester la reprise automatique.
11. Quel est le mode de gestion du journal des images avant modification (rollback
segments ou undo tablespaces) ?
12. Avec l’utilisateur de la première partie, créer une table, y faire quelques insertions
puis vérifier et mémoriser le contenu de la table ;
13. Créer et exécuter la procédure ci-dessous :
5
TP projet DBA Oracle
Multiplexage
20. Quel est le redo log en cours d’utilisation (V$LOGFILE.STATUS) et son numéro de
groupe ?
21. Créer un nouveau groupe de fichiers de journalisation ne comportant qu’un seul
fichier de 64K ; vérifier le résultat. Ajouter un membre à chaque groupe existant et
vérifier le résultat ;
22. Créer une table et y faire un grand nombre d’insertions (afin d’instancier un
significatif d’enregistrements dans le journal) ;
Quel est le redo log en cours d’utilisation (actif) et son numéro de groupe ?
Supprimer les membres ajoutés ; en cas de non fonctionnement, expliquer ;
Supprimer le groupe ajouté ; en cas de non fonctionnement, expliquer.
6
TP projet DBA Oracle
Préalables
1. Vérifier l’existence de la table plan_table et la créer si elle n’existe pas ;
2. Créer les relations (tables) suivantes sans clés :
3. Procédures à créer :
(a) ProcInitProd.sql : procédure permettant d’instancier la relation produit.
Cette procédure aura comme argument NbProd, le nombre de produits à insérer.
Les tuples de la relation sont de la forme <i, ’Produit i’, i>, i ∈ [1..NbProd]
(Exemple: <1, Produit 1, 1>, <2, Produit 2, 2>, etc.).
(b) ProcInitDep.sql : procédure permettant d’instancier la relation dépôt.
De la même façon, cette procédure aura un argument NbDep désignant le nombre
de dépôts à insérer. Les tuples de la relation sont de la forme <j, ’Depot Numero j’,
x >, j ∈ [1..NbDep].
(c) ProcInitStock.sql : procédure permettant d’instancier la relation stock.
Cette procédure aura comme argument NbrStock désignant le nombre moyen de
dépôts dans lesquels est stocké un même produit. Les tuples de la relation sont de
la forme <prod#, dep#, 3000>.
7
TP projet DBA Oracle
Plans d’exécution
6. Question 1 :
Exécuter les requêtes ci-dessous et examiner leur plan d’exécution. Inclure des éléments
de coût de la requête dans l’examen du plan d’exécution. Comparer les plans des couples
de requêtes : (R1, R2) ; (R3, R4) ; (R5, R6) et (R7, R8)
7. Question 2 :
(a) Changer l’ordre des relations dans la clause FROM des requêtes R3 et R5.
(b) Exécuter ces requêtes et comparer leurs plans d’exécution avec ceux obtenus
dans le (6).
8
TP projet DBA Oracle
8. Question 3 :
a. Quel est l’espace occupé par chacune des relations (dans user_tables, nombre
de blocs, nombre de blocs libres, nombre de tuples, etc.) ?
b. Collecter des statistiques sur les tables.
c. Quel est l’espace occupé par chacune des relations ? Expliquer.
d. Exécuter les requêtes et comparer les plans d’exécution avec ceux des deux
questions précédentes.
9. Question 4
a. Créer un index sur la relation produit ayant prod# comme clé
b. Créer un index sur la relation stock ayant (prod#, dep#) comme clé
c. Exécuter quelques requêtes de la liste ci-avant et comparer les plans d’exécution
avec ceux obtenus dans les questions précédentes.
10. Question 5 :
a. Collecter les statistiques sur les index.
b. Examiner l’encombrement des index crées (Nombre de blocs, nombre de valeurs
par blocs, nombre de niveaux, etc.).
c. Exécuter quelques requêtes de la liste ci-avant et comparer les plans d’exécution
avec ceux obtenus dans les questions 1, 2, 3 et 4.