Recuperar datafile con RMAN

La situación es la siguiente. Mi base de datos está operativa y en correcto funcionamiento pero, por algún motivo que en este momento no viene al caso, una o varias aplicaciones que acceden a esta base de datos dan un error tipo ORA-00376 e indican que no pueden acceder a un datafile. Si se realiza una consulta desde SQLPLUS para comprobar el estado del datafile, el resultado será algo como lo que sigue:

SQL> select file_name,status, online_status from dba_data_files where file_name 
like '%nombre%';
FILE_NAME                                                    STATUS    ONLINE_
------------------------------------------------------------ --------- -------
+DG/sid/datafile/nombre.366.650544699                        AVAILABLE RECOVER
Como se puede observar, el datafile se encuentra en estado RECOVER (el fichero tiene algún tipo de corrupción). Lo inmediato en este momento sería lanzar un comando recover desde la propia consola de SQLPLUS. Si la corrupción es reciente, es posible que esto funcione, pero si la corrupción del fichero data de algunas horas, lo más probable es que el intento dé algún tipo de error, como el que se puede ver a continuación:
SQL> recover datafile ‘+DGANCD/ancri/datafile/know.366.650544699’;
ORA-00279: el cambio 7306246681017 generado en 05/24/2009 02:45:57 es necesario para el thread 1
ORA-00289: sugerencia: +DGANCF/ancri/1_15322_619033057.dbf
ORA-00280: el cambio 7306246681017 para el thread 1 está en la secuencia número 15322
Especificar log: {<RET>=sugerido | nombre_archivo | AUTO | CANCEL}
ORA-00308: no se puede abrir el archive log ‘+DGANCF/ancri/1_15322_619033057.dbf’
ORA-17503: ksfdopn:2 Fallo al abrir el archivo +DGANCF/ancri/1_15322_619033057.dbf
ORA-15173: entry ‘1_15322_619033057.dbf’ does not exist in directory ‘ancri’
SQL> recover datafile '+DG/sid/datafile/nombre.366.650544699';

ORA-00279: el cambio 7306246681017 generado en 05/24/2009 02:45:57 es necesario para el thread 1

ORA-00289: sugerencia: +DG/sid/1_15322_619033057.dbf

ORA-00280: el cambio 7306246681017 para el thread 1 está en la secuencia número 15322

Especificar log: {<RET>=sugerido | nombre_archivo | AUTO | CANCEL}

ORA-00308: no se puede abrir el archive log '+DG/sid/1_15322_619033057.dbf'

ORA-17503: ksfdopn:2 Fallo al abrir el archivo +DG/sid/1_15322_619033057.dbf

ORA-15173: entry '1_15322_619033057.dbf' does not exist in directory 'sid'

En este momento entra en juego RMAN.

Hay que acceder a RMAN ya que para la recuperación del datafile en cuestión va a ser necesario uno o varios ficheros de archivelog, que es posible hayan sido copiados a algún dispositivo externo. Se entra por tanto a RMAN y se lanza el comando correspondiente:

RMAN> recover datafile '+DG/sid/datafile/nombre.366.650544699';

Iniciando recover en 25/05/09

canal asignado: ORA_DISK_1

canal ORA_DISK_1: sid=619 instancia=SID devtype=DISK

canal asignado: ORA_SBT_TAPE_1

canal ORA_SBT_TAPE_1: sid=628 instancia=SID devtype=SBT_TAPE

canal ORA_SBT_TAPE_1: Data Protection for Oracle: version 5.4.1.0

iniciando la recuperación del medio físico

...

recover terminado en 25/05/09

Al terminar la recuperación de RMAN se lanza la misma consulta de chequeo del estado del datafile desde SQLPLUS. En este caso, el resultado será similar a lo siguiente:

SQL>  select file_name,status,online_status from dba_data_files where file_name
 like '%nombre%';

FILE_NAME                                                    STATUS    ONLINE_
------------------------------------------------------------ --------- -------
+DG/sid/datafile/nombre.366.650544699                        AVAILABLE OFFLINE
El datafile ha sido recuperado, pero se encuentra en estado OFFLINE. Para finalizar el proceso de recuperación, se pone ONLINE.
SQL> alter database datafile '+DG/sid/datafile/nombre.366.650544699' online;                                     

Base de datos modificada.

SQL>  select file_name,status,online_status from dba_data_files where file_name
 like '%nombre%';

FILE_NAME                                                    STATUS    ONLINE_

------------------------------------------------------------ --------- -------

+DG/sid/datafile/nombre.366.650544699                        AVAILABLE ONLINE

Otras entradas en mi blog relacionadas con RMAN:


10 Responses to Recuperar datafile con RMAN

  1. Miguel A. Ruiz dice:

    Muchas gracias por esta documentación.

    Ya llevaba más de 24 horas intentando levantar mi base de datos.

    Tenía 4 datafiles en RECOVER (de 3 instancias distintas)

    Ha sido tal y como lo describes…

    Tengo un par de preguntas:

    Tenía un datafile con nombre SYSAUX01.DBF que en el select de comprobación aparecía como RECOVER y después de seguir estos pasos de recuperación realizo un select a la tabla dba_data_files de todos los registros y no aparece dicho datafile, pero, físicamente si está en la carpeta del disco duro.

    Y la siguiente pregunta es ¿por qué ha ocurrido esto?

    Llevaba un par de semanas teniendo que apagar (botonazo) el servidor windows 2003 server por causas extrañas, ¿puede ser devido a esto?

    Muchas gracias nuevamente y espero con ansia tu respuestas.

    Un saludo.

    • jop89s dice:

      Bueno, la verdad es que no sé muy bien qué decirte. La administración de Oracle bajo Windows 2003 es algo distinta a la administración bajo Linux; en este último entorno hay más flexibilidad. Yo no he trabajado nunca con Oracle bajo W2k3 con lo que no te sabría decir si los reinicios eran debidos a la corrupción de los datafiles.

      Respecto a SYSAUX01.dbf, te debería aparecer como un datafile más. De hecho es un datafile del tablespace SYSAUX de Oracle, usado para su gestión interna. ¿Si haces esta consulta “select file_name from dba_data_files where tablespace_name=’SYSAUX'” no aparece nada? Sería muy raro. ¿Qué versión de Oracle tienes?

  2. Alfredo Trejo dice:

    Que tal Miguel

    Buenas tardes tienes algun correo para intercambiar
    informaciòn sobre este tema?

    Gracias

  3. Paula dice:

    Gracias!
    Me ha servido de mucho tu post

  4. Pingback: Recuperar Base de Datos usando RMAN « Blog Técnico

  5. Pingback: Crear y Configurar un Catálogo RMAN « Blog Técnico

  6. Pingback: Borrar catálogo RMAN « Blog Técnico

  7. Pingback: Ejemplos de uso de RMAN « Blog Técnico

  8. Pingback: Recuperar datafile con RMAN « Blog Técnico | IManzana

  9. Pingback: Oracle RMAN | ACP-Servicios Informáticos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: