Inicio » Oracle » Backup/Restore » Restaurar un controlfile dañado

Restaurar un controlfile dañado

Un controlfile dañado se puede recuperar de una copia multiplexada o recrearlo de un backup, esto último no debe ser necesario si se ha seguido la técnica de multiplexar los control files.

Los control files se pueden recuperar a  través de SQL*Plus y el sistema operativo o a través de RMAN, de hecho si  el backup se hizo a través de backup set, RMAN es la única solución.

El control file es un archivo imprescindible para el funcionamiento de la base de datos. La pérdida de uno de estos archivos provoca  la parada de la base de datos o en el caso de que estemos intentando levantar la base de datos y el proceso SMON detecte que no existe uno de estos archivos la base de datos se quedará en estado NOMOUNT y escribirá en el alert log una entrada indicándonos cuál de los controlfile no ha sido capaz de encontrar.

Siempre que el controlfile este multiplexado, la recuperación por perdida de una de las copia es sencilla. Simplemente se debe sustituir el archivo dañado por una de las copias intactas.

Si una de los copias falla se puede quitar la referencia en el parámetro CONTROL_FILE del spfile, o lo que es más recomendable restaurar el controlfile dañado de una de las copias intactas.  

 Pasos:

  1. Si la instancia no ha caído, pararla utilizando SHUTDOWN ABORT.
  2. Copiar utilizando comandos del sistema operático uno de los controfiles no dañados, si el fallo se ha provocado por la pérdida de un disco o de una controladora, copiar el nuevo controfile en otro lugar y luego actualizar el archivos de parámetros con la nueva localización.
  3. Iniciar la base de dato.

Ejemplo:

La base de datos se ha caído, porque se ha dañado el siguiente controlfile /u02/oradata/prueba/control02.ctl .  No recordamos donde están los controlfiles.

Levantamos la instancia para consultar el archivo de parámetros

SQL>startup nomount
SQL>show parameter CONTROL_FILE
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     0
control_files                        string      /u01/oradata/prueba/control01.ctl, /u02/ora
                                                 data/prueba/control02.ctl, /u01/oradata/
                                                 prueba/control03.ctl
SQL>exit

Restauramos la copia a través del sistema operativo:

cp /u01/oradata/prueba/control01.ctl  /u01/oradata/prueba/control04.ctl
 

Si fuera necesario modificamos el spfile, recordar que si no hay spfile se tiene que editar el pfile:

sqlplus ‘/ as sysdba’
SQL> alter system set contro_file = ‘/u01/oradata/prueba/control01.ctl’, ‘/u01/oradata/prueba/control03.ctl’, ‘/u01/oradata/prueba/control04.ctl’ scope=spfile;
SQL> exit

 

Un pensamiento en “Restaurar un controlfile dañado

  1. Pingback: Restaurar un controlfile dañado | DbRunas

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