Oracle - Pregunt Dataguard

 
Vista:

Pregunt Dataguard

Publicado por isaac (13 intervenciones) el 01/07/2015 08:56:56
Buenos Días.

Mi consulta es la siguiente:

Estoy montando un dataguard y he visto que la forma de trabajar de oracle es moviendo los archivelogs generados a la standby. Esto significa que hasta que no se genera un archivelog nuevo, la standby no se actualiza dejando un tiempo sin actualizar la standby. Si hubiera un fallo antes entre medias de esta generación , se perderian datos.
Esto es así o hay alguna manera de configurarlo de tal manera para que sea una replica exacta.

Un Saludo y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Pregunt Dataguard

Publicado por Rafael (328 intervenciones) el 01/07/2015 10:11:20
Los archivelog se estan generando continuemente, realmente se actualizan cuando alcanzan el tamaño que le has diseñado:

En db_recovery_file_dest_size indicamos el límite máximo de espacio para los archives. Podemos aumentarlo o disminuirlo:
1
SQL> alter system set db_recovery_file_dest_size = 20G scope=both;

A ver me explico tu insertas un nuevo dato este va a la principal, y en la stanby se copia al archivelog, para optimizar el proceso este cambio se aplica en dos momentos:

1. Cuando el ficherro alcanza el tamaño que le has indicado.
2. Cuando deja de ser stand by a active aplica todos los archivelogs que tenga pendientes con lo que no has perdido datos y sea una replica exacta previa a la caida del principal.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pregunt Dataguard

Publicado por isaac (13 intervenciones) el 01/07/2015 10:32:47
lo primero muchas gracias por la respuesta, y esta es mi preocupación:

Si en la base de datos original, no se ha llegado a llenar un redo, con algunas transaciones que se hayan realizado ( esto no generaría archive), y en ese momento se rompe el servidor principal. ¿ Esas transaciones que no llegaron a generar archivelog se replicarían en la standby, es decir, que si pusiera la standby de principal, esas transaciones no estarían incluidas o si?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Pregunt Dataguard

Publicado por Rafael (328 intervenciones) el 01/07/2015 11:07:08
El redo y el archive log se llenan al mismo tiempo... el archive log se procesa hasta que alcanza su limite es decir esta ahi guardado pero sin procesar.

En el momento en que "vasculara" la Base de datos convirtiendo la Stand By en principal, se aplicarian los cambios de todos los archivelogs, una vez que terminara estaria operativa, con lo cual tendrias exactamente lo mismo al momento del crash...

Vaya que es la ventaja del dataguard, las replicas no las hace en linea por la simple razon de evitar el overhead que eso significaria, para eso usa los archivelog a modo temporal...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pregunt Dataguard

Publicado por isaac (13 intervenciones) el 01/07/2015 11:56:22
Gracias Rafael.

Perdona mi ignorancia pero te explico mi prueba fallida:

Tengo mi primary y mi standby funcionando, en la primary creo un usuario nuevo y despues de la creacion , apago el servidor donde tengo la primaria, cuando voy a la standby a intentar realizar un Switchover para convertirla en primaria, no me deja con el siguiente mensaje.

Switchover: Media recovery is still active
Database not available for switchover
End-Of-REDO archived log file has not been recovered

y si la activo como Failover:

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
SQL> ALTER DATABASE ACTIVATE STANDBY DATABASE;

No me ha creado el usuario en la standby, asi que me quedo sin la ultima transación hecha.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Pregunt Dataguard

Publicado por Rafael (328 intervenciones) el 01/07/2015 12:20:33
Te has saltado unos pasos:

SQL> alter database recover managed standby database disconnect;
SQL> alter database recover managed standby database using current logfile disconnect;

Y ahora si:

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
SQL> ALTER DATABASE ACTIVATE STANDBY DATABASE;

Pruebas y me cuentas???

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pregunt Dataguard

Publicado por isaac (13 intervenciones) el 01/07/2015 13:54:22
Nada, que no lo consigo.

A ver , segun lo entiendo yo lo que me puede estar pasando... Oracle no genera ningun archivelog hasta que ocurren dos cosas:

1 .- se llena un redolog
2 .- se le obliga con un switch logfile

Al no generarme ningun archive, este no se replica en la standby y por lo tanto no me lo puede incluir en la standby.

Podría ser eso lo que me esté pasando?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Pregunt Dataguard

Publicado por Rafael (328 intervenciones) el 01/07/2015 14:32:40
Por partes como Jack el Destripador:

1. Levantas la BBDD Primaria o Principal
2. La Standby se levanta en los siguientes pasos:
SQL>startup nomount;
SQL>alter database mount standby database;
SQL>alter database recover managed standby database disconnect from session;
SQL>alter system switch logfile;

Y ya esta funcionando ... asi normalmente.
VAYA asi es como lo tengo yo todo el tiempo...

Provocas el fallo y apagas la Principal.

Intentas el Swithover si este falla o te manda el error:
End-Of-REDO archived log file has not been recovered

Entonces:
SQL> alter database recover managed standby database disconnect;
SQL> alter database recover managed standby database using current logfile disconnect;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
SQL> ALTER DATABASE ACTIVATE STANDBY DATABASE;

Y deberia estar al dia...
Si tu trabajs con la BBDD principal sin el switch logfile y provocas el crash la opcion entonces es:

desde el sistema operativo:
rman target /
CATALOG START WITH '/BckOracle/rman/XXX/'; <== OJO LA RUTA DONDE GENERA EL RESPALDO
recover database;
Y al termino continuas a partir de este punto...
SQL> alter database recover managed standby database disconnect from session;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pregunt Dataguard

Publicado por isaac (13 intervenciones) el 06/07/2015 10:26:43
Perdona Rafael por no entender muy bien el funcionamiento de Dataguard, haré la pregunta de otra manera.

Según creo, puede ser que me equivoque, cuando se realiza alguna transacion Oracle usa el redo buffer, después el proceso LGWR escribe en los redo log. Lo que no estoy seguro es de lo siguiente:

Si realizas una transación que se guarda en el redo buffer y esta no ha sido grabada al redo log todavia y en ese mismo instante la BDD Original se destroza, que pasaria:

1 .- Perdería los datos no grabados en el redo logs

2 .- Aun en este caso se replicarían en la BDD Standby.

Un Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Pregunt Dataguard

Publicado por Rafael (328 intervenciones) el 06/07/2015 11:03:00
Hola:

Pues en principio deberian de replicarse ya sea mediante el recover o el switch logfile...

No obstante dependara si le dio o no tiempo al commit, y en este eventual caso suponiendo que perdieses algo serian MUY pocos registros, o TODA una transaccion lo cual es ideal no crees???

Vaya puedes continuar tu operacion donde la dejaste asumiendo que no se guardo... justo lo que estaba al momento del crash...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar