Tuesday, January 24, 2006

DUPLICATION DE BASE DE DONNEES SOUS ORACLE9i
LES OPTIONS DE DUPLICATION ET LES ETAPES PREPARATOIRES

Les options de duplication

Lorsqu’un administrateur de bases de données souhaite procéder à la duplication d’une base de données, il dispose d’un ensemble d’options qu’il doit toujours avoir à l’esprit.
Passons en revue rapide ces différentes options de duplication de base de données :
- Exécuter la commande DUPLICATE avec ou sans un catalogue de récupération (recovery catalog, en anglais)
- Ne pas prendre en compte (c’est-à-dire « sauter ») les tablespaces en lecture seule, à l’aide de la clause « SKIP READONLY »
- Créer la database dupliquée sur une nouvelle machine. Si la structure de répertoires est la même sur la nouvelle machine, alors il est vivement conseillé de spécifier l’option NOFILENAMECHECK et réutiliser les noms de fichiers des fichiers de données de la base cible pour les fichiers de données de la base dupliquée.
- Utiliser l’option « SET UNTIL » quand on crée une base dupliquée pour la récupérer à un moment antérieur au moment de sauvegarde.
- Enregistrer la base dupliquée dans le même catalogue de récupération, option rendue possible du fait que la base dupliquée se voit attribuer un DBID différent de celui de la base cible pendant le processus de duplication.
- Attribuer au paramètre DB_NAME de la database dupliquée une valeur différente de celle correspondant au DB_NAME de la database cible.
Il sera beaucoup question dans les lignes qui von t suivre de la notion d’instance ou de base de données auxiliaire (en anglais auxiliary). Une base de données auxiliaire est une base de données RAC qui sera créée en tant que résultat de la duplication de la base de données cible. Dans la terminologie RMAN, l’instance auxiliaire identifie une instance à laquelle RMAN se connecte en vue d’exécuter la commande « duplicate ».


Les étapes préparatoires de la duplication

Etape 1 : Créer un fichier de mot de passe Oracle pour l’instance auxiliaire et s’assurer de la connectivité Oracle Net à cette instance.
Rappelons que la création d’un fichier de mots de passe sous Oracle9i se fait à l’aide de l’utilitaire orapwd fourni par Oracle. L’exécutable correspondant à cet utilitaire sur les plate-formes Unix porte le même nom et a la syntaxe suivante
$ orapwd file=chemin password=mot_de_passe_sys entries=nombre
Les symboles ne doivent pas avoir de caractères espace ni avant ni après.

Etape 2 : Créer un fichier de paramètres d’initialisation pour l’instance

En général, on fait une copie du fichier de paramètres d’initialisation d’une instance de la base de données d’origine et ensuite on procède aux modifications nécessaires. Une attention particulière doit être portée à tous les paramètres d’initialisation qui spécifient des noms de chemins d’accès. Il faut vérifier que tous les chemins spécifiés existent et sont accessibles sur la machine sur laquelle la base de données va être dupliquée. Le tableau ci-dessous récapitule quelques paramètres très importants (en complément des paramètres de chemin d’accès).


