Ámbito de aplicación
Oracle Database – Enterprise Edition – 9.0.1.0 y posteriores. El contenido de este archivo se aplica a cualquier plataforma.
Propósito
Este archivo busca identificar las causas y soluciones del error ORA-1113.
Pasos de solución
El error ORA-1113 suele ocurrir al recuperar un archivo de datos.
Definición del error ORA-01113:
ORA-01113, 00000, “file %s needs media recovery”
Causa: se intentó poner en línea o abrir una base de datos con un archivo que necesita recuperación de medios. Acción: aplicar primero la recuperación de medios al archivo.
Si ocurre el error ORA-01113, siempre se acompañará del error ORA-01110.
ORA-01113: file 28 needs media recovery
ORA-01110: data file 28: ‘/h04/usupport/app/oracle/oradata/index02.dbf’
Este error ocurre cuando el archivo de datos, el archivo de control y otros archivos de datos no son la última versión. La estructura de datos de Oracle está fuertemente acoplada, lo que significa que todos los archivos de datos, archivos redo y archivos de control deben mantenerse sincronizados de manera sincrónica cuando se inicia la base de datos o cuando se completa un punto de control.
Esto significa que todos los archivos deben mantener el mismo número de SCN. Si aparece un archivo de datos con un número de SCN diferente, se producirá un error ORA-1113. Por ejemplo, si un tablespace está en modo de copia en caliente, el punto de control de cada archivo de datos será el mismo hasta que se complete la copia de seguridad. Si la base de datos se detiene durante la copia en caliente y no se realiza la recuperación, se producirá un error ORA-1113. Si solo se ha realizado una copia de seguridad de uno de los archivos de datos en el tablespace, el SCN de ese archivo de datos puede ser más bajo que el de los demás archivos de control y tablespace.
Cambie el archivo de datos a sin conexión y no cambie el SCN.
Si cambió el archivo de datos a en línea antes de recuperar el archivo de datos, su SCN puede ser más antiguo que el de otros archivos de datos en línea y se producirá el error ORA-1113.
Comience por ver estas operaciones:
Vistas de rendimiento dinámicas v$log y v$logfile.
- Si la base de datos no se ha iniciado, monte la base de datos: SQL> STARTUP MOUNT;
- Conéctese a la base de datos y busque: SQL> connect / as sysdba SQL> SELECT V1.GROUP#, MEMBER, SEQUENCE#, FIRST_CHANGE# FROM V$LOG V1, V$LOGFILE V2 WHERE V1.GROUP# = V2.GROUP# ;
Esto muestra una lista de todos los archivos de registro en línea y su secuencia correspondiente.
El siguiente paso es considerar las soluciones para ORA-1113.
Posibles causas y soluciones:
I. Haga una copia en caliente del tablespace y arranque la base de datos
- Montar la base de datos SQL> STARTUP MOUNT;
- Cuando se apaga la base de datos, encuentre qué archivo de datos se realiza una copia de seguridad en caliente y ejecute la siguiente consulta: SQL> SELECT V1.FILE#, NAME FROM V$BACKUP V1, V$DATAFILE V2 WHERE V1.STATUS = ‘ACTIVE’ AND V1.FILE# = V2.FILE#;
- Para cada archivo de datos que se pueda encontrar, ejecute el siguiente comando:
SQL> ALTER DATABASE DATAFILE ‘</path/filename>’ END BACKUP; 4. Inicie la base de datos:
SQL> ALTER DATABASE OPEN;
II. Recuperación de archivos de datos desde una copia de seguridad. ********************************************************************
La base de datos está en modo ARCHIVELOG
- Monte la base de datos SQL> STARTUP MOUNT;
- Recupere el archivo de datos: SQL> RECOVER DATAFILE ‘</path/filename>’; Para recuperar varios archivos de datos en un tablespace, ejecute el siguiente comando:
SQL> RECOVER TABLESPACE <nombre de tablespace>;
Para recuperar varias tablespaces, ejecute el siguiente comando:
SQL> RECOVER DATABASE;
Continúe verificando cada archivo de registro de archivo a archivo hasta que aparezca el mensaje “Recuperación de medios completa”. Compare la secuencia de registro en línea y la secuencia de registro utilizada en el mensaje de error ORA-280 para ingresar la ruta absoluta adecuada del registro de recuperación. Inicie la base de datos SQL> ALTER DATABASE OPEN; B. Si la base de datos no está en modo ARCHIVELOG: Ejecute la siguiente consulta:
SQL> SELECT FILE#, CHANGE# FROM V$RECOVER_FILE; Si CHANGE# es mayor que el valor mínimo de FIRST_CHANGE#, se puede recuperar el archivo de datos. Proporcione un registro en línea válido mediante una sugerencia en este caso. Si CHANGE# es menor que el valor mínimo de FIRST_CHANGE#, seleccione uno de los siguientes métodos:
- Si el archivo de datos pertenece a una tablespace temporal o a una tablespace de índices, elimine el archivo de datos con la sentencia “ALTER DATABASE DATAFILE ” OFFLINE DROP” y luego inicie la base de datos. Una vez iniciada la base de datos, elimine y vuelva a crear la tablespace.
- Si el archivo de datos pertenece a la tablespace SYSTEM o UNDO, recupere el archivo de datos desde una copia de seguridad reciente. Si no hay ninguna copia de seguridad disponible, no se puede recuperar completamente la base de datos.
III. Cambio a estado en línea de un archivo de datos o tablespace
Recupere el archivo de datos:
SQL> RECOVER DATAFILE ‘</path/filename>’;
Para recuperar una tablespace, ejecute el siguiente comando:
SQL> RECOVER TABLESPACE <nombre de tablespace>;
Para recuperar la base de datos, ejecute el siguiente comando:
SQL> RECOVER DATABASE;
Nota: los archivos de datos sin conexión no se pueden recuperar cuando se recupera la base de datos.
Continúe verificando cada archivo de registro de archivo hasta que aparezca el mensaje “Recuperación de medios completa”. Compare la secuencia de registro en línea y la secuencia de registro utilizada en el mensaje de error ORA-280 para ingresar la ruta absoluta adecuada del registro de recuperación.
Inicie la base de datos.
SQL> ALTER DATABASE OPEN;
Recuperación incompleta con la opción ‘USING BACKUP CONTROLFILE’
Realizar una recuperación incompleta con la opción ‘USING BACKUP CONTROLFILE’ durante la recuperación
Si durante la recuperación de la base de datos se especifica la opción “RECOVER DATABASE USING BACKUP CONTROLFILE”, pero no se especifica la opción “UNTIL CANCEL”, se producirá un error ORA-1113 durante “ALTER DATABASE OPEN RESETLOGS”. Estos son los pasos para solucionar este problema:
- Realizar la recuperación utilizando el siguiente comando: SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
- Cancelar la recuperación utilizando el comando “cancel”.
- Iniciar la base de datos con el siguiente comando: SQL> ALTER DATABASE OPEN RESETLOGS;
Leave a Reply