miércoles, 19 de septiembre de 2012

Como clonar o duplicar una instancia oracle con la opción ACTIVE DATABASE de RMAN


Hola, luego de mucho tiempo de no publicar nada, aquí les traigo un procedimiento muy sencillo para hacer un clonado de nuestra base de datos de producción en un ambiente de test. La idea es utilizar RMAN y hacer el restore a través de la red, con lo cual esto es un beneficio cuando no disponemos de suficiente espacio en disco para alojar las piezas de backup de rman.

Nota: Antes de borrar el ambiente de test, salvaguardar todo lo que sea necesario, yo particularmente me guardo las contraseñas de los schemas con la query que muestro debajo:

SELECT name,password FROM SYS.USER$ WHERE password is not null;


Nota: cuando hacemos el duplicado con la opción ACTIVE DATABASE de RMAN hay un par de prerequisitos a tener en cuenta:
  • Source destination tiene que estar en ARCHIVELOG.
  • Tanto en el source como en el destino tienen que tener agregado el tnsnames.ora con la configuración de la base de datos a duplicar.
  • El password file debe estar replicado en ambos equipos.
  •  crear un init.ora con al menos estos parametros
          *.db_name='DBCLON
          *.db_file_name_convert=('+DATAORIGEN','+DATADESTINO)
          *.log_file_name_convert=('+DATAORIGEN,'+DATADESTINO')
  • Tener en cuenta que si se cambia el password de sys hay que volver a copiar el orapw.
  • Crear un listener_estatico en algun  puerto libre.
  • Agregar la entrada del listener en el tnsnames.ora local.

Pasos a seguir:

Aqui estamos logueados en el servidor de la instancia que queremos clonar.
  • Bajar la instancia a clonar
  • Tomar backup del spfile actual mv spfileBDCLON spfileCLON.old
  • Desde el nodo destino startup nomount de la instancia  DBCLON .
  • Borrar todo lo que contenga el diskgroup +DATADESTINO

Aqui estamos logueados en el nodo origen donde tenemos nuestra instancia productiva

Desde el nodo origen nos conectarnos al rman y ejecutar el script.

NOTA: Si esta conexion 1 no funciona usar la 2

export ORACLE_SID=DBORIGEN

1- rman target / auxiliary sys/password@DBCLON

2- rman target usuario/pasword@DBORIGEN auxiliary sys/password@DBCLON


Luego una vez dentro del rman ejecutar el script que hace el clonado de la instancia.

run {
   allocate channel prmy1 type disk; 
   allocate auxiliary channel clondb type disk; 
   duplicate target database to CLONDB from active database nofilenamecheck
logfile
  group 1 ('+ DATADESTINO /redo01.log') size 50M,
  group 2 ('+ DATADESTINO /redo02.log') size 50M,
  group 3 ('+ DATADESTINO /redo03.log') size 50M,
  group 4 ('+ DATADESTINO /redo04.exilog') size 50M;
}

Luego una vez terminado el restore , crear un spfile para la instancia, cambiar la password de sys y system, frenar los jobs si es que existen y todo lo que haga falta para tener un ambiente de test en forma operativa.

FIN.