Copier une base de données Oracle et changer son nom

Vous avez besoin de créer une pré-production à partir de votre base de production ou tout simplement de repartir d’une base connu ? Cet article peut donc vous aider.
Il parcourt l’ensemble des opérations sur votre base source et votre base cible qui vous seront nécessaire pour une copie en toute tranquillité.

 
 

1.     SOURCE

Nom de l’opération Commandes/traces
Positionnement de l’environnement. /home/ora11g> hostname/home/ora11g> . oraenvORACLE_SID = [QODYPR] ? QLEGHOThe Oracle base remains unchanged with value /o01srvqda-oracl-q01 /home/ora10g>
Backup  plus transfert sur le serveur cible rman target /RMAN> backup database  plus archivelog;/home/ora11g>  scp <fichier de backup>ora11g@VMWBAV-ORCL-V11:/o03/app/oracle/products/11.2.0/backup
Récupération des différents chemins nécessaires à la copie. sqlplus / as sysdbaSQL> select *  from v$logfile;SQL> select FILE#,NAME from v$datafile;
Création du fichier d’init pour la cible SQL>  create pfile=’$ORACLE_HOME/dbs/init<nomBaseCible>.ora’ from spfile;/home/ora11g>  scp <fichier d’init> ora11g@VMWBAV-ORCL-V11:/o03/app/oracle/products/11.2.0/dbs

 

2.     CIBLE

