ORA-00333 ¿Como recuperar un Redo log corrupto?.

Hola Amig@s pues lo que les cuento un paso a paso de como recuperar/eliminar/limpiar un fichero de REDO de una BBDD oracle 10 y 11g:

NOTA: como ya sabemos, RMAN no realiza copia de seguridad de los ficheros REDO por lo que o se generan con el comando ALTER DATABASE OPEN RESETLOGS o no hay forma, a menos claro que tengan una copia en frio de la bbdd.

1-Nos conectamos a la base de datos con nuestro SQL y la paramos:

C:\>SQLPLUS sys/sys as sysdba

SQL> shutdown immediate

2-Montamos la base de datos sin abrirla:

SQL> startup mount;

3-Ahora debemos saber si alguno de los REDO esta con el atributo INVALID o cual esta ACTIVO (CURRENT), para ello , ejecutamos la siguiente query:

SQL> SELECT GROUP#, STATUS, MEMBER FROM V$LOGFILE;

SQL> SELECT GROUP#, MEMBERS, STATUS, ARCHIVED
FROM V$LOG;

Si el REDO 2 por ejemplo esta dañado y esta inactivo ejecutaremos:

SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2;

Si el grupo entero del REDO 2 esta dañado entonces ejecutaremos:

SQL> ALTER DATABASE CLEAR LOGFILE UNARCHIVED GROUP 2;

Si el grupo REDO 2 esta offline y necesita ser limpiado entonces ejecutaremos:

SQL> ALTER DATABASE CLEAR LOGFILE UNARCHIVED GROUP 2 UNRECOVERABLE DATAFILE;

Una vez terminado hay que hacer una copia completa de la bbdd.

4-En el caso de que el REDO este activo hay que realizar la siguiente operacion:

SQL> ALTER SYSTEM CHEKPOINT;

SQL> STARTUP MOUNT

SQL> RECOVER DATABASE UNTIL CANCEL

Escribimos: CANCEL

SQL>ALTER DATABASE OPEN RESETLOGS

5-En el caso de que hayamos perdido un REDO es decir el propio fichero, podemos copiar uno y renombrarlo a otra ruta, por ejemplo:

SQL> ALTER DATABASE RENAME FILE '/oradata/trgt/redo01.log' TO '/tmp/redo01.log';

SQL> ALTER DATABASE OPEN RESETLOGS;

En fin, espero que les resulte util.
Share on Google Plus
    Blogger Comment

0 comentarios: