Oracle10g: Manual standby database (planteamiento inicial)

Una base de datos Oracle en Standby es una copia exacta de una base de datos operativa en un servidor remoto, usada como backup, como copia para consulta, recuperación de desastres, etc.

Una base de datos en modo Standby es algo más que un backup normal ya que se puede poner en producción en caso de desastre en un tiempo menor que si tuvieramos que restaurar una copia (ya sea desde rman o un simple export).

Restaurar una copia desde fichero tarda tiempo, y durante este periodo el sistema no está disponible. Con una base de datos adicional en modo standby no hay nada (o casi nada que restaurar) en caso de desastre. En cuestión de minutos se hace el cambio permitiendo continuidad en el servicio. No nos ofrece las ventajas de rendimiento de un cluster o la seguridad del espejo pero la relación de costes de tiempo y licencia versus ventajas me parece correcta.

Desde un punto de vista global:

  • Disponemos de una copia de la base de datos de forma remota, que podemos contabilizar como segundo juego de copias.
  • A diferencia de un simple backup, la copia se mantiene viva y los datos son actualizados con mayor frecuencia.
  • En caso de desastre la podemos usar en cuestión de minutos sin esperar a restaurar un backup entero, ya sea lógico(export) o físico(rman).
  • Sirve como entorno de pruebas más real para la prueba de parches y estimación de tiempos. El volumen de datos es idéntico.
  • Tengo entendido que una base de datos en standby se puede usar hasta 10 dias al año sin coste de licencia (aunque mira por donde Microsoft te deja 30 dias... )

Desde un punto de vista técnico:

  • Los cambios en la base de datos principal se captura en los archivos de redo log.
  • Los archivos de redo no son permanentes, son sobreescritos de forma rotativa (en este estado aún no se copia al segundo servidor).
  • Se hace una copia del redo log. La copia permanente se llama archive log.
  • Los archive logs(copias de redo log) se transfieren al servidor en standby. En sistemas linux por ejemplo podemos hacerlo mediante rsync.
  • Se aplican los archive logs transferidos a la base de datos en standby quedando actualizada.

A nivel global los pasos a seguir para montar el chiringuito pueden ser los siguientes:

  1. Configurar la base de datos principal para que funcione en modo archivelog.
  2. Preparar un script para hacer una copia en caliente (usando rman).
  3. Crear un fichero de control standby (control file) en la base de datos principal.
  4. Copiarlo todo (fichero de configuración, de control y copia rman) en el segundo servidor (donde montamos la base de datos en standby).
  5. Reconfigurar rutas (usando DB_FILE_NAME_CONVERT en init.ora o a manita).
  6. Iniciar la segunda base de datos en modo mount standby database.
  7. Restaurar datos (recover database).
  8. Sincronizar de forma periódica(cron) transportando (rsync?) y aplicando los archive logs.

 

En otro post intentaré entrar en más detalle con un ejemplo... y las utilidades que le podemos dar.