Un 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 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
STDB> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
STDB> SELECT CURRENT_SCN FROM V$DATABASE;
RMAN> BACKUP INCREMENTAL FROM SCN <SCN from previous step>
DATABASE FORMAT '/tmp/ForStandby_%U' tag 'FORSTANDBY';
4. Catalogar el backup del paso previo en la base de datos standby
RMAN> CATALOG START WITH '/tmp/ForStandby';
5. Recuperar la base de datos standby con el backup ya catalogado
RMAN> RECOVER DATABASE NOREDO;
6. En la base de datos primaria crear un nuevo standby controlfile
RMAN> BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/tmp/ForStandbyCTRL.bck';
RMAN> SHUTDOWN;
RMAN> STARTUP NOMOUNT;
8. Restaurar el standby controlfile obtenido en el paso (6) en la base de datos standby
RMAN> RESTORE STANDBY CONTROLFILE FROM '/tmp/ForStandbyCTRL.bck';
RMAN> SHUTDOWN;
RMAN> STARTUP MOUNT;
10. Limpiar los standby redo logs en la base de datos standby
STDB> ALTER DATABASE CLEAR LOGFILE GROUP 1;
STDB> ALTER DATABASE CLEAR LOGFILE GROUP 2;
STDB> ALTER DATABASE CLEAR LOGFILE GROUP 3;
STDB> ALTER DATABASE FLASHBACK OFF;
STDB> ALTER DATABASE FLASHBACK ON;
12. Reiniciar el recovery de la base de datos standby
STDB> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;