[ORACLE] Duplicado TEST1 (11.2.0.1) a TEST2 en la misma máquina, sin conexión a target ni catálogo, a partir de backup de rman en disco

Tenemos una bbdd 11.2.0.1 con sid TEST1. En la misma máquina queremos duplicarla a TEST2 a partir de un backup con rman a disco. No tenemos catálogo de rman.

Pasos
-----

1º Hacemos el backup full de TEST1 a disco. En este caso, TEST1 utiliza FRA, por lo que la ubicación del backup generado será el área de fra.

2º Crearmos las rutas de directorios para ubicar la base de datos TEST2.

3º Necesitamos un fichero de password para TEST2, lo podemos copiar de TEST1 y cambiar el nombre.

4º Necesitamos un init.ora para TEST2, con el parámetro db_name=TEST2 únicamente.

5º Levantamos la instancia TEST2 en nomount a partir del initTEST2.ora (TEST1 no hace falta que esté levantada)

6º Conectamos a RMAN con la TEST2 como auxiliary:

rman auxiliary /

7º Ejecutamos el script de duplicado:

DUPLICATE DATABASE TO TEST2
UNTIL TIME "TO_DATE('08/04/2015 11:39:20', 'DD/MM/YYYY HH24:MI:SS')"
SPFILE
set control_files='/u01/app/oracle/oradata/TEST2/control01.ctl','/u01/app/oracle/flash_recovery_area/TEST2/control02.ctl'
set db_file_name_convert='TEST1','TEST2'
set log_file_name_convert='TEST1','TEST2'
BACKUP LOCATION '/u01/app/oracle/flash_recovery_area/TEST1/backupset/2015_04_08'
;


Notas: no se puede usar until scn en este caso concreto
La fecha del until time es la fecha del ultimo backup de archivelogs de test1




Si da este error:

SQL> alter database recover if needed
2 start until time 'APR 08 2015 11:39:20' using backup controlfile;
start until time 'APR 08 2015 11:39:20' using backup controlfile
*
ERROR en linea 2:
ORA-01841: el valor (completo) del a?o debe estar entre -4713 y +9999, y no debe ser igual a 0

Es porque hay que configurar la NLS_LANG:

[oracle@localhost duplicado_TEST1_a_TEST2]$ export NLS_LANG=.UTF8


Tambien puede dar este error:

ERROR at line 1:
ORA-10878: parallel recovery slave died unexpectedly


Comentarios

Anónimo ha dicho que…
Great blog and post. I had a problem at the moment in the enterprise that i work with an Oracle DB 11 Server.

I need to migrate all the data because of a corrupted dbf file with a few kb's of space (strange problem) and i don't know what is the best approach for the problem.

I tried to make a full export of the database and then import in the new one, but i got a lot of erros trying to grant user roles and privileges that doesn't exists in the new db.

I will try with RMAN
locutoriorama ha dicho que…
Thank you for your comment.
You can try exporting/importing only application or user schemas, not full database.

Entradas populares de este blog

[ORACLE] Script Espacio ocupado y libre de tablespaces (incluyendo los temporary)

Oracle - Apuntes sobre LOBs para DBAs

Oracle - Traza 10046 (SQL_TRACE)