Header Ads

Clonar una DB Oracle

Mucho se ha hablado de este tema, sin embargo desafortunadamente Oracle no "clona" bases de datos. Cuando hablamos de clonar una DB, nos referimos a una réplica exacta de la base de datos en origen y destino. Digamos que tenemos dos servidores con el mismo S.O. y versión de Oracle, e idéntica configuración en ambos lados, entonces cuando vamos a clonar (duplicar, hacer backup, o como quieran llamarle) de un server origen a otro destino, se supone que los datos, configuraciones, usuarios y contraseñas, aparezcan en el servidor destino exactamente igual que en el origen, pero esto no es así. Incluso cambia hasta la estructura interna de la base.
Si hacemos una comparación en ambos servidores después de la migración, veremos que las carpetas donde está alojada la DB ya no es la misma, ni tampoco su estructura y archivos, a pesar de que los datos siguen intactos... Pero para nuestra suerte, existe una forma de replicarla con ayuda externa. Pero primer citemos los métodos existentes
Métodos para hacer backup, clonar o duplicar una DB en Oracle
EM (Mantenimiento/Clonar Base de datos): El inconveniente con esta opción es que necesita una base de datos abierta en modo ARCHIVELOG. Por lo tanto, requiere que se reinicie como se menciona AQUI
RMAN: Es un método bueno pero demorado. Puedes consultarlo AQUI
SQL PLUS (línea de comando): Muy técnico. Para usuarios avanzados. Puede consultarlo AQUI
DBCA Templates: Es el método más sencillo, eficiente y rápido, pero necesitamos de un paso adicional externo para completarlo.
A continuación explicaremos como clonar una DB Oracle y no morir en el intento. Este método ha sido testeado con Windows Server 2003 y Oracle 10g y demoró en su totalidad entre 15 y 20 minutos con una DB de 10GB. Utilice un disco externo (usb, e-sata, etc) para el transporte de archivos.
Método DBCA Templates
En el servidor origen
1. Inicie Database Configuration Assistant (DBCA). (Todos los Programas/ Oracle/ OracleDb10g_home1/ Configuration and Migration Tools / Database Configuration Assistant, o escriba “dbca” desde cmd
2. En la pantalla “Welcome” haga clic en el botón “Next”.
3. En la pantalla “Operations” selecciona la opción "Manage Templates” y haga clic en el botón “Next”.
4. En la pantalla “Manage Templates” selecciona la opción “Create a database template” y seleccione la sub-opción ” From and existing database (structure as well as data)” y haga clic en el botón “Next”.
5. En la "Source database” pantalla de selección de la instancia de base de datos correspondiente y haga clic en el botón “Next”.
6. En la pantalla “Template properties” introduce un nombre de tu preferencia y una descripción para la plantilla, confirma su ubicación para guardarla (deje la que trae por defecto) y haga clic en el botón “Next”.
7. En la pantalla "Location of database related files” elige entre mantener la ubicación de los archivos (maintain the file locations) o convertirlos a la estructura OFA (convert to OFA structure), la segunda es la recomendada y luego haga clic en el botón “Finish”.
8. En la pantalla “Confirmation” haga clic en el botón “Ok”.
9. Espere mientras el asistente la barra de progreso va avanzando y recoge información sobre la base de datos origen, respalda la base de datos y crea la plantilla. Dependiendo del tamaño de la base de datos esto tomará algún tiempo. El promedio es a razón de 1GB x minuto. Ahora tenemos la plantilla creada, la cual usaremos para crear nuestra base de datos en el servidor destino. Cuando termine, copie la carpeta con los archivos resultantes de la plantilla (.ctl, .dbf, etc) en el servidor destino, en la misma ubicación que tenía en el servidor origen.
En el servidor destino
10. Haga clic en la “Next Operation”.
11. Selecciona “Create a Database” y Haga clic en “Next”.
12. En “Select a template from the following list to create a database” selecciona el nombre de la plantilla que ingresastes en el paso 6 y Haga clic en “Next”. (aquí aparece la plantilla creada en el servidor origen)
13. Proporciona el nombre del nuevo servicio para la nueva base de datos. El SID se ajustará automáticamente al nombre del servicio ingresado. Haga clic en “Next”.
14. Deja marcadas las opciones “Configure the Database with Enterprise Manager” y “Use Database Control for Database Management”. Haga clic en “Next”.
16. Proporciona una contraseña para SYS (la misma del servidor origen) y Haga clic en “Next”.
17. Deja marcada la opción “File System” a menos que desees utilizar ASM o RAW para tu nueva base de datos.
18. Deja marcado “Use Database File Locations from Template”. Haga clic en “Next”.
19. Deja como están los valores por defecto para “Flash Recover Area” y haga clic en “Next”.
20. Deja como esta “No Scripts to run” y haga clic en “Next”.
21. Puedes mantener los valores por defecto para la memoria (Memory) y tamaño (Sizing) o modificarlas según tus necesidades y haga clic en “Next”.
22. Ahora en la pantalla final puedes ver todas las configuraciones y verificar que estén correctas. Haga clic en “Next”, DBCA hará todo el trabajo y tu base de datos debe estar en funcionamiento en minutos.
Comprobando en servidor destino
Por último antes de ingresar a la nueva base de datos con EM, revisa el tnsnames.ora y mira si se ha creado una entrada para la nueva base de datos de lo contrario agrega una. Debes agregar un nuevo listener en tu listener.ora (puedes copiar el mismo del servidor origen, y también entrar al regedit y exportar las claves del listener en un archivo .reg y ejecutarla o importarla del servidor destino). Luego si quieres hacer un “lsnrctl reload” para volver a cargar los listeners. Por último haga un tnsping a tu nueva base de datos para comprobar todos está bien. Inicia sesión usando EM y debes tener lista tu DB en modo Open.
Paso Final
En este punto de la historia ya está la base de datos clonada, sin embargo hay un PERO. Los usuarios bloqueados y cuentas expiradas, y hay que asignar nuevamente contraseñas. Si solo tienes 20 usuarios pues no es mayor cosa, pero si hay 100, 500 o más, esto puede convertirse en algo infernal. Para solucionarlo y que la DB quede exactamente igual a la del servidor origen (con las mismas contraseñas antiguas, etc) hay dos maneras de solucionarlo: Cold con un LiveCD o Hot con el programa Unlocker (también puede usar otro de su preferencia. Consulte varias alternativas similares AQUI):
Hot (en caliente)
a. Instala el programa unlocker en ambos servidores (origen y destino). Puede descargarlo AQUI
b. Ve al servidor origen (donde se creó la plantilla), copia la carpeta oradata (o donde estén ubicada/s la/s base/s de dato/s o sea archivos .dbf .ora etc), luego click en el botón derecho del mouse y con unlocker la desbloqueas (hagalo varias veces hasta que Windows deje de monopolizar estos archivos). Si sale algún error, ignóralo.
c. Una vez la carpeta esté desbloqueada totalmente (ya se deja copiar). Por tanto, eliges copiar, luego ve al servidor destino, realiza la misma operación de desbloqueo. Luego borras la carpeta y la reemplazas con la del servidor origen.
d. Reinicia ambos servidores
Cold (En frío) (recomendado)
a. Inicias ambos servidores (origen y destino) con un LiveCD de tu preferencia (Linux o Windows). Recomendamos el mini windows XP que viene incluido en Hiren's BootCD. Puede descargarlo AQUI
b. En el servidor origen (donde creaste la plantilla) copia la carpeta oradata (o donde estén ubicada/s la/s base/s de dato/s o sea archivos .dbf .ora etc) y luego ve al servidor destino, elimina la misma carpeta y reemplazala por la del servidor origen.
c. Reinicia ambos servidores
Ahora ya puedes usar tu Oracle de respaldo. Si verifica, podrás comprobar que ambos son EXACTAMENTE IGUALES, con los mismos usuarios, contraseñas, datos y configuraciones.
Para Linux es un procedimiento muy similar, con la diferencia que para desbloquear los procesos en Hot debes ejecutar el comando kill sobre los PID abiertos de Oracle. Para mayor información consulte AQUI
Este método es muy útil para los administradores DBA y de red, ya que pueden usar una VM (redundante pasiva) para tener guardado el servidor destino (respaldo) y en casos de daños en el servidor origen (principal), arrancar la VM con su hipervisor preferido (Oracle VirtualBox, VMWare, etc) con la misma IP, mac, nombre y demás configuraciones, y así no haya interrupciones en el servicio; o también en una VM (redundante activa) de operación simultánea para prevenir fallos.

Fuentes consultadas
Con la tecnología de Blogger.