Copie de la base de données

Dans cet exemple, nous allons copier la base « orafrance » dans la base de test « oratest » qui aura été créée au préalable.
La copie consiste à arrêter la base « oratest » et remplacer ses fichiers par ceux de la base « orafrance » et faire en sorte que ceux-ci soient bien pris en compte.

II-A. Création des fichiers de contrôle

Les fichiers de contrôle indique à la base où sont situés les fichiers constituant la base de données.
Nous allons générer le script de création des control files de la base orafrance :
 
Sélectionnez
SQL> alter database backup controlfile to trace;
Cette commande génère un fichier trace dans le répertoire des traces utilisateurs indiqué par le paramètre « user_dump_dest ». Le fichier ressemble alors à ceci : La partie qui nous intéresse est la suivante :
 
Sélectionnez
STARTUP NOMOUNT 
CREATE CONTROLFILE REUSE DATABASE "orafrance" NORESETLOGS ARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 5
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 908
LOGFILE
GROUP 1 'G:\ORACLE\ORADATA\orafrance\REDO01.LOG' SIZE 10M,
GROUP 1 'G:\ORACLE\ORADATA\orafrance\REDO02.LOG' SIZE 10M,
GROUP 2 'F:\ORACLE\ORADATA\orafrance\REDO03.LOG' SIZE 10M,
GROUP 2 'F:\ORACLE\ORADATA\orafrance\REDO04.LOG' SIZE 10M
-- STANDBY LOGFILE
DATAFILE
'F:\ORACLE\ORADATA\orafrance\SYSTEM01.DBF',
'F:\ORACLE\ORADATA\orafrance\CWMLITE01.DBF',
'F:\ORACLE\ORADATA\orafrance\DRSYS01.DBF',
'F:\ORACLE\ORADATA\orafrance\EXAMPLE01.DBF',
'F:\ORACLE\ORADATA\orafrance\INDX01.DBF',
'F:\ORACLE\ORADATA\orafrance\ODM01.DBF',
'F:\ORACLE\ORADATA\orafrance\TOOLS01.DBF',
'F:\ORACLE\ORADATA\orafrance\USERS01.DBF',
'F:\ORACLE\ORADATA\orafrance\XDB01.DBF',
'F:\ORACLE\ORADATA\orafrance\INDEX\INDPRD.DBF',
'F:\ORACLE\ORADATA\orafrance\DATA\DATPRD.DBF',
'F:\ORACLE\ORADATA\orafrance\DATA\DATDEM.DBF',
'F:\ORACLE\ORADATA\orafrance\DATA\DATDIS.DBF',
'F:\ORACLE\ORADATA\orafrance\DATA\DATHIS.DBF',
'F:\ORACLE\ORADATA\orafrance\DATA\DATREF.DBF',
'G:\ORACLE\ORADATA\orafrance\INDEX\INDDEM.DBF',
'G:\ORACLE\ORADATA\orafrance\INDEX\INDDIS.DBF',
'G:\ORACLE\ORADATA\orafrance\INDEX\INDHIS.DBF',
'G:\ORACLE\ORADATA\orafrance\INDEX\INDREF.DBF',
'G:\ORACLE\ORADATA\orafrance\INDEX\INDDIS2.DBF',
'G:\ORACLE\ORADATA\orafrance\INDEX\INDDIS3.DBF',
'G:\ORACLE\ORADATA\orafrance\INDEX\INDDIS4.DBF',
'G:\ORACLE\ORADATA\orafrance\INDEX\INDDIS5.DBF'
CHARACTER SET WE8MSWIN1252
;
# Recovery is required if any of the datafiles are restored backups,
# or if the last shutdown was not normal or immediate.
RECOVER DATABASE
# All logs need archiving and a log switch is needed.
ALTER SYSTEM ARCHIVE LOG ALL;
# Database can now be opened normally.
ALTER DATABASE OPEN;
# Commands to add tempfiles to temporary tablespaces.
# Online tempfiles have complete space information.
# Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE 'G:\ORACLE\ORADATA\orafrance\TEMP02.DBF'
SIZE 2000M REUSE AUTOEXTEND OFF;
ALTER TABLESPACE TEMP ADD TEMPFILE 'G:\ORACLE\ORADATA\orafrance\TEMP01.DBF'
SIZE 2000M REUSE AUTOEXTEND OFF;

II-B. Modification du fichier généré

