Oracle Database 10g : Administration Workshop II

Transcription

Oracle Database 10g : Administration Workshop II
________________
Annexe A
Exercices
________________
Exercice 19 : Configurer Recovery Manager
Contexte : Vous devez configurer les paramètres de sauvegarde et de récupération. Vous
utilisez pour cela RMAN et Enterprise Manager. Les paramètres ainsi définis fourniront la
configuration de toutes les activités de sauvegarde et de récupération ultérieures, sauf si vous
les modifiez. Cette configuration inclut la définition d'une stratégie de conservation, la
sauvegarde automatique du fichier de contrôle et des tablespaces exclus.
Remarque importante : En vue de préparer l'atelier qui vous est proposé à la fin du
cours, exécutez avant tout le script ci-dessous depuis une invite de commande XTerm afin
de créer une copie de vos fichiers de base de données :
$ $HOME/labs/B3/lab_19_copy.sh
1. Affectez la valeur "yyyy-mm-dd hh24:mi:ss" à la variable d'environnement
NLS_LANG dans la fenêtre XTerm, puis connectez-vous en tant qu'utilisateur SYS à votre
base de données (base de données cible) dans le mode par défaut NOCATALOG.
2. Utilisez la commande RMAN SHOW ALL afin de générer la liste des paramètres de
configuration RMAN.
3. Configurez RMAN afin de sauvegarder automatiquement le fichier de contrôle et le fichier
SPFILE lors de chaque sauvegarde de la base de données ou des fichiers de données.
Gardez la session RMAN ouverte. Vous la réutiliserez ultérieurement.
4. Utilisez la console Enterprise Manager (EM) Database Control afin de configurer la
stratégie de conservation des sauvegardes avec une période de récupération de 2 jours.
Connectez-vous à Database Control à l'aide du nom utilisateur SYS et du mot de passe
oracle, en tant que SYSDBA. S'il s'agit de votre première connexion à EM en tant
qu'utilisateur SYS, vous devez cliquer sur "I agree" dans l'écran License Agreement. L'URL
a le format suivant :
http://<machine_name>.us.oracle.com:1158/em
Le nom de l'ordinateur que vous utilisez apparaît dans le coin supérieur gauche de la fenêtre
Xterm que vous avez ouverte. Vous pouvez également consulter le fichier
$ORACLE_HOME/install/readme.txt et rechercher l'URL sous l'en-tête
"Enterprise Manager 10g Database Control URL".
5. Vérifiez le paramètre de stratégie de conservation des sauvegardes à l'aide de l'utilitaire
RMAN et de la commande SHOW.
6. Le développeur d'applications vous indique qu'un chargement quotidien de données aura
lieu à partir d'une source externe et qu'une zone intermédiaire doit être définie pour ces
données. Exécutez le script lab_19_06.sql afin de créer le tablespace STAGING pour
contenir les données. Configurez ensuite RMAN de façon à exclure ce tablespace des
tâches de sauvegarde. Ainsi, en cas de perte des données en question, vous n'avez pas
besoin de les récupérer. Il vous suffit de les recharger à partir de la source externe. Vérifiez
ensuite que le tablespace est exclu.
7. Quittez RMAN.
Oracle Database 10g: Administration Workshop II
A-2
Exercice 20 : Utiliser Recovery Manager
Contexte : Dans cet exercice, vous allez vous familiariser avec l'utilisation de RMAN pour
effectuer et gérer des sauvegardes. Vous devez placer la base de données en mode
ARCHIVELOG et effectuer une sauvegarde complète.
1. Avec SQL*Plus ou la console EM Database Control, vérifiez que la base de données est en
mode ARCHIVELOG. Si tel n'est pas le cas, modifiez la base de données afin d'activer
l'archivage des fichiers de journalisation en ligne (online). Pour qu'il soit possible de
modifier le mode ARCHIVELOG, il faut que la base de données ait le statut MOUNT .
Assurez-vous que la base de données est ouverte après cette étape.
Remarque : Si l'erreur ci-dessous s'affiche, cliquez sur OK, puis continuez de cliquer sur
Refresh. Elle finira par ne plus s'afficher.
2. Connectez-vous à la base de données à l'aide de RMAN en mode NOCATALOG. Vous ne
pouvez pas utiliser de session RMAN existante car la base de données a été redémarrée.
Assurez-vous tout d'abord que la variable d'environnement NLS_LANG de la fenêtre
XTerm est définie comme indiqué dans l'exercice 19.
3. Utilisez la commande RMAN REPORT afin d'afficher la structure de la base de données.
4. Affichez la liste de tous les jeux de sauvegarde de base de données qui existent
actuellement. Il ne doit y en avoir aucun.
5. Utilisez RMAN pour sauvegarder les fichiers de données appartenant aux tablespaces
EXAMPLE et USERS. Vérifiez les points suivants :
•
•
•
Le fichier de contrôle et le fichier de paramètres serveur actuels sont sauvegardés à
l'aide de cette sauvegarde.
Les sauvegardes effectuées sont placées dans la zone de récupération rapide.
Le format de la sauvegarde est un jeu de sauvegarde.
Oracle Database 10g: Administration Workshop II
A-3
Exercice 3 : Utiliser Recovery Manager (suite)
6. Créez une copie d'image de deux fichiers de données. Utilisez les informations suivantes :
•
Créez une copie d'image du tablespace SYSTEM dans la zone de récupération rapide,
avec la balise SYSTEM01.
•
Créez une copie d'image du tablespace SYSAUX dans le répertoire ORACLE_HOME et
nommez-la sysaux01.cpy, avec la balise SYSAUX01.
Quel est l'emplacement des deux fichiers de sauvegarde ?
_________________________________________
_________________________________________
Le fichier de sortie correspondant à la sauvegarde est mis en évidence dans la solution. Le
fichier que vous obtenez doit être identique.
7. Obtenez la liste de tous les fichiers de base de données qui n'ont pas été sauvegardés. Notez
que le tablespace STAGING est toujours exclu de la sauvegarde.
8. Effectuez une sauvegarde complète de la base de données, en incluant les fichiers de
journalisation archivés. Utilisez le moins d'espace possible pour stocker la sauvegarde.
Veillez à inclure le tablespace exclu, juste pour cette sauvegarde. Répertoriez ensuite les
fichiers devant être sauvegardés, ainsi que les sauvegardes de la base de données.
9. Configurez RMAN de façon à inclure le tablespace STAGING dans toutes les futures
sauvegardes.
Remarque : Si vous avez placé STAGING entre apostrophes dans la commande destinée à
exclure ce tablespace dans l'exercice 19, vous devez en faire autant pour ces étapes. Par
ailleurs, vous devez respecter la casse utilisée dans l'exercice 19.
10. Quittez RMAN.
11. Maintenant que vous disposez d'une sauvegarde complète de la base, supprimez les
sauvegardes de copie d'image créées pour les fichiers de données system01.dbf et
sysaux01.dbf. Cette opération permet de libérer de l'espace disque. Utilisez Enterprise
Manager pour cela.
Oracle Database 10g: Administration Workshop II
A-4
Exercice 21 : Effectuer une récupération suite à la perte de données non critiques
Contexte : Le tablespace TEMP par défaut est défini pour une base de données. Il s'agit du
tablespace dans lequel sont effectués les tris et autres opérations consommatrices de mémoire
en cas de besoin. Si un fichier de données du tablespace TEMP est perdu ou endommagé, il
suffit d'ajouter un nouveau fichier dans ce tablespace et de supprimer l'ancien. De même, si un
membre d'un groupe de fichiers de journalisation est perdu ou endommagé, il suffit de recréer
ce membre. Les exercices suivants portent sur la perte d'un fichier temporaire appartenant au
tablespace TEMP et d'un membre de fichier de journalisation en ligne. Notez que le mot de
passe pour l'utilisateur HR est hr.
1. Utilisez Enterprise Manager pour afficher tous les paramètres d'initialisation.
2. Exécutez le script lab_21_02.sh pour supprimer l'un des fichiers temporaires du
tablespace TEMP.
3. Dans Enterprise Manager, affichez de nouveau tous les paramètres d'initialisation. Vous
devez recevoir un message d'erreur indiquant que le fichier temp01.dbf est manquant.
Remarque : Si cette erreur n'apparaît pas, déconnectez-vous d'Enterprise Manager et
reconnectez-vous.
4. Récupérez le fichier manquant en créant un nouveau fichier temporaire dans le tablespace
TEMP et en supprimant le fichier manquant. En principe, la taille du nouveau fichier doit
être de 25 Mo et vous devez être autorisé à l'étendre à 100 Mo. Essayez de nouveau
d'afficher tous les paramètres d'initialisation comme indiqué à l'étape 3.
5. Effectuez une récupération suite à la perte d'un fichier de journalisation en ligne. Exécutez
tout d'abord le script lab_21_05_a.sql, qui crée un second fichier de journalisation
(fichier redo log) pour chaque groupe de fichiers de journalisation. Exécutez ensuite le
script lab_21_05_b.sh, qui supprime l'un des fichiers de journalisation en ligne.
Exécutez le script lab_21_05_c.sql pour générer l'erreur. Effectuez une récupération
pour compenser la perte du fichier manquant.
Oracle Database 10g: Administration Workshop II
A-5
Exercice 22 : Récupérer la base de données
Contexte : En tant que DBA, vous recevez l'appel d'utilisateurs indiquant que des données
incorrectes figurent dans l'application HR. Dans Payroll, la somme de tous les salaires est
supposée s'élever à 691 400 $. Elle est actuellement de 679 050 $. En outre, aucune
modification de département n'a eu lieu au cours des 60 derniers jours. Or, il apparaît que des
modifications ont été effectuées dans la table JOB_HISTORY aujourd'hui. Vous en concluez
que le traitement batch de réorganisation du personnel a dû être exécuté plus tôt que prévu.
Vous devez donc annuler les changements effectués dans les tables au cours de la période, y
compris ceux qui résultent de déclencheurs (triggers). Notez que le mot de passe pour
l'utilisateur HR est hr.
1. Afin de simuler le traitement batch exécuté de façon incorrecte, lancez le script
lab_22_01.sql.
2. Vérifiez que les informations relatives à la somme des salaires et à l'historique des travaux
sont conformes aux déclarations des utilisateurs.
3. L'annulation manuelle de ces modifications est trop complexe et source possible d'erreurs
en raison des tables et des déclencheurs impliqués. Vous décidez donc de procéder à une
récupération de la base de données entière jusqu'à un point dans le temps. Vous savez que
les premières modifications effectuées dans le traitement batch de réorganisation
concernent les modifications de département. Vous regardez donc l'heure à laquelle la
première modification a eu lieu dans la table JOB_HISTORY et décidez de restaurer la base
de données dans l'état où elle se trouvait une minute avant cette première modification.
Effectuez la restauration.
Notez la date et l'heure. __________________________________
4. Vérifiez que la base de données est bien restaurée jusqu'au point dans le temps où les
données HR ne présentent pas de modifications concernant la réorganisation.
5. Quittez SQL*Plus.
Oracle Database 10g: Administration Workshop II
A-6
________________
Annexe B
Solutions
________________
Solutions de l'exercice 19 : Configurer Recovery Manager
Contexte : Vous devez configurer les paramètres de sauvegarde et de récupération. Vous
utilisez pour cela RMAN et Enterprise Manager. Les paramètres ainsi définis fourniront la
configuration de toutes les activités de sauvegarde et de récupération ultérieures, sauf si vous
les modifiez. Cette configuration inclut la définition d'une stratégie de conservation, la
sauvegarde automatique du fichier de contrôle et des tablespaces exclus.
Remarque importante : En vue de préparer l'atelier qui vous est proposé à la fin du
cours, exécutez avant tout le script ci-dessous depuis une invite de commande XTerm afin
de créer une copie de vos fichiers de base de données :
$ $HOME/labs/B3/lab_19_copy.sh
1. Affectez la valeur "yyyy-mm-dd hh24:mi:ss" à la variable d'environnement
NLS_LANG dans la fenêtre XTerm, puis connectez-vous en tant qu'utilisateur SYS à votre
base de données (base de données cible) dans le mode par défaut NOCATALOG.
a. Cliquez deux fois sur l'icône XTerm sur le bureau.
b. Entrez la commande suivante dans la fenêtre XTerm :
$ export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
$ rman target / nocatalog
Recovery Manager: Release 10.2.0.1.0 - Production on Tue Dec 13 13:43:48
2005
Copyright (c) 1982, 2005, Oracle.
All rights reserved.
connected to target database: ORCL (DBID=1090770270)
using target database control file instead of recovery catalog
RMAN>
2. Utilisez la commande RMAN SHOW ALL afin de générer la liste des paramètres de
configuration RMAN.
Oracle Database 10g : Administration Workshop II B-2
Solutions de l'exercice 19 : Configurer Recovery Manager (suite)
a. Entrez la commande suivante à l'invite RMAN :
RMAN> show all;
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; #
default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; #
default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO
'/u01/app/oracle/product/10.2.0/db_1/dbs/snapcf_orcl.f'; # default
3. Configurez RMAN afin de sauvegarder automatiquement le fichier de contrôle et le fichier
SPFILE lors de chaque sauvegarde de la base de données ou des fichiers de données.
a. Entrez la commande suivante dans la session RMAN :
RMAN> configure controlfile autobackup on;
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored
RMAN>
b. Gardez la session RMAN ouverte. Vous la réutiliserez ultérieurement.
4. Utilisez la console Enterprise Manager Database Control afin de configurer la stratégie de
conservation des sauvegardes avec une période de récupération de deux jours. Connectezvous à Database Control à l'aide du nom utilisateur SYS, en tant que SYSDBA. S'il s'agit de
votre première connexion à EM en tant qu'utilisateur SYS, vous devez cliquer sur "I agree"
dans l'écran License Agreement.
a. Cliquez deux fois sur l'icône Mozilla sur le bureau.
b. A l'invite de la fenêtre Select User Profile, mettez en surbrillance oracle, puis cliquez
sur Start Mozilla.
Oracle Database 10g : Administration Workshop II B-3
Solutions de l'exercice 19 : Configurer Recovery Manager (suite)
c. Accédez à l'URL de Database Control. L'URL a le format suivant :
http://<machine_name>.us.oracle.com:1158/em
Le nom de l'ordinateur que vous utilisez apparaît dans le coin supérieur gauche de la fenêtre
Xterm que vous avez ouverte. Vous pouvez également consulter le fichier
$ORACLE_HOME/install/readme.txt et rechercher l'URL sous l'en-tête Enterprise
Manager 10g Database Control URL.
d. Entrez le nom utilisateur SYS, le mot de passe oracle, puis sélectionnez SYSDBA
dans la liste Connect As.
e. Si la page License Agreement apparaît, cliquez sur "I agree" au bas de l'écran.
f. Cliquez sur l'onglet Maintenance.
g. Cliquez sur le lien Settings dans la région Backup/Recovery Settings.
h. Cliquez sur l'onglet Policy.
i.
Faites défiler vers le bas jusqu'à la région Retention Policy.
Oracle Database 10g : Administration Workshop II B-4
Solutions de l'exercice 19 : Configurer Recovery Manager (suite)
j.
Sélectionnez "Retain backups that are necessary for a recovery to any time within the
specified number of days…" et indiquez une valeur de 2. Pour enregistrer les détails
modifiés de "Retention Policy", entrez les informations d'identification et de connexion
(credentials) à l'hôte oracle/oracle, sélectionnez "Save as Preferred Credential",
puis cliquez sur OK.
5. Vérifiez le paramètre de stratégie de conservation des sauvegardes à l'aide de l'utilitaire
RMAN et de la commande SHOW.
a. Utilisez la session RMAN que vous avez laissée ouverte à l'étape 3, puis entrez la
commande suivante :
RMAN> show retention policy;
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;
RMAN>
6. Le développeur d'applications vous indique qu'un chargement quotidien de données aura
lieu à partir d'une source externe et qu'une zone intermédiaire doit être définie pour ces
données. Exécutez le script lab_02_06.sql afin de créer le tablespace STAGING pour
contenir les données. Configurez ensuite RMAN de façon à exclure ce tablespace des
tâches de sauvegarde. Ainsi, en cas de perte des données en question, vous n'avez pas
besoin de les récupérer. Il vous suffit de les recharger à partir de la source externe. Vérifiez
ensuite que le tablespace est exclu.
Oracle Database 10g : Administration Workshop II B-5
Solutions de l'exercice 19 : Configurer Recovery Manager (suite)
a. Ouvrez une nouvelle fenêtre Xterm en cliquant deux fois sur l'icône XTerm, puis entrez
la commande ci-dessous pour exécuter le script lab_19_06.sql :
$ cd $HOME/B3/labs
$ sqlplus system/oracle @lab_19_06.sql
SQL>
SQL> CREATE SMALLFILE TABLESPACE "STAGING" DATAFILE
'/u01/app/oracle/oradata/orcl/staging01.dbf' SIZE 3M REUSE NOLOGGING
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
2 /
Tablespace created.
SQL> create table hr.staging_tab tablespace staging as select * from
all_objects where rownum < 11
2 /
Table created.
SQL> set echo off
STAGING tablespace created and populated with one table.
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release
10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
$
b. Revenez à la session RMAN, et entrez la commande suivante :
RMAN> CONFIGURE EXCLUDE FOR TABLESPACE STAGING;
tablespace STAGING will be excluded from future whole database backups
new RMAN configuration parameters are successfully stored
RMAN>
c. Entrez la commande suivante à l'invite RMAN :
RMAN> show exclude;
RMAN configuration parameters are:
CONFIGURE EXCLUDE FOR TABLESPACE 'STAGING';
RMAN>
7. Quittez RMAN.
RMAN> exit
Oracle Database 10g : Administration Workshop II B-6
Solutions de l'exercice 20 : Utiliser Recovery Manager
Contexte : Dans cet exercice, vous allez vous familiariser avec l'utilisation de RMAN pour
effectuer et gérer des sauvegardes. Vous devez placer la base de données en mode
ARCHIVELOG et effectuer une sauvegarde complète.
1. Avec SQL*Plus ou la console EM Database Control, vérifiez que la base de données est en
mode ARCHIVELOG. Si tel n'est pas le cas, modifiez la base de données afin d'activer
l'archivage des fichiers de journalisation en ligne (online). Pour qu'il soit possible de
modifier le mode ARCHIVELOG, il faut que la base de données ait le statut MOUNT .
Remarque : Les étapes (a) à (f) concernent l'utilisation d'Enterprise Manager. Les étapes
(g) à (k) concernent l'utilisation de SQL*Plus. Vous pouvez effectuer l'une ou l'autre série
d'étapes.
a. Pour l'utilisation d'EM, vérifiez que vous êtes toujours connecté en tant qu'utilisateur
SYS, puis accédez à la page Maintenance d'EM. Cliquez sur Recovery Settings dans la
région Backup/Recovery Settings.
b. Vérifiez si le mode ARCHIVELOG est sélectionné dans la région Media Recovery. S'il
ne l'est pas, sélectionnez-le et cliquez sur Apply.
c. Cliquez sur Yes dans la page Confirmation pour accepter que la base de données
redémarre.
d. Dans la page Credentials, entrez les informations d'identification et de connexion
(credentials), c'est-à-dire le nom utilisateur oracle et le mot de passe oracle. Si
vous avez précédemment enregistré ces données, elles sont déjà affichées. Cliquez
ensuite sur OK.
e. Cliquez sur Yes dans la page "Restart Database:Confirmation". Cliquez ensuite sur
Refresh, jusqu'à ce que la page Login d'EM apparaisse. Cela peut prendre une ou deux
minutes.
Remarque : Si l'erreur ci-dessous s'affiche, cliquez sur OK, puis continuez de cliquer sur
Refresh. Elle finira par ne plus s'afficher.
f.
Dans la page Login, connectez-vous en tant qu'utilisateur SYS (via le mot de passe
oracle, connecté en tant que SYSDBA).
Oracle Database 10g : Administration Workshop II B-7
Solutions de l'exercice 20 : Utiliser Recovery Manager (suite)
g. Si vous utilisez SQL*Plus, entrez la commande suivante pour vous connecter :
$ sqlplus / as sysdba
h. Entrez la commande suivante pour déterminer le mode d'archivage actuel de la base de
données :
SQL> ARCHIVE LOG LIST
i.
Notez que la base de données ne procède pas actuellement à l'archivage. Entrez la
commande suivante pour arrêter la base et préparer le passage au mode ARCHIVELOG :
SQL> SHUTDOWN IMMEDIATE
j.
Montez la base de données en entrant la commande suivante :
SQL> STARTUP MOUNT
k. Placez la base de données en mode ARCHIVELOG en entrant la commande suivante :
SQL> ALTER DATABASE ARCHIVELOG;
l.
Vérifiez la configuration du mode ARCHIVELOG en entrant la commande suivante :
SQL> ARCHIVE LOG LIST
Oracle Database 10g : Administration Workshop II B-8
Solutions de l'exercice 20 : Utiliser Recovery Manager (suite)
m. Ouvrez la base de données en entrant la commande suivante :
SQL> ALTER DATABASE OPEN;
2. Connectez-vous à la base de données à l'aide de RMAN en mode NOCATALOG. Vous ne
pouvez pas utiliser de session RMAN existante car la base de données a été redémarrée.
Assurez-vous tout d'abord que la variable d'environnement NLS_LANG de la fenêtre
XTerm est définie comme indiqué dans l'exercice 19.
a. Entrez la commande suivante à l'invite XTerm :
$ export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
$ rman target / NOCATALOG
3. Utilisez la commande RMAN REPORT afin d'afficher la structure de la base de données.
a. Entrez la commande suivante à l'invite RMAN :
RMAN> REPORT SCHEMA;
Report of database schema
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs
---- -------- ---------- ------1
490
SYSTEM
***
2
50
UNDOTBS1
***
3
270
SYSAUX
***
4
5
USERS
***
5
100
EXAMPLE
***
6
3
STAGING
***
Datafile Name
-----------------------/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/orcl/example01.dbf
/u01/app/oracle/oradata/orcl/staging01.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- ---------- ----------- -------------------1
25
TEMP
32767
/u01/app/oracle/oradata/orcl/temp01.dbf
RMAN>
4. Affichez la liste de tous les jeux de sauvegarde de base de données qui existent
actuellement. Il ne doit y en avoir aucun.
a. Entrez la commande suivante à l'invite RMAN :
RMAN> LIST BACKUP OF DATABASE;
RMAN>
Oracle Database 10g : Administration Workshop II B-9
Solutions de l'exercice 20 : Utiliser Recovery Manager (suite)
5. Utilisez RMAN pour sauvegarder les fichiers de données appartenant aux tablespaces
EXAMPLE et USERS. Vérifiez les points suivants :
•
•
•
Le fichier de contrôle et le fichier de paramètres serveur actuels sont sauvegardés à
l'aide de cette sauvegarde.
Les sauvegardes effectuées sont placées dans la zone de récupération rapide.
Le format de la sauvegarde est un jeu de sauvegarde.
a. Entrez la commande suivante à l'invite RMAN :
RMAN> BACKUP AS BACKUPSET TABLESPACE users, example;
Voici le résultat de cette commande :
RMAN> BACKUP AS BACKUPSET TABLESPACE users, example;
Starting backup at 2005-12-14 05:16:03
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=132 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00005 name=/u01/app/oracle/oradata/orcl/example01.dbf
input datafile fno=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf
channel ORA_DISK_1: starting piece 1 at 2005-12-14 05:16:05
channel ORA_DISK_1: finished piece 1 at 2005-12-14 05:16:12
piece
handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2005_12_14/o1_
mf_nnndf_TAG20051214T051604_1t06ro3k_.bkp tag=TAG20051214T051604
comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:08
Finished backup at 2005-12-14 05:16:12
Starting Control File and SPFILE Autobackup at 2005-12-14 05:16:12
piece
handle=/u01/app/oracle/flash_recovery_area/ORCL/autobackup/2005_12_14/o1
_mf_s_576998172_1t06rwqq_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 2005-12-14 05:16:15
RMAN>
b. Notez la sauvegarde automatique du fichier de contrôle et du fichier SPFILE dans le
résultat. Notez également que le jeu de sauvegarde est placé dans la zone de
récupération rapide.
Oracle Database 10g : Administration Workshop II B-10
Solutions de l'exercice 20 : Utiliser Recovery Manager (suite)
6. Créez une copie d'image de deux fichiers de données. Utilisez les informations suivantes :
•
Créez une copie d'image du tablespace SYSTEM dans la zone de récupération rapide,
avec la balise SYSTEM01.
•
Créez une copie d'image du tablespace SYSAUX dans le répertoire ORACLE_HOME et
nommez-la sysaux01.cpy, avec la balise SYSAUX01.
Quel est l'emplacement des deux fichiers de sauvegarde ?
a. Entrez la commande ci-après à l'invite RMAN. En l'absence du mot-clé FORMAT, le
fichier est automatiquement placé dans la zone de récupération rapide.
RMAN> BACKUP AS COPY TABLESPACE SYSTEM TAG=SYSTEM01;
Voici le résultat de cette commande :
RMAN> BACKUP AS COPY TABLESPACE SYSTEM TAG=SYSTEM01;
Starting backup at 2005-12-14 05:27:35
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile fno=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf
output
filename=/u01/app/oracle/flash_recovery_area/ORCL/datafile/o1_mf_system_
1t07g7kj_.dbf tag=SYSTEM01 recid=2 stamp=576998914
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:06
Finished backup at 2005-12-14 05:28:41
Starting Control File and SPFILE Autobackup at 2005-12-14 05:28:42
piece
handle=/u01/app/oracle/flash_recovery_area/ORCL/autobackup/2005_12_14/o1
_mf_s_576998922_1t07jcsf_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 2005-12-14 05:28:45
RMAN>
Le fichier de sortie correspondant à la sauvegarde est mis en évidence dans le résultat. Le
fichier que vous obtenez est probablement différent.
b. Entrez la commande ci-après à l'invite RMAN. Lorsque le nom du fichier est suivi du
mot-clé FORMAT, le fichier est automatiquement placé dans le répertoire
$ORACLE_HOME/dbs.
RMAN> BACKUP AS COPY
2> FORMAT 'sysaux01.cpy'
3> TABLESPACE SYSAUX
4> TAG=SYSAUX01;
Oracle Database 10g : Administration Workshop II B-11
Solutions de l'exercice 20 : Utiliser Recovery Manager (suite)
Voici le résultat de cette commande :
RMAN> BACKUP AS COPY FORMAT 'sysaux01.cpy' TABLESPACE SYSAUX
TAG=SYSAUX01;
Starting backup at 2005-12-14 05:34:47
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile fno=00003 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf
output filename=/u01/app/oracle/product/10.2.0/db_1/dbs/sysaux01.cpy
tag=SYSAUX01 recid=3 stamp=576999322
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:35
Finished backup at 2005-12-14 05:35:23
Starting Control File and SPFILE Autobackup at 2005-12-14 05:35:23
piece
handle=/u01/app/oracle/flash_recovery_area/ORCL/autobackup/2005_12_14/o1
_mf_s_576999323_1t07wwt5_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 2005-12-14 05:35:26
RMAN>
Le fichier de sortie correspondant à la sauvegarde est mis en évidence dans le résultat. Le
fichier que vous obtenez doit être identique.
7. Obtenez la liste de tous les fichiers de base de données qui n'ont pas été sauvegardés. Notez
que le tablespace STAGING est toujours exclu de la sauvegarde.
a. Entrez la commande suivante à l'invite RMAN :
RMAN> REPORT NEED BACKUP;
RMAN retention policy will be applied to the command
RMAN retention policy is set to recovery window of 2 days
Report of files that must be backed up to satisfy 2 days recovery window
File Days Name
---- ----- ----------------------------------------------------2
167
/u01/app/oracle/oradata/orcl/undotbs01.dbf
file 6 is excluded from whole database backup
RMAN>
8. Effectuez une sauvegarde complète de la base de données, en incluant les fichiers de
journalisation archivés. Utilisez le moins d'espace possible pour stocker la sauvegarde.
Veillez à inclure le tablespace exclu, juste pour cette sauvegarde. Répertoriez ensuite les
fichiers devant être sauvegardés, ainsi que les sauvegardes de la base de données.
a. Entrez la commande suivante à l'invite RMAN :
RMAN> BACKUP NOEXCLUDE AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;
Oracle Database 10g : Administration Workshop II B-12
Solutions de l'exercice 20 : Utiliser Recovery Manager (suite)
Voici le résultat de cette commande :
RMAN> BACKUP NOEXCLUDE AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;
Starting backup at 2005-12-14 06:06:54
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed archive log backupset
channel ORA_DISK_1: specifying archive log(s) in backup set
input archive log thread=1 sequence=12 recid=1 stamp=577001221
channel ORA_DISK_1: starting piece 1 at 2005-12-14 06:07:03
channel ORA_DISK_1: finished piece 1 at 2005-12-14 06:07:10
piece
handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2005_12_14/o1_
mf_annnn_TAG20051214T060701_1t09r7kk_.bkp tag=TAG20051214T060701
comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:08
Finished backup at 2005-12-14 06:07:10
Starting backup at 2005-12-14 06:07:10
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf
input datafile fno=00003 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf
input datafile fno=00005 name=/u01/app/oracle/oradata/orcl/example01.dbf
input datafile fno=00002 name=/u01/app/oracle/oradata/orcl/undotbs01.dbf
input datafile fno=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf
input datafile fno=00006 name=/u01/app/oracle/oradata/orcl/staging01.dbf
channel ORA_DISK_1: starting piece 1 at 2005-12-14 06:07:11
channel ORA_DISK_1: finished piece 1 at 2005-12-14 06:09:27
piece
handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2005_12_14/o1_
mf_nnndf_TAG20051214T060710_1t09rj5m_.bkp tag=TAG20051214T060710
comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:02:16
Finished backup at 2005-12-14 06:09:28
Starting backup at 2005-12-14 06:09:28
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed archive log backupset
channel ORA_DISK_1: specifying archive log(s) in backup set
input archive log thread=1 sequence=13 recid=2 stamp=577001370
channel ORA_DISK_1: starting piece 1 at 2005-12-14 06:09:33
channel ORA_DISK_1: finished piece 1 at 2005-12-14 06:09:34
piece
handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2005_12_14/o1_
mf_annnn_TAG20051214T060932_1t09wxy0_.bkp tag=TAG20051214T060932
comment=NONE
Oracle Database 10g : Administration Workshop II B-13
Solutions de l'exercice 20 : Utiliser Recovery Manager (suite)
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
Finished backup at 2005-12-14 06:09:34
Starting Control File and SPFILE Autobackup at 2005-12-14 06:09:35
piece
handle=/u01/app/oracle/flash_recovery_area/ORCL/autobackup/2005_12_14/o1
_mf_s_577001376_1t09x2qc_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 2005-12-14 06:09:43
b. Entrez la commande suivante à l'invite RMAN :
RMAN> REPORT NEED BACKUP;
Voici le résultat de cette commande :
RMAN> REPORT NEED BACKUP;
RMAN retention policy will be applied to the command
RMAN retention policy is set to recovery window of 2 days
Report of files that must be backed up to satisfy 2 days recovery window
File Days Name
---- ----- ----------------------------------------------------file 6 is excluded from whole database backup
RMAN>
c. Entrez la commande suivante à l'invite RMAN :
RMAN> LIST BACKUP OF DATABASE;
Oracle Database 10g : Administration Workshop II B-14
Solutions de l'exercice 20 : Utiliser Recovery Manager (suite)
Voici le résultat de cette commande :
RMAN> LIST BACKUP OF DATABASE;
List of Backup Sets
===================
BS Key Type LV Size
Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ------------------3
Full
60.12M
DISK
00:00:07
2005-12-14 05:16:11
BP Key: 3
Status: AVAILABLE Compressed: NO Tag:
TAG20051214T051604
Piece Name:
/u01/app/oracle/flash_recovery_area/ORCL/backupset/2005_12_14/o1_mf_nnnd
f_TAG20051214T051604_1t06ro3k_.bkp
List of Datafiles in backup set 3
File LV Type Ckp SCN
Ckp Time
Name
---- -- ---- ---------- ------------------- ---4
Full 697766
2005-12-14 05:16:05
/u01/app/oracle/oradata/orcl/users01.dbf
5
Full 697766
2005-12-14 05:16:05
/u01/app/oracle/oradata/orcl/example01.dbf
BS Key Type LV Size
Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ------------------8
Full
122.48M
DISK
00:02:05
2005-12-14 06:09:16
BP Key: 8
Status: AVAILABLE Compressed: YES Tag:
TAG20051214T060710
Piece Name:
/u01/app/oracle/flash_recovery_area/ORCL/backupset/2005_12_14/o1_mf_nnnd
f_TAG20051214T060710_1t09rj5m_.bkp
List of Datafiles in backup set 8
File LV Type Ckp SCN
Ckp Time
Name
---- -- ---- ---------- ------------------- ---1
Full 700545
2005-12-14 06:07:11
/u01/app/oracle/oradata/orcl/system01.dbf
2
Full 700545
2005-12-14 06:07:11
/u01/app/oracle/oradata/orcl/undotbs01.dbf
3
Full 700545
2005-12-14 06:07:11
/u01/app/oracle/oradata/orcl/sysaux01.dbf
4
Full 700545
2005-12-14 06:07:11
/u01/app/oracle/oradata/orcl/users01.dbf
5
Full 700545
2005-12-14 06:07:11
/u01/app/oracle/oradata/orcl/example01.dbf
6
Full 700545
2005-12-14 06:07:11
/u01/app/oracle/oradata/orcl/staging01.dbf
RMAN>
Oracle Database 10g : Administration Workshop II B-15
Solutions de l'exercice 20 : Utiliser Recovery Manager (suite)
9. Configurez RMAN de façon à inclure le tablespace STAGING dans toutes les futures
sauvegardes.
a. Entrez la commande suivante à l'invite RMAN :
RMAN> CONFIGURE EXCLUDE FOR TABLESPACE STAGING CLEAR;
tablespace STAGING will be included in future whole database backups
old RMAN configuration parameters are successfully deleted
RMAN>
Remarque : Si vous avez placé STAGING entre apostrophes dans la commande destinée à
exclure ce tablespace dans l'exercice 19, vous devez en faire autant pour ces étapes. Par
ailleurs, vous devez respecter la casse utilisée dans l'exercice 19.
10. Quittez RMAN.
a. Entrez la commande suivante à l'invite RMAN :
RMAN> exit
11. Maintenant que vous disposez d'une sauvegarde complète de la base, supprimez les
sauvegardes de copie d'image créées pour les fichiers de données system01.dbf et
sysaux01.dbf. Cette opération permet de libérer de l'espace disque. Utilisez Enterprise
Manager pour cela.
a. Une fois connecté à Enterprise Manager en tant qu'utilisateur SYS (avec le mot de
passe oracle et connecté en tant que SYSDBA), cliquez sur l'onglet Maintenance dans
la page Database. Cliquez ensuite sur Manage Current Backups dans la région
Backup/Recovery.
b. Cliquez sur l'onglet Image Copies.
Oracle Database 10g : Administration Workshop II B-16
Solutions de l'exercice 20 : Utiliser Recovery Manager (suite)
c. Sélectionnez les deux copies d'image correspondant aux balises SYSAUX01 et
SYSTEM01, et cliquez sur Delete.
d. Cliquez sur Yes dans la page Confirmation. Attendez ensuite le message de
confirmation de la suppression.
Oracle Database 10g : Administration Workshop II B-17
Solutions de l'exercice 21 : Effectuer une récupération suite à la perte de données
non critiques
Contexte : Le tablespace TEMP par défaut est défini pour une base de données. Il s'agit du
tablespace dans lequel sont effectués les tris et autres opérations consommatrices de mémoire
en cas de besoin. Si un fichier de données du tablespace TEMP est perdu ou endommagé, il
suffit d'ajouter un nouveau fichier dans ce tablespace et de supprimer l'ancien. De même, si un
membre d'un groupe de fichiers de journalisation est perdu ou endommagé, il suffit de recréer
ce membre. Les exercices suivants portent sur la perte d'un fichier temporaire appartenant au
tablespace TEMP et d'un membre de fichier de journalisation en ligne. Notez que le mot de
passe pour l'utilisateur HR est hr.
1. Utilisez Enterprise Manager pour afficher tous les paramètres d'initialisation.
a. Dans EM, cliquez sur All Initialization Parameters dans l'onglet Administration. Tous
les paramètres s'affichent.
2. Exécutez le script lab_21_02.sh pour supprimer l'un des fichiers temporaires du
tablespace TEMP.
a. Entrez la commande suivante dans la fenêtre Xterm, à l'invite Linux :
$ cd $HOME/B3/labs
$ ./lab_21_02.sh
3. Dans Enterprise Manager, affichez de nouveau tous les paramètres d'initialisation. Vous
devez recevoir un message d'erreur indiquant que le fichier temp01.dbf est manquant.
a. Dans EM, cliquez sur All Initialization Parameters dans l'onglet Administration.
L'erreur ci-après s'affiche.
Oracle Database 10g : Administration Workshop II B-18
Solutions de l'exercice 21 : Effectuer une récupération suite à la perte de données
non critiques (suite)
Remarque : Si cette erreur n'apparaît pas, déconnectez-vous d'Enterprise Manager et
reconnectez-vous. Pour ce faire, cliquez sur Logout dans le coin supérieur droit de l'écran.
Connectez-vous ensuite comme indiqué à l'étape 2-4 (d). Réessayez alors l'étape qui
précède.
4. Récupérez le fichier manquant en créant un nouveau fichier temporaire dans le tablespace
TEMP et en supprimant le fichier manquant. En principe, la taille du nouveau fichier doit
être de 25 Mo et vous devez être autorisé à l'étendre à 100 Mo. Essayez de nouveau
d'afficher tous les paramètres d'initialisation comme indiqué à l'étape 3.
a. Connectez-vous à SQL*Plus en tant qu'utilisateur SYS.
$ sqlplus / as sysdba
b. Créez un nouveau fichier temporaire dans le tablespace TEMP et nommez-le
'/u01/app/oracle/oradata/orcl/temp02.dbf'. Entrez pour cela
l'instruction suivante à l'invite SQL :
SQL> ALTER TABLESPACE "TEMP" ADD TEMPFILE
'/u01/app/oracle/oradata/orcl/temp02.dbf' SIZE 25M AUTOEXTEND ON NEXT 5M
MAXSIZE 100M;
Tablespace altered.
c. Supprimez le fichier temporaire manquant en entrant la commande suivante :
SQL> ALTER TABLESPACE TEMP DROP TEMPFILE
'/u01/app/oracle/oradata/orcl/temp01.dbf';
Tablespace altered.
d. Vérifiez que la récupération a eu lieu dans le tablespace TEMP en affichant à nouveau
tous les paramètres d'initialisation via Enterprise Manager. Reportez-vous à l'étape 3.
Cette-fois, l'opération doit réussir.
5. Effectuez une récupération suite à la perte d'un fichier de journalisation en ligne. Exécutez
tout d'abord le script lab_21_05_a.sql, qui crée un second fichier de journalisation
(fichier redo log) pour chaque groupe de fichiers de journalisation. Exécutez ensuite le
script lab_21_05_b.sh, qui supprime l'un des fichiers de journalisation en ligne.
Exécutez le script lab_21_05_c.sql pour générer l'erreur. Effectuez une récupération
pour compenser la perte du fichier manquant.
a. Entrez la commande suivante à l'invite Linux :
$ sqlplus / as sysdba @lab_21_05_a.sql
Oracle Database 10g : Administration Workshop II B-19
Solutions de l'exercice 21 : Effectuer une récupération suite à la perte de données
non critiques (suite)
Voici le résultat de cette commande :
$ sqlplus / as sysdba @lab_21_05_a.sql
SQL>
SQL> ALTER DATABASE ADD LOGFILE MEMBER
2 '/u01/app/oracle/oradata/orcl/redo01b.log'
3 TO GROUP 1;
Database altered.
SQL>
SQL> ALTER DATABASE ADD LOGFILE MEMBER
2 '/u01/app/oracle/oradata/orcl/redo02b.log'
3 TO GROUP 2;
Database altered.
SQL>
SQL> ALTER DATABASE ADD LOGFILE MEMBER
2 '/u01/app/oracle/oradata/orcl/redo03b.log'
3 TO GROUP 3;
Database altered.
SQL>
b. Pour supprimer l'un des fichiers de journalisation en ligne, exécutez le script
lab_21_05_b.sh en entrant la commande suivante à l'invite Linux :
$ ./lab_21_05_b.sh
Voici le résultat de cette commande :
$ ./lab_21_05_b.sh
rm '/u01/app/oracle/oradata/orcl/redo02b.log'
redo file deleted.
c. Générez l'erreur en entrant la commande suivante à l'invite Linux :
$ sqlplus /
as sysdba @lab_21_05_c.sql
Oracle Database 10g : Administration Workshop II B-20
Solutions de l'exercice 21 : Effectuer une récupération suite à la perte de données
non critiques (suite)
Voici le résultat de cette commande. Notez l'erreur dans le fichier d'alertes :
$ sqlplus /
as sysdba @lab_21_05_c.sql
SQL> alter system switch logfile;
System altered.
SQL> alter system switch logfile;
System altered.
SQL> alter system switch logfile;
System altered.
SQL> host tail -60 $ORACLE_BASE/admin/orcl/bdump/alert_orcl.log
'/u01/app/oracle/oradata/orcl/redo03b.log'
TO GROUP 3
Wed Dec 14 08:19:04 2005
Thread 1 cannot allocate new log, sequence 15
Private strand flush not complete
Current log# 1 seq# 14 mem# 0: /u01/app/oracle/oradata/orcl/redo01.log
Wed Dec 14 08:19:09 2005
Errors in file /u01/app/oracle/admin/orcl/bdump/orcl_lgwr_20401.trc:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1:
'/u01/app/oracle/oradata/orcl/redo02b.log'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
.
.
.
d. Recréez le fichier de journalisation en entrant la commande suivante dans la session
SQL*Plus, toujours connecté en tant qu'utilisateur SYS (comme pour les étapes
précédentes) :
SQL> ALTER DATABASE DROP LOGFILE MEMBER
> '/u01/app/oracle/oradata/orcl/redo02b.log'; SQL> ALTER DATABASE ADD LOGFILE MEMBER
> '/u01/app/oracle/oradata/orcl/redo02b.log'
> TO GROUP 2; e. Réexécutez le script lab_21_05_c.sql pour vérifier que l'erreur n'apparaît plus
dans le fichier d'alertes.
$ sqlplus /
as sysdba @lab_21_05_c.sql
Oracle Database 10g : Administration Workshop II B-21
Solutions de l'exercice 21 : Effectuer une récupération suite à la perte de données
non critiques (suite)
Voici le résultat de cette commande. Notez que le changement de fichier de journalisation
(redo log) a lieu sans erreur cette fois :
.
.
.
Current log# 1 seq# 17 mem# 0: /u01/app/oracle/oradata/orcl/redo01.log
Current log# 1 seq# 17 mem# 1:
/u01/app/oracle/oradata/orcl/redo01b.log
Thread 1 advanced to log sequence 18
Current log# 2 seq# 18 mem# 0: /u01/app/oracle/oradata/orcl/redo02.log
Current log# 2 seq# 18 mem# 1:
/u01/app/oracle/oradata/orcl/redo02b.log
Thread 1 advanced to log sequence 19
Current log# 3 seq# 19 mem# 0: /u01/app/oracle/oradata/orcl/redo03.log
Current log# 3 seq# 19 mem# 1:
/u01/app/oracle/oradata/orcl/redo03b.log
Thread 1 cannot allocate new log, sequence 20
Checkpoint not complete
Current log# 3 seq# 19 mem# 0: /u01/app/oracle/oradata/orcl/redo03.log
Current log# 3 seq# 19 mem# 1:
/u01/app/oracle/oradata/orcl/redo03b.log
Thread 1 advanced to log sequence 20
Current log# 1 seq# 20 mem# 0: /u01/app/oracle/oradata/orcl/redo01.log
Current log# 1 seq# 20 mem# 1:
/u01/app/oracle/oradata/orcl/redo01b.log
SQL>
Oracle Database 10g : Administration Workshop II B-22
Solutions de l'exercice 22 : Récupérer la base de données
Contexte : En tant que DBA, vous recevez l'appel d'utilisateurs indiquant que des données
incorrectes figurent dans l'application HR. Dans Payroll, la somme de tous les salaires est
supposée s'élever à 691 400 $. Elle est actuellement de 679 050 $. En outre, aucune
modification de département n'a eu lieu au cours des 60 derniers jours. Or, il apparaît que des
modifications ont été effectuées dans la table JOB_HISTORY aujourd'hui. Vous en concluez
que le traitement batch de réorganisation du personnel a dû être exécuté plus tôt que prévu.
Vous devez donc annuler les changements effectués dans les tables au cours de la période, y
compris ceux qui résultent de déclencheurs (triggers). Notez que le mot de passe pour
l'utilisateur HR est hr.
1. Afin de simuler le traitement batch exécuté de façon incorrecte, lancez le script
lab_22_01.sql.
a. Entrez la commande suivante à l'invite Linux :
$ sqlplus hr/hr @lab_22_01.sql
Voici le résultat de cette commande :
$ sqlplus hr/hr @lab_22_01.sql
SQL>
SQL> update employees set department_id = 90 where job_id = 'IT_PROG';
5 rows updated.
SQL>
SQL> update employees e set salary = least(e.salary,(select (min_salary
+ max_salary)/2 * 1.10 from jobs j where j.job_id = e.job_id)) where
job_id not like 'AD_%';
103 rows updated.
SQL>
SQL> commit;
Commit complete.
SQL>
2. Vérifiez que les informations relatives à la somme des salaires et à l'historique des travaux
sont conformes aux déclarations des utilisateurs.
a. Entrez l'instruction suivante à l'invite SQL*Plus, en étant connecté en tant qu'utilisateur
HR.
SQL> select sum(salary) from employees;
Oracle Database 10g : Administration Workshop II B-23
Solutions de l'exercice 22 : Récupérer la base de données (suite)
Voici le résultat de cette instruction :
SQL> select sum(salary) from employees;
SUM(SALARY)
----------679050
Le salaire total s'élève à 679050 au lieu de 691400.
b. Entrez l'instruction suivante à l'invite SQL :
SQL> select count(*) from job_history where end_date > sysdate – 60;
Voici le résultat de cette instruction :
SQL> select count(*) from job_history where end_date > sysdate - 60;
COUNT(*)
---------5
Des modifications de département ont bien eu lieu au cours des 60 derniers jours,
conformément aux déclarations des utilisateurs.
3. L'annulation manuelle de ces modifications est trop complexe et source possible d'erreurs
en raison des tables et des déclencheurs impliqués. Vous décidez donc de procéder à une
récupération de la base de données entière jusqu'à un point dans le temps. Vous savez que
les premières modifications effectuées dans le traitement batch de réorganisation
concernent les modifications de département. Vous regardez donc l'heure à laquelle la
première modification a eu lieu dans la table JOB_HISTORY et décidez de restaurer la base
de données dans l'état où elle se trouvait une minute avant cette première modification.
Effectuez la restauration.
a. Pour trouver l'heure de la première modification, entrez l'instruction suivante à l'invite SQL :
SQL> alter session set nls_date_format = "yyyy-mm-dd hh24:mi:ss";
SQL> select min(end_date) from job_history
2 where end_date > sysdate - 60;
Notez la date et l'heure. __________________________________
Dans cet exemple, la date est 2005-12-14, et l'heure 10:30:12.
b. Connectez-vous en tant que AS SYSDBA et arrêtez l'instance. Placez la base de
données à l'état MOUNT en vue de l'opération de restauration RMAN.
SQL> connect / as sysdba
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP MOUNT
Oracle Database 10g : Administration Workshop II B-24
Solutions de l'exercice 22 : Récupérer la base de données (suite)
c. Attendez que la base de données soit montée. Dans une fenêtre XTerm distincte, entrez
les commandes ci-dessous à l'invite de commande Linux pour préparer la session
RMAN, puis appelez RMAN.
Remarque : Les variables d'environnement doivent être en majuscules.
$ export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
$ export NLS_LANG=american_america.we8iso8859p15
$ rman target / NOCATALOG
d. A l'invite RMAN, entrez la commande ci-dessous pour restaurer la base de données au
point situé une minute avant l'exécution du traitement batch. Remplacez l'heure
ci-dessous par l'heure notée à l'étape 3-a moins une minute.
RMAN> run{
2> set UNTIL TIME = '2005-12-14 10:29:12';
3> RESTORE DATABASE;
4> RECOVER DATABASE;
5> ALTER DATABASE OPEN RESETLOGS;
6> }
Oracle Database 10g : Administration Workshop II B-25
Solutions de l'exercice 22 : Récupérer la base de données (suite)
Voici le résultat de cette commande :
RMAN> run{
2> set UNTIL TIME = '2005-12-14 10:29:12';
3> RESTORE DATABASE;
4> RECOVER DATABASE;
5> ALTER DATABASE OPEN RESETLOGS;
6> }
executing command: SET until clause
Starting restore at 2005-12-14 10:40:07
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=155 devtype=DISK
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /u01/app/oracle/oradata/orcl/system01.dbf
restoring datafile 00002 to /u01/app/oracle/oradata/orcl/undotbs01.dbf
restoring datafile 00003 to /u01/app/oracle/oradata/orcl/sysaux01.dbf
restoring datafile 00004 to /u01/app/oracle/oradata/orcl/users01.dbf
restoring datafile 00005 to /u01/app/oracle/oradata/orcl/example01.dbf
restoring datafile 00006 to /u01/app/oracle/oradata/orcl/staging01.dbf
channel ORA_DISK_1: reading from backup piece
/u01/app/oracle/flash_recovery_area/ORCL/backupset/2005_12_14/o1_mf_nnnd
f_TAG20051214T060710_1t09rj5m_.bkp
channel ORA_DISK_1: restored backup piece 1
piece
handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2005_12_14/o1_
mf_nnndf_TAG20051214T060710_1t09rj5m_.bkp tag=TAG20051214T060710
channel ORA_DISK_1: restore complete, elapsed time: 00:02:07
Finished restore at 2005-12-14 10:42:17
Starting recover at 2005-12-14 10:42:17
using channel ORA_DISK_1
starting media recovery
archive log thread 1 sequence 13 is already on disk as file
/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2005_12_14/o1_mf_1_1
3_1t09wtrj_.arc
archive log thread 1 sequence 14 is already on disk as file
/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2005_12_14/o1_mf_1_1
4_1t0khy2v_.arc
.
.
.
archive log thread 1 sequence 20 is already on disk as file
/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2005_12_14/o1_mf_1_2
0_1t0qnwjp_.arc
Oracle Database 10g : Administration Workshop II B-26
Solutions de l'exercice 22 : Récupérer la base de données (suite)
archive log
filename=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2005_12_14/
o1_mf_1_13_1t09wtrj_.arc thread=1 sequence=13
archive log
filename=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2005_12_14/
o1_mf_1_14_1t0khy2v_.arc thread=1 sequence=14
.
.
.
archive log
filename=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2005_12_14/
o1_mf_1_20_1t0qnwjp_.arc thread=1 sequence=20
media recovery complete, elapsed time: 00:00:14
Finished recover at 2005-12-14 10:42:33
database opened
RMAN>
4. Vérifiez que la base de données est bien restaurée jusqu'au point dans le temps où les
données HR ne présentent pas de modifications concernant la réorganisation.
a. Pour afficher l'entrée la plus récente effectuée dans JOB_HISTORY, entrez l'instruction
suivante à l'invite SQL :
SQL> SELECT MAX(end_date) FROM hr.job_history;
Cette entrée doit remonter à plusieurs années. Le résultat de l'instruction doit être similaire
au suivant (la date peut être différente) :
SQL> SELECT MAX(end_date) FROM hr.job_history;
MAX(END_D
--------31-DEC-99
5. Quittez SQL*Plus.
Oracle Database 10g : Administration Workshop II B-27