PARAMETRE DESCRIPTION
DB_NAME Il s’agit du même nom utilisé dans la commande « DUPLICATE »
CONTROL_FILES Paramètre bien connu
DB_FILE_NAME_CONVERTPermet de spécifier une règle de conversion des noms de fichiers de données pour tout fichier de données non renommé à l’aide des commandes RMAN « SET NEWNAME » ou « CONFIGURE AUXNAME ». On peut spécifier de multiples paires de conversion et utiliser les groupes de disques ASM (Automatic Storage Management
LOG_FILE_NAME_CONVERT Permet de spécifier une règle de conversion des noms de fichiers redo log. On peut spécifier de multiples paires de conversion. Ce paramètre permet en outre que les redo log existent aussi longtemps que les tailles correspondent dans la mesure où il utilise le paramètre REUSE lors de la création des redo logs. Si en plus de ce paramètre, on spécifie la clause LOGFILE dans la commande « DUPLICATE », alors RMAN utilise la clause LOGFILE.


Nous donnons ci-après un exemple très simplifié

DB_NAME=dupdb
CONTROL_FILES= (/oracle/dup_prod/cf/cf1.f, /oracle/dup_prod/cf/cf2.log)
DB_FILE_NAME_CONVERT=(/oracle/prod/db, /oracle/dup_prod/db, /disk2/db, /oracle/dup_prod/db)LOG_FILE_NAME_CONVERT=(/oracle/prod/log, /oracle/dup_prod/log)

Une fois le fichier PFILE créé, on peut, à l’aide de la commande SQL*PLUS « CREATE SPFILE », créer le fichier SPFILE correspondant dans le répertoire par défaut. Cette commande peut être lancée avant ou après le démarrage de l’instance auxiliaire.
SQL> CREATE SPFILE FROM PFILE=’/tmp/initDUPDB.ora’ ;

Etape 3 : Démarrer l’instance auxiliaire sans la monter sur le fichier spfile
SQL> connect SYS/aux_pwd@dupdb as sysdba
SQL> startup nomount

Etape 4 : Démarrer et monter ou démarrer et ouvrir la base de données cible
SQL> startup pfile='/oracle/dbs/initPRODB.ora'
ou
SQL> startup

Etape 5 : S’assurer que la nouvelle instance est déclarée dans la section SID_LIST du fichier listener.ora
Cette déclaration est le gage du succès des connexions de RMAN à la nouvelle instance. Par ailleurs il est aussi nécessaire de modifier le fichier tnsnames.ora de la machine à partir de laquelle on se connecte à la nouvelle instance de sorte que l’on puisse se connecter à cette instance via un alias de services réseau d’Oracle.
Voici un exemple d’extraits de fichier listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = prodb.knmc.local)
(ORACLE_HOME = /oracle/ora92)
(SID_NAME = prodb)
)
(SID_DESC =
(GLOBAL_DBNAME = dupb.knmc.local)
(ORACLE_HOME = /oracle/ora92)
(SID_NAME = dupb)
)
)
Après cette modification du listener.ora, il faut faire en sorte que le listener prenne en compte ces modifications par la commande « reload » comme suit :
$ lsnrctl reload
Ensuite, il faut vérifier que tout fonctionne comme souhaité :
$ lsnrctl services
La modification du fichier tnsnames.ora consiste à y ajouter l’entrée correspondant à la nouvelle instance, c’est-à-dire les lignes qui suivent :
DUPDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = jupiter)(PORT = 1521))
)
(CONNECT_DATA =
(SID = dupdb)
)
)
Note : Théoriquement la chaîne « SERVICE_NAME = dupdb » devrait marcher à la place de la chaîne « SID= dupdb ». Mais dans les faits, il semble que ce n’est pas toujours le cas.
Pour tester la connexion, il suffit de faire ce qui suit :
$ sqlplus "sys/pwsys@dupdb as sysdba"

Etape 6 : S’assurer que l’on a bien à disposition et accessibles (à partir de la machine sur laquelle la base de données dupliquée va être créée), les sauvegardes RMAN nécessaires et les redo logs archivés.
Lorsque la machine de duplication (sur laquelle sera dupliquée la base) est différente de la machine primaire (sur laquelle se trouve la base de départ appelée base cible dans la terminologie RMAN), il est impératif de rendre les sauvegardes et copies d’image se trouvant sur les disques de la machine primaire, disponibles sur la machine distante avec les mêmes chemins absolus de répertoire que sur la machine primaire. Cela se fait soit à l’aide des commandes du système d’exploitation du genre cp (Unix), soit à l’aide de la mise en œuvre de NFS ou de disques partagés.

Etape 7 : Allouer des canaux auxiliaires si des canaux automatiques ne sont pas configurés
Il s’agit de démarrer RMAN avec une connexion à la database cible, à la base dupliquée et s’il y a lieu, la database du catalogue de récupération
$ rman TARGET SYS/target_pwd@prodb CATALOG rman/cat_pwd@cat_str AUXILIARY SYS/aux_pwd@dupdb

Voici un exemple de cas où il n’y a pas de canaux automatiques configurés. Dans ces cas-là, on doit allouer manuellement au moins un canal auxiliaire dans la même commande RUN que la commande « DUPLICATE » et avant celle-ci. Le type de canal (DISK ou sbt) doit correspondre au média sur lequel se trouvent les sauvegardes de la database cible. Si les sauvegardes sont sur disque, la duplication sera d’autant plus rapide qu’il y aura plus de canaux alloués.
RUN {
# to manually allocate a channel of type sbt issue:
ALLOCATE AUXILIARY CHANNEL ch1 DEVICE TYPE sbt;
# to manually allocate three auxiliary channels for disk issue (specifying whatever
# channel id that you want):
ALLOCATE AUXILIARY CHANNEL aux1 DEVICE TYPE DISK;
ALLOCATE AUXILIARY CHANNEL aux2 DEVICE TYPE DISK;
ALLOCATE AUXILIARY CHANNEL aux3 DEVICE TYPE DISK;
...
...
...
DUPLICATE ...
}

Si l’on a configuré des canaux automatiques, alors RMAN peut utiliser ces canaux configurés pour la duplication même s’ils ne spécifient pas l’option AUXILIARY. Cependant, si les canaux auxiliaires ont besoin de paramètres spéciaux, alors on doit configurer un canal automatique avec l’option AUXILIARY.

0 Comments:

Post a Comment

<< Home