La base à copier doit être arrêtée afin que tous les fichiers soient bien synchronisés.
Une fois que les fichiers de la base « orafrance » sont copiés sur « oratest », il convient de modifier le script de création des fichiers de contrôle pour l'adapter aux nouveaux chemins. Par exemple, nous allons copier les fichiers de F:\ORACLE\ORADATA\orafrance et G:\ORACLE\ORADATA\orafrance sur un autre serveur dans D:\ORACLE\ORADATA\oratest.
Il faut donc remplacer les chaînes de caractères F:\ORACLE\ORADATA\orafrance et G:\ORACLE\ORADATA\orafrance par D:\ORACLE\ORADATA\oratest. Le nom de la base change aussi de « orafrance » à « oratest », il faut donc spécifier ce changement en remplaçant l'entête :
 
Sélectionnez
CREATE CONTROLFILE REUSE DATABASE "orafrance" NORESETLOGS ARCHIVELOG
devient :
 
Sélectionnez
CREATE CONTROLFILE SET DATABASE "oratest" RESETLOGS ARCHIVELOG
Nous allons commenter la ligne : RECOVER DATABASE; la base « orafrance » ayant été arrêtée une récupération n'est pas nécessaire. Et nous démarrons la base en supprimant les logs : Nous allons commenter la ligne : ALTER DATABASE OPEN; devient ALTER DATABASE OPEN RESETLOGS;.
Après avoir supprimé les lignes inutiles le fichier doit ressemblé à ceci :
 
Sélectionnez
STARTUP NOMOUNT
CREATE CONTROLFILE SET DATABASE "oratest" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 5
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 1
    MAXLOGHISTORY 908
LOGFILE
  GROUP 1 'D:\ORACLE\ORADATA\oratest\REDO01.LOG'  SIZE 10M,
  GROUP 1 'D:\ORACLE\ORADATA\oratest\REDO02.LOG'  SIZE 10M,
  GROUP 2 'D:\ORACLE\ORADATA\oratest\REDO03.LOG'  SIZE 10M,
  GROUP 2 'D:\ORACLE\ORADATA\oratest\REDO04.LOG'  SIZE 10M
DATAFILE
  'D:\ORACLE\ORADATA\oratest\SYSTEM01.DBF',
  'D:\ORACLE\ORADATA\oratest\CWMLITE01.DBF',
  'D:\ORACLE\ORADATA\oratest\DRSYS01.DBF',
  'D:\ORACLE\ORADATA\oratest\EXAMPLE01.DBF',
  'D:\ORACLE\ORADATA\oratest\INDX01.DBF',
  'D:\ORACLE\ORADATA\oratest\ODM01.DBF',
  'D:\ORACLE\ORADATA\oratest\TOOLS01.DBF',
  'D:\ORACLE\ORADATA\oratest\USERS01.DBF',
  'D:\ORACLE\ORADATA\oratest\XDB01.DBF',
  'D:\ORACLE\ORADATA\oratest\INDEX\INDPRD.DBF',
  'D:\ORACLE\ORADATA\oratest\DATA\DATPRD.DBF',
  'D:\ORACLE\ORADATA\oratest\DATA\DATDEM.DBF',
  'D:\ORACLE\ORADATA\oratest\DATA\DATDIS.DBF',
  'D:\ORACLE\ORADATA\oratest\DATA\DATHIS.DBF',
  'D:\ORACLE\ORADATA\oratest\DATA\DATREF.DBF',
  'D:\ORACLE\ORADATA\oratest\INDEX\INDDEM.DBF',
  'D:\ORACLE\ORADATA\oratest\INDEX\INDDIS.DBF',
  'D:\ORACLE\ORADATA\oratest\INDEX\INDHIS.DBF',
  'D:\ORACLE\ORADATA\oratest\INDEX\INDREF.DBF',
  'D:\ORACLE\ORADATA\oratest\INDEX\INDDIS2.DBF',
  'D:\ORACLE\ORADATA\oratest\INDEX\INDDIS3.DBF',
  'D:\ORACLE\ORADATA\oratest\INDEX\INDDIS4.DBF',
  'D:\ORACLE\ORADATA\oratest\INDEX\INDDIS5.DBF'
CHARACTER SET WE8MSWIN1252
;
ALTER DATABASE OPEN RESETLOGS;
ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\ORACLE\ORADATA\oratest\TEMP02.DBF'
     SIZE 2000M REUSE AUTOEXTEND OFF;
ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\ORACLE\ORADATA\oratest\TEMP01.DBF'
     SIZE 2000M REUSE AUTOEXTEND OFF;
Enfin, il ne faut pas oublier de modifier le fichier d'initialisation de la base (initORAFRANCE.ora) si celui-ci a aussi été copié.
Il faut le renommer en initORATEST.ora et modifier les paramètres suivant : db_name control_file user_dump_dest, background_dump_dest, core_dump_dest utl_file_dir
Pensez également à réduire la taille de la base et supprimer le mode ARCHIVELOG si nécessaire.

Enregistrer un commentaire

0 Commentaires