El otro día me encontré con que el DataGuard que monté hace unas semanas tenia la StandBy sin actualizar.
Resulta que al ser maquinas de prueba, el disco se llenó sin que saltaran alarmas, con lo que algunos Archivers no se replicaron y los que si se replicaron no se pudieron ejecutar.
Cuando te encuentras con estos casos tienes dos posibilidades:
1) Recuperar la StandBy partiendo de un backup de los archivers de la BDD Primary.
2) Recrear la StandBy desde cero.
La primera opción tiene la ventaja de que no requiere parar en ningún momento la Primary, y los archivers se siguen replicando (aunque sin ejecutarse).
En mi caso, al ser un entorno de pruebas que no tiene ni backup ni monitorización ni nada por el estilo, me toca la opción... y eso es lo que voy a explicar: Como recrear la Standby desde cero.
Antes de empezar hay tener presente que este proceso necesita que la Primary se pare durante unos minutos (depende del tamaño.... a mas grande, mas tiempo parada).
Este proceso consiste en repetir algunos de los pasos que se hicieron al montar el DataGuard.
Lo primero de todo es identificar que realmente la StandBy está sin actualizarse. Esto lo podemos ver con la siguiente sentencia:
SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
Esta consulta con dará un listado con la secuencia de archivers que tiene y si están ejecutados o no:
SEQUENCE# APP
---------- ---
62 YES
63 YES
64 NO
65 NO
85 NO
86 NO
91 NO
92 NO
93 NO
Como vemos, hay un par de saltos en la secuencia, y poco antes del primer salto ha dejado de aplicar los archivers.
Esto significa que ha pasado "algo" y que, aunque se hayan replicado algunos archivers, estos no se han ejecutado.
Lo primero que se ha de hacer es detener las dos BDD, la Primary y la StandBy. Para esto basta con cerrar la BDD normalmente:
SQL> SHUTDOWN IMMEDIATE
Ahora, se han de copiar los DataFiles y los ControlFiles de la Primary a la StandBy reemplazando los existentes. Es aconsejable hacer un backup previo.
RECUERDA QUE LA PRIMARY TIENE QUE ESTAR PARADA.
Cuando se termine de copiar los ficheros, se tiene que recrear el Control File para la StandBy. Para esto, tenemos que ejecutar los siguientes comandos en la Primary:
IMPORTANTE: Si el fichero ya existe, bórralo antes. Esto no lo reemplaza.
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS 'c:\stdby.ctl';
SQL> ALTER DATABASE OPEN;
Con esto, ya tenemos la Primary funcionando. Ahora solo tenemos que copiar el ControlFile recién creado en la StandBy reemplazando el existente.
Ya solo nos queda poner en marcha la StandBy con los siguientes comandos:
SQL> STARTUP MOUNT
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
Ya tenemos nuestra StandBy resucitada y funcionando... ahora solo es cuestión de tener mas cuidado con ella :)







Muchas gracias por los datos,
Muchas gracias por los datos, hace tiempo que estoy buscando como realizar estas acciones en Oracle 10g sinceramente... los quiero
Pues tuyos son :) Me alegro
Pues tuyos son :)
Me alegro que te sean útiles.
Muy bueno el detalle de como
Muy bueno el detalle de como crear una phisical standby database, pero como hago para configurar el switch over?
Ya que es importante que el segudno equipo tome el control para cuando el principal deje de funcionar.
Y la otra pregunta es, que pasa si se corta la energia general, ambos equipos dejan de funcionar, cuando vuelve la energia, solo el nodo secundario se enciende, pero no toma el rol principal, por lo que no fue automarico, por que?
Mil gracias por la respuesta!!!
Lo que comentas es normal.
Lo que comentas es normal. Con esta configuración no se hace un SwitchOver automático... eso lo tengo pendiente.
En cuanto tenga información suficiente para un articulo, lo pondré.
Si te corre prisa, lo que tendrias que hacer es mirar en el metalink de Oracle.
Enviar un comentario nuevo