UnDomain Un friki suelto por la red

Clonar BDD Oracle


Este procedimiento es el que utilizamos para crear un clon de una BDD Oracle, pero con un nombre y HOME distinto.

La idea es poder crear una segunda BDD con exactamente los mismos datos, usuarios y configuración que una BDD ya existente, pero con un nombre distinto, lo cual nos permite tener las dos en el mismo servidor sin que se den de tortas entre ellas.

También sirve para clonar entornos, haciendo que las diferencias entre ellos sea totalmente nulas (y evitar que los programadores nos lloren :P). En este último caso, el procedimiento es el mismo (salvo algunos pequeños detalles que se comentan) pero el destino no es una BDD nueva sino una ya existente.

Vamos a ello:

1.- Instalación de binarios

El primer paso es instalar los binarios y parches necesarios en una ruta distinta sin crear ninguna BDD. Esto es para tener un nuevo ORACLE HOME con el mismo nivel de parcheado que la BDD original y es importante, ya que de lo contrario, podríamos tener algún problema con el diccionario de datos a la hora de arrancar la BDD clonada.

A partir de aquí, tenemos dos instalaciones separadas. Una con una BDD operativa (BDD Origen) y una sin BDD, solo binarios (BDD clon).

También podemos clonar sobre una BDD ya existente. En este caso, solo tenemos que parar la BDD destino para poder trabajar con ella (y hacer un backup previamente).

2.- Generar fichero de control

En la BDD Origen, ejecutamos el siguiente comando (no afecta a la BDD, se puede lanzar sin miedo):
ALTER DATABASE BACKUP CONTROLFILE TO TRACE RESETLOGS;

Con esta sentencia tendremos en un fichero de traza el script necesario para poder recrear los Control Files y los ficheros temporales, pero lo tenemos que modificar.

Identificamos el fichero de traza (por la fecha de creación) y lo copiamos en otra ruta con otro nombre. Lo editamos y le realizamos las siguientes modificaciones:

  • Borrar todas las líneas anteriores al CREATE CONTROLFILE (incluido el STARTUP NOMOUNT). La última línea que debe quedar en el fichero es la de CHARACTER SET y el ; de la línea siguiente.
  • Modificar todas las referencial al SID de la BDD Origen poniendo el SID de la BDD Clon.
  • Modificar el PATH de todas las líneas donde sea necesario.
  • Modificar el REUSE por SET.

Una vez modificado todo y eliminado lo que sobra, lo guardamos en un sitio que sea accesible desde la BDD Clon.

Al final del mismo fichero tenemos los comandos para modificar el tablespace temporal. Nos los guardamos a parte para mas adelante modificando la ruta de los ficheros si es necesario.

3.- Copiar ficheros de BDD Origen a BDD Clon

Ahora tenemos que copiar en la BDD Clon algunos de los ficheros de la BDD Origen. Los ficheros que tenemos que copiar o restaurar de un backup son los siguientes:

  • Fichero de inicio init (se tendrá que modificar el nombre del fichero en el destino)
  • Fichero orapw (se tendrá que modificar el nombre del fichero en el destino)
  • Datafiles
  • Redonlines

En caso de no restaurar de backup, lo ideal seria copiar los Datafiles, controlfiles y Redonlines con la BDD Origen parada.

IMPORTANTE: Recurda modificar los permisos de los ficheros si el propietario de la BDD es un usuario diferente.

4.- Configuración de BDD Clon

Una vez tenemos todos los ficheros necesarios de la BDD Origen, solo nos queda configurar la BDD Clon para que arranque usándolos.

Lo primero de todo es modificar el fichero de inicio para poder ajustar todos los datos que sean necesarios, como el SID y las rutas de los ficheros. Si clonamos sobre una BDD ya existente, usaremos su propio fichero de inicio.

Una vez tenemos ajustado el fichero de inicio, arrancamos la BDD sin montarla:
STARTUP NOMOUNT

En caso de ser un clon sobre una BDD ya existente, tendríamos que arrancar la BDD utilizando el fichero de inicio ya existente:
# Inicio con init:
STARTUP NOMOUNT PFILE=/dbclon/soft/dbs/initDBCLON.ora
# Inicio con spfile:
STARTUP NOMOUNT SPFILE=/dbclon/soft/dbs/spfileDBCLON.ora

Y ejecutamos el fichero que hemos creado en el paso 2:
@ccfDBCLON.sql

Es importante que aparezca el mensaje de que los controlfiles se han creado. En caso de no salir ese mensaje, revisar el script. Si no aparece el ese mensaje NO SEGUIR ADELANTE.

Una vez confirmado que el script ha finalizado correctamente, arrancamos la BDD reseteando los logs:
ALTER DATABASE OPEN RESETLOGS;

Ahora, verificamos que no tenemos tablespace temporal (es normal):
SELECT * FROM DBA_TEMP_FILES;

y como no los tenemos, pues los creamos manualmente. Para ello, tenemos el script que nos hemos guardado al final del paso 1:
ALTER TABLESPACE TEMP ADD TEMPFILE '/dbclon/oradata/temp01.dbf' SIZE 1024M REUSE AUTOEXTEND OFF;

Reiniciamos la BDD para que arranque normalmente:
SHUTDOWN IMMEDIATE
STARTUP

y finalizamos el proceso modificando el Global Name de la BDD:
ALTER DATABASE RENAME GLOBAL_NAME TO DBCLON.WORLD;

En caso de ser no ser un clon sobre una BDD ya existente, solo nos quedaría pendiente modificar el tnsnames, configurar el listener y crear el spfile.

5.- Enjoi it!!

Y ya tenemos la BDD clonada y prepara para todo lo que le queramos hacer ;)

Tags:

Pingback

[...] Al final, resulta que ya lo hice hace tiempo... que despiste ^_^ Clonar BDD Oracle. Tags: [...]

Enviar un comentario nuevo

El contenido de este campo se mantiene privado y no se mostrará públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Mientras tanto, en "¿Alguien ha visto mi martillo?"...


Inicio de sesión


Todo el contenido mostrado ha sido obtenido libremente por la red. Las marcas indicadas son propiedad de sus legítimos dueños y se muestran a modo informativo de manera libre y voluntaria, sin intención publicitaria ni ánimo de lucro. Todo el material propio, y salvo que se indique lo contrario, se encuentra bajo licencia Creative Commons. Si tienes el Copyright de algún contenido o has detectado algna anomalia, por favor, infórmalo al correo undomain@gmail.com para ser corregido cuanto antes. El autor de esta Web no se hace responsable del contenido de terceras personas y de sites ajenos a este.

Powered by Drupal, an open source content management system