Atelier Administration BD
Atelier 2 : Dictionnaire de données, Fichiers de Contrôle
et Fichier Redo Log
Objectifs de l'atelier :
A la fin de cet atelier, l’étudiant doit être capable de :
Consulter les différentes vues du dictionnaire de données pour
obtenir des informations sur la base,
Gérer les fichiers de contrôle de la base de données,
Identifier les fichiers Redo log de la base de données,
Ajouter un groupe de fichiers Redo log à la base de données,
Redimensionner les fichiers Redo log de la base de données,
Supprimer un groupe de fichiers Redo log de la base de données.
Enoncé :
Le Dictionnaire des données
1. Recherchez la liste des vues du dictionnaire de données
SQL> connect system/votre_mot_de_passe
SQL> select table_name from dictionary;
2. Identifiez le nom de la base de données, le nom de l’instance et la taille des blocs
données. (Utilisez les vues dynamiques de des performances : V$DATABASE,
V$THREAD et V$PARAMETER)
SQL> select name from v$database;
SQL> select instance from v$thread;
SQL> select value from v$parameter where name='db_block_size';
3. Affichez la liste des noms des fichiers de données ; (utilisez la vue V$DATAFILE) :
SQL> select name from v$datafile;
4. Identifiez le fichier de données qui constitue le tablespace SYSTEM (interrogez la vue
DBA_DATA_FILES)
SQL> select file_name from dba_data_files where tablespace_name='SYSTEM';
5. Quels sont le volume d’espace libre et le volume d’espace occupé dans la base
de données ? (Utilisez DBA_FREE_SPACE et DBA_SEGMENTS) :
SQL> select sum(bytes)/1024 "espace libre" from dba_free_space;
SQL> select sum(bytes)/1024 "espace occupé" from dba_segments;
Page 1|7
Atelier Administration BD
6. Affichez le nom et la date de création des utilisateurs de la base de données
(utilisez DBA_USERS)
SQL> select username, created from dba_users;
Les Fichiers de Contrôle
7. Où est placé le fichier de contrôle et quel est son nom ? (Interroger $CONTROLFILE)
SQL> select name from v$controlfile;
8. Tentez de démarrer la base de données sans fichiers de contrôle. (Vous pouvez le
simuler en les renommant) Que se passe-t-il ?
Indications :
Connectez-vous en tant que sys as sysdba
Arrêtez la BD avec l’option immediate
Déplacez les fichiers de contrôle vers un dossier de votre choix
Démarrez la BD
9. Pour remédier à cet incident, arrêtez la BD, recopiez des fichiers de contrôle déplacés
dans leur emplacement initial (oradata\orcl), puis démarrer la BD.
10. Ajoutez un troisième fichier de contrôle multiplexé et nommez le [Link], placez le
dans le répertoire de votre choix (on vous propose de le placer dans un sous dossier du
dossier oradata contenant les anciens fichiers de contrôle):
Avant d’arrêter la base de données, modifiez le fichier SPFILE (à l'aide de la
commande ALTER SYSTEM) pour ajouter le nouveau fichier de contrôle [Link],
son chemin est "ORACLE_BASE\ORADATA\ORCL\copiectl\[Link]" où ORCL
est le nom de votre BD (le SID) et ORACLE_BASE\ est votre ORACLE_BASE c'est-à-
dire le dossier ou se trouvent les fichiers constituant la base. Ce dossier n'est pas fixe
et dépond de votre installation. Pour le connaître :
i. Exécuter la commande regedit
ii. Aller dans HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_HOME_NAME
iii. Consulter la valeur de la clé ORACLE_BASE
Remarque :
Dans ce qui suit, ORACLE_BASE désigne le dossier contenant les fichiers de
la BD (par exemple, ici ORACLE_BASE est "d:\app\nadhem" et les fichiers de la
base de données'" se trouvent dans "d:\app\nadhem\oradata\orcl" où orcl est le nom de
la base de données (SID)), à remplacer par la valeur trouvée dans les registres
Page 2|7
Atelier Administration BD
Windows (regedit). Remplacez aussi ORCL par le nom de votre base de
données (le SID) spécifié lors de la création de la BD (DBA selon l'atelier 1)
SQL> alter system set control_files=
'ORACLE_BASE\ORADATA\ORCL\[Link]',
'ORACLE_BASE\FLASH_RECOVERY_AREA\ORCL\[Link]',
'ORACLE_BASE\ORADATA \ORCL\copiectl\[Link]' scope=spfile;
Arrêtez la base de données,
SQL> shutdown immediate;
Créez le répertoire ORACLE_BASE\oradata\orcl\copiectl (par exemple
ORACLE_BASE\oradata\orcl\copiectl), ici ORACLE_BASE désigne le
dossier contenant les fichiers de la base Oracle, à remplacer par la
valeur trouvée dans les registres Windows (regedit).
Copiez le fichier de contrôle existant dans le répertoire
ORACLE_BASE\oradata\orcl\[Link] dans le répertoire
ORACLE_BASE\oradata\orcl\copiectl, nommez la copie [Link]
Démarrer la base de données,
SQL> startup
Consultez la vue dynamique sur les performances V$CONTROLFILE ou
V$PARAMETER SQL> select name from v$controlfile;
SQL> select value from v$parameter where name='control_files';
Page 3|7
Atelier Administration BD
Les Fichiers Redo Log
11. Enumérez le nombre et l’emplacement des fichiers redo log existants et affichez le
nombre de groupes de fichiers redo log et de membres, que votre base de données
contient
a. Consultez la vue dynamiques sur les performances V$LOGFILE
SQL> select member from v$logfile;
b. Utilisez la vue dynamiques sur les performances V$LOG pour afficher
le nombre de groupes log file et le nombre de membres
SQL> select group#, members from v$log;
12. Dans quel mode de base de données, la vôtre est-elle configurée ? L’archivage est-il
activé ?
c. Consultez la vue V$DATABASE pour afficher le mode de base de
données, SQL> select log_mode from v$database;
d. Consultez la vue V$INSTANCE pour vérifier si l’archivage dynamique est activé
SQL> select archiver from v$instance;
13. Ajoutez un membre redo log à chaque groupe dans votre base de données, dans le même
répertoire, en utilisant les conventions d’appellation suivante : Si le groupe 1 possède un
fichier appelé [Link], ajouter un membre appelé [Link]
SQL> alter database add logfile member
'ORACLE_BASE\ORADATA\orcl\[Link]' to Group 1,
'ORACLE_BASE\ORADATA\orcl\[Link]' to Group 2,
'ORACLE_BASE\ORADATA\orcl\[Link]' to Group 3;
SQL> col member format a50
SQL> select group#, member from v$logfile order by 1;
14. Créez un nouveau groupe de fichier redo log dans le même répertoire
(ORACLE_BASE\ORADATA \orcl) :
e. Exécuter la commande ALTER DATABASE ADD LOGFILE pour créer un nouveau
groupe,
f. Consulter la vue dynamique de performance V$LOGFILE pour afficher les
nouveaux membres du nouveau groupe,
g. Consulter la vue dynamique de performance V$LOG pour afficher le nombre de
groupes de fichiers redo log et le nombre de membres par groupe
SQL> alter database add logfile group 4
('ORACLE_BASE\ORADATA\orcl\[Link]',
'ORACLE_BASE\ORADATA\orcl\[Link]') size 50M;
SQL> col group# for 99
Page 4|7
Atelier Administration BD
SQL> col member for a60
SQL> select group#, status, member from v$logfile order by 1;
SQL> select group#, members from v$log;
15. Déplacez les membres [Link] et [Link] dans le répertoire
'ORACLE_BASE\oradata\orcl\copielog'
a. Arrêtez la base de données,
b. Déplacez les membres [Link] et [Link] dans le répertoire
'ORACLE_BASE\oradata\orcl\copielog'
c. Démarrer la base de données à l’étape MOUNT,
d. Exécuter la commande ALTER DATABASE RENAME FILE pour renommer
les membres,
e. Consultez la vue dynamique de performance V$LOGFILE pour vérifier le résultat.
SQL> conn / as sysdba
SQL> shutdown immediate;
SQL> startup mount
SQL> alter database rename file
'ORACLE_BASE\oradata\orcl\[Link]',
'ORACLE_BASE\oradata\orcl\[Link]' to
'ORACLE_BASE\oradata\orcl\copielog\[Link]',
'ORACLE_BASE\oradata\orcl\copielog\[Link]';
SQL> select group#, status, member from v$logfile order by 1;
16. Supprimez le groupe de redo log 4
h. Exécutez la commande ALTER DATABASE DROP LOGFILE GROUP ,
i. Consultez la vue dynamique de performance V$LOGFILE pour vérifier le résultat.
SQL> alter database drop logfile group 4;
SQL> select group#, members from v$log;
17. Redimensionnez tous les fichiers redo log à 100M (les fichiers redo log ne peuvent pas
être redimensionnés, nous devons ajouter de nouveaux et supprimer les anciens)
SQL> alter database add logfile group 4
('ORACLE_BASE\oradata\orcl\[Link]',
'ORACLE_BASE\oradata\orcl\[Link]') size 100M REUSE,
group 5
Page 5|7
Atelier Administration BD
('ORACLE_BASE\oradata\orcl\[Link]',
'ORACLE_BASE\oradata\orcl\[Link]') size 100M,
group 6
('ORACLE_BASE\oradata\orcl\[Link]',
'ORACLE_BASE\oradata\orcl\[Link]') size 100M;
SQL> select group#, status from v$log;
SQL> alter database open;
SQL> alter system switch logfile;
SQL> select group#, status from v$log;
GROUP# STATUS
------ ----------------
1 ACTIVE
2 INACTIVE
3 INACTIVE
4 CURRENT
5 UNUSED
6 UNUSED
6 ligne(s) sélectionnée(s).
-- si vous avez des groupes actifs (nécessaire pour la récupération d’instance), forcez un checkpoint
pour appliquer les modifications qu’ils contiennent aux fichiers des données, et ce comms suit :
SQL> alter system checkpoint;
SQL> select group#, status from v$log;
SQL> select group#, status from v$log;
GROUP# STATUS
------ ----------------
1 INACTIVE
2 INACTIVE
3 INACTIVE
Page 6|7
Atelier Administration Bases de Données
4 CURRENT
5 INACTIVE
6 INACTIVE
SQL> alter database drop logfile group 1, group 2, group 3;
SQL> select group#, status from v$log;
Page 7|7