ORASTB - Desarrollado por Victor Endara Manosalvas
ORASTB es un servicio que se encarga de realizar la réplica de la base de datos Principal a una BD de datos Standby en caliente. Aunque este es un esquema Activo/Pasivo la base de datos Stanby puede estar disponible para consultas (Si tiene proceso ETL de datawarehouse), esto si quisieras descargar la carga de trabajo a tu BD Principal puedes usar la Standby para las consultas.
Como administradores de base de datos una de las tareas que menos tiempo dedicamos, pero por ello no deja de ser importante es la "Continuidad del Negocio", esto va orientado a las disponibilidad de todos los servicios tecnológicos de la organización con un DRP (para los que no saben: Plan de recuperación ante desastre) en la que se incluye nuestras BD, en la mayoría de lugares que he visitado los DBA o encargados de las BD solo se limitan a mantener en buen rendimiento la BD, pocas veces se preocupan de los respaldos y si hablamos de contingencia ni hablar!!!.
Si tu servidor de BD sufre algún daño (Dios no quiera), cuanto tiempo está dispuesto tu organización a estar sin sistema, está dispuesto a perder información? Si los ingresos de tu organización es sistema-dependiente pues no creo que tengas mucho tiempo de holgura y no te permitan perder información.
Para implementar una contingencia de BD tenemos algunas opciones en el mercado:
Implementar Oracle Data Guard (Active o también) para replicar la BD en la Nube o centro de cómputo alterno
Implementar con herramienta de terceros para replicar la BD en la Nube o centro de cómputo alterno
En si tenemos algunas alternativas para esta implementaciones, pero también hay que tomar en cuenta que esto va acompañado de inversión económica en servicios, hardware y licencias esto va a depender de cuál de las arquitecturas vamos a implementar. En mi caso no disponía del presupuesto suficiente, asi que decidí realizar una herramienta de replicación de BD Oracle que la llame ORASTB.
Comparto la herramienta ORASTB realizada por mi para su uso sin costo alguno, a continuación explicare su funcionamiento y como implementarla.
Características ORASTB
- Es un servicio que se instala y configura en el servidor Standby.
- Copia los Archivelog generados en el servidor Principal para llevarlos al Standby
- Aplica los archivelog en el servidor Standby
- Configuración de horarios de copiado de archivelog.
- Configuración de horarios de aplicado de archivelog.
- Configuración de borrado automáticos de archivelog.
- Establecer tiempo mínimo de generación archivelog.
El servicio está realizado para plataformas Windows y lo he probado en Oracle DB 10g y 12C en plataformas WS 2003R2 y WS 2012
ORASTB Cuenta con una consola administrativa bastante simple, en donde podemos monitorear y configurar el servicio.
Links de descarga:
ORASTB x64
ORASTB x86
Consola ORASTB - Servicio
En esta pestaña podemos ver:
- Estado del servicio con opción de iniciar/detener.
- Estado de las instancias Principal y Standby, así como su secuencia de archivelog
- Log de eventos del servicio, aquí nos daremos cuenta de lo que está realizando el servicio en tiempo real.
- Opción FailOver, en caso de una caída del servidor Pricipar el servidor Standby se procede cambiar a modo principal, es decir se apertura a modo Lectura/Escitura.
Consola ORASTB – Sistema Config
En esta pestaña se configura generalidades del servicio
- Intervalo tiempo en minutos: Se configura el intervalo de tiempo que el servicio estará ejecutándose pare realizar las verificaciones.
- Horario de copia de archivos ARC: Se especifica las horas en que el servicio podrá realizar las copias de los archivelog desde el servidor Principal.
- Horarios de aplica ARC: Se especifica las horas en que se aplicaran los archivelog en la base de datos Standby. Durante la aplicación de archivelog, la base de datos no va a estar disponible para lectura, por lo que si tenemos servicio Datawarehouse que apunten a la base Standby van a perder la conexión durante la aplicación de los archivelogs.
Consola ORASTB – DB Config
Esta pestaña contiene información relacionada con la conectividad de las base de datos Principal y Standby.
- Extensión ARC: Indica cual es la extensión de los archivos archivelog que se van a copiar.
- Tiempo mínimo Log: Este parámetro establece cual es tiempo minimo que la BD Principal debe de generar LOG, si el umbral pasa este valor entonces ORASTB forzará a la generación de archivelog.
- Host: IP o Nombre del host PRINCIPAL o STANDBY
- DB SID: Nombre identificador del servicio de BD PRINCIPAL o STANDBY
- Listener: Puerto del listener del servidor PRINCIPAL o STANDBY
- DB User: Usuario con privilegios DBA de la BD PRINCIPAL o STANDBY
- DB Password: Password usuario con privilegios DBA de la BD PRINCIPAL o STANDBY.
- Ruta ARC: PRINCIPAL se debe de especificar la ruta de red de donde se tomaran los archivelog. STANDBY se debe de especificar la ruta destino donde se enviaran los archivelogs.
- Read Only: Configuración solo para la BD STANDBY, indica si la BD esta disponible en modo lectura, si se desactiva la BD STANDBY no podrá ser accedida por conexiones de red. Si se implementa estrategia procesos ETL Datawarehouse deberá activar el casillero para que la BD este disponible en modo Lectura.
Implementación ORASTB
Planeación de la arquitectura
En nuestro plan a implementar tenemos un servidor Principal y uno Standby, ambos equipos deben homogéneos es decir igual SO y motor de base de datos, se recomienda que sea igual característica en procesado y memoria, pero esto puede aceptar variaciones.
Pre-Requisito
Principal
- La base de datos debe de estar en modo archivelog.
- Sistema Operativo igual que el Principal
- Motor de base de datos igual que el Principal
- Capacidad de almacenamiento igual que el Principal
- Memoria RAM igual que el Principal
- Configurar en modo ARCHIVELOG la BD Principal y direccionarlos a una carpeta específica del filesystem (Para nuestra practica lo realizaremos en la ruta E:\backup\oracle\orcl\archivelog)para compartir con el servidor Standby.
- Sacar un backup full de la BD con el RMAN en el servidor Principal.
- Recuperar la BD en el servidor Standby.
- Instalar y configurar el servicio ORASTB en el servidor Standby
Configuración en la BD del servidor Principal
Verificar si la BD esta en
modo ARCHIVELOG
|
SQL>
select log_mode from v$database;
LOG_MODE
------------
ARCHIVELOG
|
Direccionar los archivelog
a la ruta que vamos a compartir al servidor STANDBY
|
#>set
Oracle_sid=orcl
#>sqlplus
/ as sysdba
//Configuramos
la ruta donde vamos a almacenar los archivelog
//Comando
para 12C
SQL>
alter system set log_archive_dest_1=
'LOCATION=E:\backup\oracle\orcl\archivelog' scope=SPFILE;
//Comando
para 10G
SQL>
alter system set log_archive_dest=' E:\backup\oracle\orcl\archivelog\'
scope=SPFILE;
|
Establecer la extensión ARC de los archivelog
|
//Configuramos
el formato con el que se generara los archivelog
SQL>
alter system set log_archive_format= 'ARC%S_%R.%T.ARC' scope=SPFILE;
|
Si no lo está modo
ARCHIVELOG activarlo
|
#>set
Oracle_sid=orcl
#>sqlplus
/ as sysdba
SQL>
shutdown immediate;
SQL>
startup mount;
SQL>
alter database archivelog;
SQL>
alter database open;
|
Compartimos la carpeta “E:\backup” que contiene el archivelog en el servidor Principal.
Nota: Esta carpeta deberá tener los respectivos permisos de lectura a los grupos o usuarios que van acceder desde el servidor Standby.
2 Sacar un backup full de la BD con el RMAN en el servidor Principal
Realizaremos con el RMAN un backup full de la BD del servidor Principal incluyendo los control file, ojo que necesitamos incluir e identificar el respaldo del controlfile para la reconstrucción de la BD en el servidor Standby.
Ejecutamos
con el RMAN el respaldo
|
#> set Oracle_sid=orcl
C:\>rman target /
connected to target database: ORCL (DBID=1447292720)
//Ojo con este número marcado DBID, lo vamos a necesita para
recrear la BD en el servidor STANDBY
run{
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK
TO 'E:\backup\oracle\orcl\backup\control_%F';
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT
'E:\backup\oracle\orcl\backup\%d_%Y%M%D%U';
BACKUP INCREMENTAL
LEVEL 0 DATABASE
include current
controlfile
plus archivelog;
}
|
El
respaldo generado fue direccionado a la ruta E:\backup\oracle\orcl\backup
la cual ya la tenemos
compartida para que la vea el servidor STANDBY
3 Recuperar la BD en el servidor Standby.
Como requisito debemos tener en el servidor Standby ya instalado el motor de la base de datos con una instancia Oracle básica ya creada.
Pasos que vamos a seguir:
- Crear la instancia de BD en el servidor Standby
- Desactivamos el inicio automático de la instancia Orcl del servidor Standby
- Copiar el respaldo de la BD Principal al servidor Standby
- Recuperación de la BD en el servidor Standby
- Configuración archivo INIT
- Recupera la BD en el servidor Standby
Crear la instancia de BD en el servidor Standby
Con el DBCA crearemos la instancia con las misma estructuras de fileserver que la BD del servidor Principal.
Desactivamos el inicio automático de la instancia Orcl del servidor Standby
El servicio ORASTB es quien se encargará de subir y bajar la base de datos para realizar la aplicación de los Archivelog, por ello se debe de desactiva el inicio automático.
Esto lo vamos a realizar desde el regedit, dependiendo de la versión del motor de BD y del nombre de la BD esto puede variar: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDB12Home1
En este caso buscamos la variable ORA_ORCL_AUTOSTART, que es la que está relacionada con nuestra instancia ORCL.
Copiar el respaldo de la BD Principal al servidor Standby
Copia del Backup del
servidor Principal
|
C:\>copy
\\CSC-DB-PROD-01\backup\oracle\orcl\backup\* E:\backup\oracle\orcl\back
up\
|
Configuración archivo INIT
Copiar el archivo Init de la base de datos %OracleHome%\INITorcl.ora del servidor Principal al Servidor Stanby
Si no existe el pfile, crearlo en el servidor
Principal
|
>set
ORACLE_SID=ORCL
>sqlplus /
as sysdba
SQL>create
pfile='E:\app\oracle\product\12.1.0\dbhome_1\database\INITorcl.ora'
from spfile;
File created.
|
Luego de crearlo debe de ser copiado del servidor Principal en la misma ruta en el servidor Standby.
Nota: el archivo INITorcl.ora no se tiene que editar siempre y cuando se tenga la misma arquitectura de filesystem, memoria y procesador, si por ejemplo tu servidor Principal tiene mas memoria que el Standby podrás disminuir la memoria asignada a la instancia desde el INITorcl.ora.
Recupera la BD en el servidor Standby
A partir de ahora empezaremos a realizar la recuperación de la base de datos con el RMAN de Oracle.
Nos conectamos con el RMAN
|
>set
ORACLE_SID=ORCL
>rman
target / nocatalog
Recovery
Manager: Release 12.1.0.2.0 - Production on Fri Sep 30 11:30:27 2016
Copyright
(c) 1982, 2015, Oracle and/or its affiliates.
All rights reserved.
connected
to target database: ORCL (DBID=1451692359)
//Ojo,
este número desde de ser reemplazado por el DBID de la BD Principal
using
target database control file instead of recovery catalog
|
Bajamos la instancia
|
RMAN>
shutdown immediate;
database
closed
database
dismounted
Oracle
instance shut down
|
Iniciamos la instancia
desde el archivo INITorcl.ora en modo NOMOUNT
|
RMAN> run
{startup nomount
pfile='E:\app\oracle\product\12.1.0\dbhome_1\database
\INITorcl.ora';}
Total System
Global Area 822083584 bytes
Fixed
Size 3050992 bytes
Variable
Size 612368912 bytes
Database
Buffers 201326592 bytes
Redo
Buffers 5337088 bytes
|
Creamos el SPFILE
|
RMAN>
sql "create spfile from pfile";
|
Establecemos el DBID de la
BD del servidor Principal.
Recordar que lo hicimos
mención al momento de sacar el respaldo!!, para obtenerlo, debes de
conectarte con el RMAN en el servidor Principal y ver los mensajes al momento
de la conexión:
connected to target
database: ORCL (DBID=1447292720)
|
RMAN> Set DBID 1447292720;
executing command: SET DBID
|
Recuperar los control file
del respaldo del RMAN
Este nombre de archivo va
no va a ser el mismo cuando genere el respaldo, por lo que tendrán que editar
el script para reemplazar el nombre del archivo
|
RMAN>
restore controlfile from 'E:\backup\oracle\orcl\backup\CONTROL_C-144729272
0-20160930-01';
Starting
restore at 30-SEP-16
using channel
ORA_DISK_1
channel
ORA_DISK_1: restoring control file
channel
ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file
name=E:\APP\ORACLE\ORADATA\ORCL\CONTROL01.CTL
output file
name=E:\APP\ORACLE\RECOVERY_AREA\ORCL\CONTROL02.CTL
|
Montamos la BD Standby
|
RMAN> sql
"alter database mount";
sql
statement: alter database mount
released
channel: ORA_DISK_1
|
Recatalogamos el respaldo que copiamos del
Principal al Standby
|
RMAN>
catalog start with "E:\backup\oracle\orcl\backup\" noprompt;
searching for
all files that match the pattern E:\backup\oracle\orcl\backup\
List of Files
Unknown to the Database
=====================================
File Name:
E:\BACKUP\ORACLE\ORCL\BACKUP\CONTROL_C-1447292720-20160930-01
cataloging
files...
cataloging
done
List of
Cataloged Files
=======================
File Name:
E:\BACKUP\ORACLE\ORCL\BACKUP\CONTROL_C-1447292720-20160930-01
|
Restablecemos la BD
|
RMAN>
restore database;
Starting
restore at 30-SEP-16
allocated
channel: ORA_DISK_1
channel
ORA_DISK_1: SID=11 device type=DISK
channel
ORA_DISK_1: restore complete, elapsed time: 00:01:05
Finished
restore at 30-SEP-16
|
4 Instalar y configurar el servicio ORASTB en el servidor Standby
Ahora realizaremos la instalación y configuración del servicio ORASTB, hay que tomar en cuenta lo siguite:
- Para plataformas Windows x64 o X86
- Requiere Framework 3.5 o superior
Pasos a seguir:
- Descarga de archivos ORASTB_x64 o ORASTB_x86
- Instalar servicio
- Configurar parámetros de ORASTB desde la administración
Instalar servicio
Establecer
los permisos sobre la carpeta donde reside el servicio E:\ORASTB_SERVICIO, el
usuario debe de ser con el cual se realizó la instalación Oracle y
Administrador.
|
|
Instalar servicio ORASTB
Ir al directorio %Windows%\Microsoft.NET. se debe de seleccionar el
framwork de 32 o 64 bits, depende de la compilación y del ORASTB que decarguen,
en este caso se usar la de 64btis
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
|
Desde un CMD
installutil “E:\ORASTB_SERVICIO\ORASTB.EXE”
El mensaje al
final debe indicar que se creó el servicio de forma correcta.
|
Establece usuario de sesión
del servicio
En la administración de servicios buscar ORASTB y establecer usuario
Oracle o Administrator, debe de ser el propietario de la instalación Oracle
|
|
Configurar parámetros de ORASTB desde la administración
Debemos establecer la configuración necesaria para que el servicio realice la aplicación de los archivelog como rutas e informacion de las instancias de BD.
Para más informacional de cada uno de los campos, está en la parte inicial de este documento.
Para
ejecutar la consola administrativa crear acceso directo o ejecutar E:\ORASTB_SERVICIO\E:\ORASTB_SERVICIO\ORASTB_ADM.EXE
|
Configuración “Sistema Config”
Dependiendo
de la necesidad deberán establecer la configuración
|
|
Configuración “DB Config”
Llenar
los datos del Principal y Standby así como de sus instancias
|
|
Establecer inicio en automático e iniciar
Una vez
configurado e iniciado el servicio podrán ver la actividad en la consola
Listo ya tienes una base de datos Oracle Standby actualizadose de manera automática. En caso de que falle tu BD Pricipal para activar tu base de datos Standby debes:
- Presionar el boton FailOver. esto pondrá en modo READ/WRITE la BD Standby
- Direccionar tus conexiones de aplicaciones a la BD Standby que paso a ser Principal.
- Si deseas hacer mas transparente puedes manejar este direccionamiento por medio de tu DNS o Cambiar tu IP del servidor Stanby con la del Principal(Cabe recalcar que el Principal no debe de estar en uso)
Correo:victor.endara@gmail.com
Telefono:593999627457
No hay comentarios:
Publicar un comentario