Opération Commandes/traces
Modification du fichier d’init /home/ora11g> vi $ORACLE_HOME/dbs/initVLEGHO.oraVLEGHO.__db_cache_size=188743680VLEGHO.__java_pool_size=4194304
VLEGHO.__large_pool_size=12582912
VLEGHO.__pga_aggregate_target=293601280
VLEGHO.__sga_target=545259520
VLEGHO.__shared_io_pool_size=0
VLEGHO.__shared_pool_size=318767104
VLEGHO.__streams_pool_size=8388608
*.audit_file_dest=’/o01/app/admin/VLEGHO/adump’
*.audit_trail=’db’
*.compatible=’11.2.0.0.0′
*.control_files=’/o01/app/oradata/VLEGHO/control01.ctl’,
‘/o01/app/oradata/VLEGHO/control02.ctl’
*.db_block_size=8192
*.db_domain= »
*.db_name=’QLEGHO’
*.diagnostic_dest=’/o01/app’
*.dispatchers='(PROTOCOL=TCP) (SERVICE=VLEGHOXDB)’
*.log_archive_dest_1=’LOCATION=+V_FRA11_LEGHO’
*.log_archive_format=’VLEGHO_%t_%s_%r.arc’
*.memory_target=838860800
*.nls_language=’FRENCH’
*.nls_territory=’FRANCE’
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile=’EXCLUSIVE’
*.sec_case_sensitive_logon=FALSE
*.undo_tablespace=’UNDOTBS1′
DB_FILE_NAME_CONVERT=’+Q_DATA11_LEGHO/QLEGHO/DATAFILE/’,
‘+V_DATA11_LEGHO/VLEGHO/DATAFILE/’,’/o01/app/oradata/QLEGHO/’,
‘/o01/app/oradata/VLEGHO’   LOG_FILE_NAME_CONVERT=
(/o01/app/oradata/QLEGHO/,/o01/app/oradata/VLEGHO/)
Création des chemins nécessaires /home/ora11g>  mkdir /o01/app/oradata/VLEGHO/home/ora11g>  mkdir /o01/app/admin/VLEGHO/adump/home/ora11g> . oraenv
ORACLE_SID = [QODYPR] ? +ASM
The Oracle base remains unchanged with value /o01/app
/home/ora11g> asmcmd
ASMCMD> lsdg
ASMCMD> mkdir V_DATA11_LEGHO/VLEGHO/DATAFILE
ASMCMD> mkdir V_FRA11_LEGHO/VLEGHO/ARCHIVELOG
Création du listener.ora /home/ora11g> cd /o03/app/oracle/products/11.2.0/network/admin/home/ora11g> vi listener.oraSID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = VLEGHO)
(ORACLE_HOME = /o03/app/oracle/products/11.2.0)
)
)
Création du tnsnames.ora /home/ora11g> cd /o03/app/oracle/products/11.2.0/network/admin/home/ora11g> vi tnsnames.oraVLEGHO =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = VMWBAV-ORCL-V11)
(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = VLEGHO)
)
)
Positionner l’environnement /home/ora11g> hostname/home/ora11g> . oraenvORACLE_SID = [QODYPR] ? VLEGHOORACLE_HOME = [QODYPR] ? /o03/app/oracle/products/11.2.0The Oracle base remains unchanged with value /o01/app/home/ora11g>
Démarrage de la base cible sqlplus / as sysdbaSQL> startup nomount from pfile=’/o03/app/oracle/products/11.2.0/dbs/initVLEGHO.ora’;
Création du script de restore Récupération des chemins des fichiers de la source à partirdes résultats des requêtes du 1 : 
run {
set newname for datafile 1 to ‘/o01/app/oradata/VLEGHO/system01.dbf’;
set newname for datafile 2 to ‘/o01/app/oradata/VLEGHO/sysaux01.dbf’;
set newname for datafile 3 to ‘/o01/app/oradata/VLEGHO/undotbs01.dbf’;
set newname for datafile 4 to ‘/o01/app/oradata/VLEGHO/users01.dbf’;
set newname for datafile 5 to
‘+V_DATA11_LEGHO/vlegho/datafile/data.256.836912195’;
set newname for datafile 6 to
‘+V_DATA11_LEGHO/vlegho/datafile/indx.257.836912229’;
restore database ;
switch datafile all;
recover database;
} ;
Restauration de la base cible rman target /RMAN > Restore controlfile from=’/o03/app/oracle/products/11.2.0/backup/<backupControlefile>’;
RMAN > alter database mount;
RMAN > Catalog start with ‘/o03/app/oracle/products/11.2.0/backup/’;
Execution du script :
RMAN >  run {
set newname for datafile 1 to ‘/o01/app/oradata/VLEGHO/system01.dbf’;
set newname for datafile 2 to ‘/o01/app/oradata/VLEGHO/sysaux01.dbf’;
set newname for datafile 3 to ‘/o01/app/oradata/VLEGHO/undotbs01.dbf’;
set newname for datafile 4 to ‘/o01/app/oradata/VLEGHO/users01.dbf’;
set newname for datafile 5 to
‘+V_DATA11_LEGHO/vlegho/datafile/data.256.836912195’;
set newname for datafile 6 to
‘+V_DATA11_LEGHO/vlegho/datafile/indx.257.836912229’;
restore database ;
switch datafile all;
recover database;
};
Vous allez normalement avoir une erreur => Récupérez le numéro
la dernière séquence dansle message d’erreur
Recover de la base cible RMAN >  run{set until logseq=<numeroSequence>;recover database;
};
Renommage des redo.log sqlplus / as sysdbaSQL> ALTER DATABASE RENAME FILE ‘/o01/app/oradata/QLEGHO/redo01.log’TO ‘/o01/app/oradata/VLEGHO/redo01.log’;
SQL> ALTER DATABASE RENAME FILE ‘/o01/app/oradata/QLEGHO/redo02.log’
TO ‘/o01/app/oradata/VLEGHO/redo02.log’;
SQL> ALTER DATABASE RENAME FILE ‘/o01/app/oradata/QLEGHO/redo03.log’
TO ‘/o01/app/oradata/VLEGHO/redo03.log’;
Suppression des tempfile SQL> alter database tempfile ‘/o01/app/oradata/QLEGHO/temp01.dbf’drop including datafiles;SQL> exit
Renommage de la base de données /home/ora11g> nid TARGET=sys/djoqlegho01 DBNAME=VLEGHO
Création du spfile sqlplus / as sysdbaSQL> create spfile from pfile=’/o03/app/oracle/products/11.2.0/dbs/initVLEGHO.ora’;
SQL> shutdown immediate;
SQL> startup nomount;
SQL> alter system set DB_NAME=VLEGHO scope=SPFILE;
Démarrage de la base de données SQL> shutdown immediateSQL> startup mount;SQL> alter database open resetlogs;
Création des tempfile SQL> ALTER TEMPORARY TABLESPACE TEMP add tempfile’/o01/app/oradata/VLEGHO/temp01.dbf’ size 4096M AUTOEXTEND ON;SQL> ALTER TABLESPACE TEMP add tempfile
‘/o01/app/oradata/VLEGHO/temp01.dbf’ size 4096M AUTOEXTEND ON;
SQL> alter database tempfile
‘/o01/app/oradata/VLEGHO/temp01.dbf’ autoextend on maxsize 8192M;
Changements des mots de passe SQL> alter user sys identified by djovlegho01;SQL> alter user system identified by djovlegho01;/home/ora11g> orapwd file=orapwVLEGHO password=djovlegho01
Modification de l’oratab /home/ora11g> vi /etc/oratabAjoutez la ligne : VLEGHO:/o03/app/oracle/products/11.2.0:N

Et voilà votre base est prête à être utilisée…