La tarea de clonación de de una base de datos es algo bastante frecuente para un DBA ya que muchas veces es necesario tener ambientes de desarrollo o testeo actualizados con los datos que tenemos en ambientes productivos. Por lo tanto y al ser algo frecuente sería bueno contar con un procedimiento rápido y fácil para llevarlo a cabo.
Para realizar dicho procedimiento vamos a realizar una serie de pasos que detallo a continuación:
1- En nuestra base origen (a partir de ahora PROD) nos conectamos al SQL*Plus y ejecutamos:
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
Con esta sentencia obtenemos la sintaxis para realizar el “CREATE CONTROLFILE” (este archivo lo podemos encontrar dentro del directorio de trace, user_dump_dest). El archivo cuenta con la siguiente forma:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS
NOARCHIVELOG
MAXLOGFILES 12
MAXLOGMEMBERS 2
MAXDATAFILES 280
MAXINSTANCES 1
MAXLOGHISTORY 120
LOGFILE
GROUP 1 ('/u01/oradata/PROD/log1a.dbf',
'/u01/oradata/PROD/log1b.dbf') SIZE 50M,
GROUP 2 ('/u01/oradata/PROD/log2a.dbf',
'/u04/oradata/PROD/log2b.dbf') SIZE 50M
DATAFILE
'/u01/oradata/PROD/system01.dbf',
'/u01/oradata/PROD/prueba.dbf'
;
# Recovery is required if any of the datafiles are restored
# backups, or if the last shutdown was not normal or immediate.
RECOVER DATABASE
# Database can now be opened normally.
ALTER DATABASE OPEN;
2- Realizamos un shutdown en la base PROD
SQL> SHUTDOWN IMMEDIATE;
3- Ahora es momento de copiar todos los ‘data files’ y ‘log files’ al nuevo server o a la nueva ubicación. Si cambiamos el nombre de los ‘data files’ debemos realizar también los cambios en el controlfile. A modo de ejemplo supongamos que tenemos todos los ‘data files’ dentro de /u01/oradata/PROD/ y los vamos a llevar al servidor TESTER en la ubicación /u01/oradata/TEST/
rcp /u01/oradata/PROD/* TESTER:/u01/oradata/TEST
4- Copiar el archivo que obtuvimos en el punto 1 (de ahora en adelante lo llamaremos clona.sql) y modificar la siguiente línea
CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS
Por la siguiente línea
CREATE CONTROLFILE SET DATABASE "TEST" RESETLOGS
5- Quitar las siguientes líneas de clona.sql:
- RECOVER DATABASE
- ALTER DATABASE OPEN
6- Siguiendo con los cambios en clona.sql, es el turno de modificar el directorio de los ‘data files’ y ‘log files’, a modo de ejemplo:
'/u01/oradata/PROD/system01.dbf'
'/u01/oradata/PROD/prueba.dbf'
Por las siguientes línea
'/u01/oradata/TEST/system01.dbf'
'/u01/oradata/TEST/prueba.dbf'
7- En este paso podríamos crear los directorios necesarios para los ´dump´ de Oracle, a modo de ejemplo:
TEST@TESTER ] cd $ORACLE_BASE/admin
TEST@TESTER ] mkdir TEST
TEST@TESTER ] cd TEST
TEST@TESTER ] mkdir bdump
TEST@TESTER ] mkdir cdump
TEST@TESTER ] mkdir udump
TEST@TESTER ] mkdir pfile
8- Copiar el archivo de parámetro (pfile.ora), a modo de ejemplo
cd $ORACLE_BASE/admin/PROD/pfile/
rcp *.ora TESTER:/u01/oracle/admin/TEST/pfile
9- Corremos desde el sqlplus en TESTER el archivo clona.sql
SQL> @db_create_controlfile.sql
10- Luego deberíamos abrir la base de datos.
Espero que les haya servido
Saludos!
Gondalf
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario