Avez-vous déjà tenté de cloner une base à chaud…sans aucune sauvegarde RMAN? Vous pensez peut être à un « DUPLICATE » RMAN ? Et bien oui, mais pas tout à fait ! Pourquoi ? Un duplicate nécessite une sauvegarde RMAN disponible pour pouvoir créer la copie de la base. Mais la solution qui vous est proposée ici est de cloner une base sans avoir au préalable une sauvegarde RMAN.
Avec la 11g, Oracle offre cette possibilité avec la commande « DUPLICATE….FROM ACTIVE DATABASE ». Dans ce chapitre, vous trouverez les différentes étapes pour implémenter cette solution.
Dans l’exemple ci-dessous, vous allez dupliquez une base en version 11.2.0.1 sur un serveur Windows (XP/64bits).
- Préparez l’arborescence qui va accueillir la nouvelle base :
C:ORACLE_DBSATURNE C:ORACLE_DBSATURNEDATA C:ORACLE_DBSATURNEREDO C:ORACLE_DBSATURNECTRL
- Générez un pfile de la base source :
C:>set ORACLE_SID=NEPTUNE C:>sqlplus / as sysdba SQL>create pfile='C:apporacleproduct11.2.0dbhome_1databaseinit_SATURNE.ora' from spfile; Fichier créé. SQL>exit
- Ouvrez le fichier init_SATURNE.ora généré sous « %ORACLE_HOME%/database »
Modifiez toutes les entrées du fichier en remplaçant le nom de la base source par le nom de la base dupliquée :
Dans l’exemple, la chaîne NEPTUNE est remplacée par SATURNE, vous obtenez un fichier de ce style là :
*.audit_file_dest='C:apporacleadminsaturneadump' *.audit_trail='db' *.compatible='11.2.0.0.0' *.control_files='C:ORACLE_DBSATURNEDATAcontrol01.ctl','C:ORACLE_DBSATURNECTRLcontrol02.ctl' *.db_block_size=8192 *.db_domain='world' *.db_name='saturne' *.db_recovery_file_dest='C:apporacleflash_recovery_area' *.db_recovery_file_dest_size=3117416448 *.diagnostic_dest='C:apporacle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=saturneXDB)' *.nls_language='FRENCH' *.nls_territory='FRANCE' *.open_cursors=300 *.pga_aggregate_target=106954752 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=220864256 *.undo_tablespace='UNDOTBS1'
- Créez le service windows associé à la nouvelle base
C:oradim -new -sid SATURNE Instance créé.
- Créez un fichier passwordfile avec l’utilitaire « orapwd »:
C:orapwd file=PWDSATURNE password=sys_pass01
- Ajoutez le descripteur de connexion dans le fichier TNSNAMES.ora
SATURNE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = saturne) ) )
- Ajoutez uen entrée dans le fichier LISTENER.ora pour éviter que la nouvelle base bloque les connexions lorsqu’elle est en mode NOMOUNT :
(SID_DESC = (SID_NAME = SATURNE) (ORACLE_HOME = C:apporacleproduct11.2.0dbhome_1) )
- Rafraichissez les services du listener :
C:lsnrctl reload ... Copyright (c) 1991, 2010, Oracle. All rights reserved. Connexion à (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) La commande a réussi
- Testez la connexion au service SATURNE
C:tnsping SATURNE ... Adaptateur TNSNAMES utilisé pour la résolution de l'alias Tentative de contact de (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = hostname )(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = saturne))) OK (90 msec)
- Démarrez la base en mode NOMOUNT avec le fichier init_SATURNE.ora
C: sqlplus / as sysdba SQL>startup nomount pfile='C:apporacleproduct11.2.0dbhome_1databaseinit_SATURNE.ora' Instance ORACLE lancée. Total System Global Area 221790208 bytes Fixed Size 1373684 bytes Variable Size 83888652 bytes Database Buffers 134217728 bytes Redo Buffers 2310144 bytes SQL>exit
- Connectez-vous à RMAN sur la base source (target) et sur la base cible (auxiliary) :
C:rman RMAN> connect target sys/sys_pass123@NEPTUNE connecté à la base de données cible : NEPTUNE (DBID=123456789) RMAN> connect auxiliary sys/sys_pass01@SATURNE connexion établie avec la base de données auxiliaire : SATURNE (non montée) RMAN>
- Lancez la commande de duplication :
RMAN> duplicate target database to SATURNE from active database 2>db_file_name_convert ‘C:ORACLE_DBNEPTUNEDATA','C:ORACLE_DBSATURNEDATA'; executing command: SET NEWNAME executing command: SET NEWNAME .... contenu de script mémoire: { Alter clone database open resetlogs; } exécution de script mémoire base de données ouverte Fin de Duplicate Db dans 27/03/12 RMAN>
- Vérifiez l’état de votre nouvelle base :
C:sqlplus / as sysdba SQL> select name from v$database; NAME --------- SATURNE SQL> select status from v$instance; STATUS ------------ OPEN SQL> select file_name from dba_data_files; FILE_NAME ------------------------------------------------------- C:ORACLE_DBSATURNEDATASYSTEM01.DBF C:ORACLE_DBSATURNEDATASYSAUX01.DBF C:ORACLE_DBSATURNEDATAUNDOTBS01.DBF C:ORACLE_DBSATURNEDATAUSERS01.DBF C:ORACLE_DBSATURNEDATADATA01.DBF C:ORACLE_DBSATURNEDATAINDXS01.DBF SQL>
Et voilà, la nouvelle base est prête !
Pensez donc à cette solution lorsque vous avez une base à cloner. Cette fonctionnalité permet aussi de créer une STANDBY. L’option ‘FROM ACTIVE DATABASE’ offre donc un gain de temps sur la duplication d’une base de données. Vous disposez de données récentes et d’une image parfaite de la base source. Si vous prenez le temps d’éplucher la log RMAN vous comprendrez mieux la notion « ACTIVE DATABASE ». En effet, vous y verrez les différentes étapes de duplication. Il n’est pas nécessaire d’analyser la totalité de la log, mais vous constaterez qu’à un moment, RMAN effectue une sauvegarde de la base source. C’est cette sauvegarde qui sert à la duplication.
Sources :
Oracle® Database Backup and Recovery Reference
11g Release 1 (11.1)
1 réflexion sur “DUPLICATE…FROM ACTIVE DATABASE”
Ping : Synchronisation standby avec Dbvisit - EASYTEAM
Les commentaires sont fermés.