annexe a exercices - aifrisss – association...

33
________________ Annexe A Exercices ________________

Upload: doanduong

Post on 14-Sep-2018

224 views

Category:

Documents


2 download

TRANSCRIPT

________________

Annexe A Exercices

________________

Oracle Database 10g: Administration Workshop II A-2

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-3

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-4

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-5

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-6

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.

________________

Annexe B Solutions

________________

Oracle Database 10g : Administration Workshop II B-2

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-3

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. Connectez-vous à 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-4

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-5

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-6

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-7

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-8

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-9

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 Datafile Name ---- -------- ---------- ------- ------------------------ 1 490 SYSTEM *** /u01/app/oracle/oradata/orcl/system01.dbf 2 50 UNDOTBS1 *** /u01/app/oracle/oradata/orcl/undotbs01.dbf 3 270 SYSAUX *** /u01/app/oracle/oradata/orcl/sysaux01.dbf 4 5 USERS *** /u01/app/oracle/oradata/orcl/users01.dbf 5 100 EXAMPLE *** /u01/app/oracle/oradata/orcl/example01.dbf 6 3 STAGING *** /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-10

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-11

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-12

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-13

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-14

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-15

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_nnndf_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_nnndf_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-16

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-17

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-18

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-19

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-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 :

$ 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-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 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-22

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-23

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-24

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-25

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-26

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_nnndf_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_13_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_14_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_20_1t0qnwjp_.arc

Oracle Database 10g : Administration Workshop II B-27

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.