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.

 

No olvidemos la vuelta atrás

Sólo comentar que también es conveniente planificar como último paso la vuelta atrás a la base de datos de producción original en caso de que se tenga que utilizar la base de datos en Standby.

En un tiempo aceptable habrá que volver a recrear o actualizar la BD de producción inicial, pero incluyendo los cambios que se produzcan en el tiempo que esté activa la BD en Standby, y eso puede llegar a ser bastante complicado según las condiciones del entorno..

Trafico a la Standby DB

Tengo una duda, despes del paso 7, como rediriges todo el trafico que iva a la instancia X que estaba en el servidor N, hacia la nueva instancia X (deduzco que el nombre de la instancia es el mismo) que esta en el servidor M?

Lo digo por que en algun momento diras a todas las aplicaciones que va al servidor N a buscar la instancia X que ahora deben ir al servidor M a buscar la instancia X, no?

X.N >>> X.M

No se si me explico.

 

Gracias.

Buenas, Para redirigir el

Buenas,

Para redirigir el tráfico hay distintas maneras (manuales y automáticas) pero la manera más simple es apagar/desconectar el servidor original y ponerle la misma direcció n IP al servidor M. De esta manera tan "manual" solo haces un cambio en lugar de cambiar las 50 aplicaciones que usaban el servidor N.

Saludos,

Contenido relacionado

  •  

    La consulta es sobre dataguard de oracle. Una herramienta que se ve muy potente a la hora de una roptura inesperada de una DB. Crea una DB espejo, en la que copia en forma dinamica todo lo que se esta haciendo en la principal; al momento de caer la DB principal, esta base se activa. Queria saber si alguien sabe la forma de implementarla. Se que hay una forma de crear una DB de copia desde RMAN y ponerla en standby, y cada vez que se baja la base copia los Archivelog en la copia, pero de esta forma es estatica y perderia el sentido del dataguard... 

    Saludos.

  • La cláusula loggin/nologging añadida cuando creamos una tabla, índice, tablespace... determina si se crea registro de la sentencia en los redo log y su correcta restauración desde backup. Tiene guasa porque si creamos una tabla con opción nologging efectivamente no se crea registro pero de alguna manera esta si se tiene en cuenta en el diccionario de datos.
    Al terminar la recuperación los bloques correspondientes a la tabla/índice son marcados como corruptos y cuando intentemos acceder obtendremos un error como el siguiente...

     

  • Oracle10g: Poner la base de datos en modo archivelog y hacer backups con rmanEl modo archivelog de una base de datos Oracle protege contra la pérdida de datos cuando se produce un fallo en el medio físico y es el primer paso para poder hacer copias de seguridad(en caliente!!) con rman. Para poner la base de datos en modo archivelog (sin usar la flash recovery area) debemos hacer básicamente dos cosas, añadir dos parámetros nuevos al fichero de configuración, reiniciar la base de datos y cambiar el modo trabajo a archivelog.

    Como poner la base de datos Oracle 10g en modo archivelog

    1. Editamos el init.ora para añadir los siguientes parámetros
      *.log_archive_dest='/ejemplo/backup/'
      *.log_archive_format='SID_%r_%t_%s'
      .....

     

  • A continuación dejo un par de ejemplos de como funciona el backup simple de sqlserver 2008 y como hacer un restore. En el primer ejemplo hacemos un drop de la base de datos que en un entorno real puede significar la perdida de un datafile o disco etc etc. El segundo ejemplo es algo más rebuscado y lo que se hace es restaurar la copia de la base de datos para recuperar una tabla y extraer sus datos. En ambos ejemplos se trabaja con bases de datos de ejemplo descargables aquí.

     

  • Hola a todos,

     

    Hice un backup en frio de una base de datos Oracle 9i que tenía. Lo que copié fue:

    • Datafiles
    • Redo logs
    • Control files
    • spfile.ora

    Después de un tiempo tuve que desinstalar Oracle y volver a instalar una bbdd Oracle 9i en blanco.

    Ahora quiero restaurar mi antigua bbdd con los datafiles, redo logs, control files que tenía en la inicial. Di por hecho que sustituyendo los nuevos por los antiguos ya estaba (ya que es una base de datos en blanco y con la misma configuración que la antigua) pero no funcionó. ¿Que tengo que hacer?

     

    Gracias

 

 

 

Gestion del Conocimiento    |    Business Intelligence y Analítica    |     Bases de Datos    |      ERP     |      CRM      |     Tendencias tecnológicas