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 :
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 :
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;
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
Sélectionnez
CREATE CONTROLFILE SET DATABASE "oratest" RESETLOGS ARCHIVELOG
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;
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.
0 Commentaires