viernes, 28 de noviembre de 2008

¿Archive log perdido? No reconstruya su Standby

Otro problema recurrente con las bases de datos standby es la pérdida de uno o más archive logs aún no aplicados. La solución era usualmente el reconstruir nuevamente la base de datos standby, lo cual si bien es relativamente fácil, puede consumir bastante tiempo. Esto fue lo que algunos sugirieron a un afligido DBA que pedía ayuda en el foro de Oracle Technet, afortunadamente si estás usando Oracle 10gR2 la solución es mucho más simple y rápida, ¿suena bien? entonces vamos con el procedimiento.

1. Detener la sincronización de la base de datos standby
2. STDB> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
3. Obtener el SCN al cual se ha llegado en la base de datos standby
4. STDB> SELECT CURRENT_SCN FROM V$DATABASE;
5. Obtener un backup incremental de la base de datos primaria con RMAN, a partir del SCN obtenido en el paso previo
6. RMAN> BACKUP INCREMENTAL FROM SCN
7. DATABASE FORMAT '/tmp/ForStandby_%U' tag 'FORSTANDBY';
8. Catalogar el backup del paso previo en la base de datos standby
9. RMAN> CATALOG START WITH '/tmp/ForStandby';
10. Recuperar la base de datos standby con el backup ya catalogado
11. RMAN> RECOVER DATABASE NOREDO;
12. En la base de datos primaria crear un nuevo standby controlfile
13. RMAN> BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/tmp/ForStandbyCTRL.bck';
14. Detener la base de datos standby y levantarla con nomount
15. RMAN> SHUTDOWN;
16. RMAN> STARTUP NOMOUNT;

17. Restaurar el standby controlfile obtenido en el paso (6) en la base de datos standby
18. RMAN> RESTORE STANDBY CONTROLFILE FROM '/tmp/ForStandbyCTRL.bck';
19. Detener la base de datos standby levantarla con mount
20. RMAN> SHUTDOWN;
21. RMAN> STARTUP MOUNT;

22. Limpiar los standby redo logs en la base de datos standby
23. STDB> ALTER DATABASE CLEAR LOGFILE GROUP 1;
24. STDB> ALTER DATABASE CLEAR LOGFILE GROUP 2;
25. STDB> ALTER DATABASE CLEAR LOGFILE GROUP 3;
26. Si estaba activo Flashback Database, reiniciarlo
27. STDB> ALTER DATABASE FLASHBACK OFF;
28. STDB> ALTER DATABASE FLASHBACK ON;

29. Reiniciar el recovery de la base de datos standby
30. STDB> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

Este procedimiento aplica no sólo cuando un archive log se ha perdido, sino también cuando se han realizado operaciones con nologging en la base de datos principal o cuando hay un gran retraso en la sincronización. Puedes revisar el texto completo en el manual Oracle Data Guard Concepts and Administration.

2 comentarios:

Enrique Orbegozo dijo...
Este comentario ha sido eliminado por el autor.
Enrique Orbegozo dijo...

Hola, veo que has publicado mi articulo en tu Blog, el detalle es que no has colocado detalle alguno sobre el autor del mismo lo cual puede llevar a creer que es de tu entera pertenencia. Por favor, coloca la referencia a: Snapshot Too Old
Gracias por adelantado.