Inicio > Base de Datos, Oracle > ORACLE : CONTROLFILE

ORACLE : CONTROLFILE

Que es el ControlFile (Archivo de Control)

El ControlFile de una base de datos, almacena el estado de la estructura física de una base de datos, en ellos se guarda la información de todos los ficheros que forman la base de datos, la ubicación incluso, asi como el estado actual de la base de datos. Son utilizados para mantener la consistencia interna y guiar las operaciones de recuperación y son imprescindibles para que la Base de Datos pueda arrancar.

La localización del control file se especifica en los parámetros de inicialización. El control file es el elemento fundamental en proceso de recuperación de una base de datos. El parámetro CONTROL_FILES del fichero init.ora contiene la lista de todos los control file.

Contenido del ControlFile

  • Información de arranque y parada de la base de datos.
  • Nombres de los archivos de la base de datos y redo log
  • El nombre de la base de datos a la cual el controlfile pertenece, un controlfile solo puede pertenecer a una base de datos.
  • El time stamp de la creación de la base de datos.
  • El nombre de los datafiles, donde están situados y la información sobre su estatus online/offline.
  • El nombre de los archivos redo log y donde están situados.
  • Información sobre los archivos redo log.
  • El nombre de los tablespace
  • El ultimo “log sequence number”, identificador único que se incrementa y se guarda cada vez que se cambia de online redo log
  • La ultima información del check point
  • El comienzo y el fin de los segmentos de UNDO
  • La información sobre el back up del recovery Manager(RMAN).

 

Que debes saber del ControlFile

  • Un archivo de control pertenece a una sola base de datos.
  • Un archivo de control se crea al mismo tiempo que se crea la base de datos en función del parámetro CONTROL_FILES en el PFILE .
  • El control file se actualiza continuamente y debe de estar disponible en todo momento.
  • Cuando se levanta una base de datos Oracle utiliza el control file para identificar los datafiles y los redo logs y encargarse de abrirlos
  • Una base de datos Oracle lee primero archivo de control listado en el PFILE, pero escribe continuamente en todos los archivos de control (existe más de uno).
  • Si todas las copias de los archivos de control para una base de datos se pierden / destruyen, entonces la recuperación de la base de datos se debe realizar antes de abrir la base de datos.
  • Nunca debe intentar modificar un archivo de control ya que solo el servidor de Oracle debe modificar este archivo.
  • Mientras que los archivos de control son pequeños, el tamaño del archivo se ve afectado por los siguientes parámetros de comando CREATE DATABASE o CREATE CONTROLFILE si tienen valores grandes.
    • MAXLOGFILES
    • MAXLOGMEMBERS
    • MAXLOGHISTORY
    • MAXDATAFILES
    • MAXINSTANCES

Multiplexación del ControlFile

Los archivos de control (ControlFile) se deben multiplexar, esto significa que se guardan más de una copia idéntica y cada copia se almacena en una unidad de disco física separada; por supuesto, su Servidor debe tener múltiples unidades de disco para poder hacerlo. Incluso si solo hay una unidad de disco disponible, aún debe multiplexar los archivos de control.

  • La Multiplexación evita la necesidad de recuperar la base de datos si se destruye una copia de un archivo de control en un bloqueo de disco o por eliminación accidental al disponer de otra.
  • Puede guardar hasta ocho copias de archivos de control: Oracle Server actualizará automáticamente todos los archivos de control especificados en el archivo de parámetros de inicialización a un límite de ocho.
  • Se puede crear más de una copia de un archivo de control especificando la ubicación y el nombre del archivo en el parámetro CONTROL_FILES del PFILE cuando se crea la base de datos.
  • Durante la operación de la base de datos, solo lee el primer archivo de control listado en el parámetro CONTROL_FILES , pero todos los archivos de control listados se escriben para mantener la coherencia.

También puede agregar archivos de control adicionales. Cuando se utiliza un PFILE , esto se logra cerrando la base de datos, copiando un archivo de control existente en un nuevo archivo en una nueva unidad de disco, editando el parámetro CONTROL_FILES del PFILE , y luego reiniciando la base de datos. Si utiliza un SPFILE, puedes usar los pasos especificados en la figura que se muestra aquí. La diferencia es que nombramos el archivo de control en el primer paso y crea la copia en el paso 3.

Crear un nuevo ControlFile

Un DBA creará nuevos archivos de control en estas situaciones:

  • Todos los archivos de control para la base de datos se han dañado permanentemente y no tiene una copia de seguridad de archivo de control.
  • Desea cambiar el nombre de la base de datos. (ej: entraba en conflicto con otro nombre de base de datos)
  • Nota: Puede cambiar el nombre de la base de datos y el DBID (identificador interno de la base de datos) utilizando la utilidad DBNEWID .

Ejemplo de creación de nuevo fichero.

CREATE CONTROLFILE
   SET DATABASE USER350
   LOGFILE GROUP 1 ('/u01/oradata/prod/redo01_01.log',
                    '/u02/oracle/prod/redo01_02.log'),
           GROUP 2 ('/u01/oracle/prod/redo02_01.log',
                    '/u02/oracle/prod/redo02_02.log'),
           GROUP 3 ('/u01/oracle/prod/redo03_01.log',
                    '/u02/oracle/prod/redo03_02.log')
   RESETLOGS

   DATAFILE '/u01/student/dbockstd/oradata/USER350system01.dbf' SIZE 350M,
            '/u01/student/dbockstd/oradata/USER350sysaux01.dbf' SIZE 350M,
            '/u02/student/dbockstd/oradata/USER350undo01.dbf' SIZE 64M,
            '/u02/student/dbockstd/oradata/USER350users01.dbf' SIZE 5M
            '/u02/student/dbockstd/oradata/USER350temp01.dbf' SIZE 64M
   MAXLOGFILES 50
   MAXLOGMEMBERS 3
   MAXLOGHISTORY 400
   MAXDATAFILES 200
   MAXINSTANCES 6
   ARCHIVELOG;

 

  • La instrucción CREATE CONTROLFILE puede dañar potencialmente los archivos de datos especificados y rehacer los archivos de registro.
  • Solo se emite como un comando en la etapa NOMOUNT .
  • Omitir un nombre de archivo puede causar la pérdida de los datos en ese archivo, o la pérdida de acceso a la base de datos completa.
  • Si la base de datos forzó el registro habilitado antes de crear el nuevo archivo de control y deseas que continúe habilitado, debe especificar la cláusula FORCE LOGGING en la instrucción CREATE CONTROLFILE .

Pasos a seguir cuando se debe volver a crear un archivo de control:

  1. Haga una lista de todos los archivos de datos y rehacer los archivos de registro de la base de datos.
SELECT MEMBER FROM V$LOGFILE;
SELECT NAME FROM V$DATAFILE;
SELECT VALUE FROM V$PARAMETER WHERE NAME = 'control_files';

Si no tiene tales listas y su archivo de control se ha dañado para que no se pueda abrir la base de datos, intente localizar todos los archivos de datos y rehacer los archivos de registro que constituyen la base de datos. Los archivos no especificados en el paso 5 no son recuperables una vez que se ha creado un nuevo archivo de control. Además, si omite alguno de los archivos que componen el espacio de tabla SYSTEM, es posible que no pueda recuperar la base de datos.

  1. Cierre la base de datos.

Si la base de datos está abierta, cierre la base de datos normalmente si es posible. Use las cláusulas IMMEDIATE o ABORT solo como último recurso.

SQL > SHUTDOWN IMMEDIATE;
  1. Realice una copia de seguridad de todos los archivos de datos y rehaga los archivos de registro de la base de datos.
  2. Inicie una nueva instancia, pero no monte o abra la base de datos:
SQL > STARTUP NOMOUNT
  1. Cree un nuevo archivo de control para la base de datos usando la instrucción CREATE CONTROLFILE .

Al crear un nuevo archivo de control, especifique la cláusula RESETLOGS si ha perdido algún grupo de registro de rehacer además de los archivos de control. En este caso, tendrá que recuperarse de la pérdida de los registros de rehacer (paso 8 ). Debe especificar la cláusula RESETLOGS si ha cambiado el nombre de la base de datos. De lo contrario, seleccione la cláusula NORESETLOGS.

  1. Almacene una copia de seguridad del nuevo archivo de control en un dispositivo de almacenamiento fuera de línea.
  2. Edite el parámetro de inicialización CONTROL_FILES para que la base de datos indique todos los archivos de control que ahora forman parte de su base de datos tal como se creó en el paso 5 (sin incluir el archivo de control de respaldo). Si está cambiando el nombre de la base de datos, edite el parámetro DB_NAME en su archivo de parámetros de instancia para especificar el nuevo nombre.
  3. Recupere la base de datos si es necesario. Si no está recuperando la base de datos, salte al paso 9 .

Si está creando el archivo de control como parte de la recuperación, recupere la base de datos. Si el nuevo archivo de control se creó utilizando la cláusula NORESETLOGS (paso 5 ), puede recuperar la base de datos con recuperación completa y cerrada de la base de datos.

Si el nuevo archivo de control se creó utilizando la cláusula RESETLOGS, debe especificar USAR EL ARCHIVO DE CONTROL DE RESPALDO. Si ha perdido registros de datos o registros de rehacer archivados o en línea, use los procedimientos para recuperar esos archivos.

  1. Abra la base de datos usando uno de los siguientes métodos:
  • Si no realizó la recuperación, o si realizó una recuperación completa y cerrada de la base de datos en el paso 8 , abra la base de datos normalmente.
ALTER DATABASE OPEN;
  • Si ha especificado RESETLOGS al crear el archivo de control, use la instrucción ALTER DATABASE, que indica RESETLOGS.
ALTER DATABASE OPEN RESETLOGS;

Recuperando un ControlFile

¿Qué pasa si falla una unidad de disco?

Utilice los siguientes pasos para recuperarse de una falla en la unidad de disco que tiene uno de los archivos de control de la base de datos ubicados en la unidad.

  • Apaga la instancia.
  • Reemplace la unidad fallida.
  • Copie un archivo de control de una de las otras unidades de disco a la nueva unidad de disco: aquí suponemos que u02 es la nueva unidad de disco y ctl es el archivo dañado.

$ cp /u01/oracle/oradata/control01.ctl /u02/oracle/oradata/control02.ctl

  • Reinicia la instancia. Si el nuevo medio (unidad de disco) no tiene el mismo nombre que la unidad de disco dañada o si está creando una copia nueva mientras espera una unidad de disco de reemplazo, modifique el parámetro CONTROL_FILES en el PFILE antes de reiniciar la base de datos.
  • No se requiere recuperación de medios.
  • Si está esperando una nueva unidad de disco, puede modificar el parámetro CONTROL_FILES para eliminar el nombre del archivo de control en la unidad de disco dañada, esto le permite reiniciar la base de datos.

 

Copia de seguridad del ControlFile y crear archivos de control adicionales

Oracle recomienda la copia de seguridad de los archivos de control cada vez que cambia la estructura de la base de datos física, incluyendo:

  • Agregar, eliminar o cambiar el nombre de los archivos de datos.
  • Agregar o eliminar un espacio de tabla, o alterar el estado de lectura / escritura de un espacio de tablas.
  • Agregar o eliminar archivos o grupos de registro de rehacer.

Utilice la instrucción ALTER DATABASE BACKUP CONTROLFILE para hacer una copia de seguridad de los archivos de control.

ALTER DATABASE BACKUP CONTROLFILE A '/u02/oradata/backup/control.bkp';

Ahora use una instrucción SQL para producir un archivo de rastreo (escriba un script SQL en el archivo de rastreo) que pueda ser editado y utilizado para reproducir el archivo de control.

ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

Para crear archivos de control adicionales, siga los pasos especificados anteriormente para multiplexar archivos de control.

Leer el ControlFile

Para ver el contenido del fichero CONTROLFILE debemos traquearlo en otro fichero SQL de la siguiente manera:

SQL> alter database backup controlfile to trace as   'C:\CREATE_CONTROL.sql' 

 

Eliminar un ControlFile

Los archivos de control se eliminan cuando una ubicación ya no es apropiada, por ejemplo, una unidad de disco ha sido eliminada del uso de una base de datos.

  1. Cierre la base de datos.
  2. Edite el parámetro archivo init.ora CONTROL_FILES eliminando el nombre del archivo de control anterior.
  3. Reinicia la base de datos.

Controlar la información del archivo

Se pueden usar varias vistas de rendimiento dinámico y comandos SQL * Plus para obtener información sobre los archivos de control.

  • V$CONTROLFILE : proporciona los nombres y el estado de los archivos de control para una instancia de Oracle.
  • V$DATABASE : muestra información de la base de datos de un archivo de control.
  • V$PARAMETER : enumera el estado y la ubicación de todos los parámetros.
  • V$CONTROLFILE_RECORD_SECTION : enumera información sobre las secciones de registro del archivo de control.
  • SHOW PARAMETER CONTROL_FILES comando – enumera el nombre, el estado y la ubicación de los archivos de control.

 

Fuente: controlfiles.wikispaces.com, http://www.siue.edu

Anuncios
Etiquetas: ,
  1. Aún no hay comentarios.
  1. No trackbacks yet.

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 )

Google photo

Estás comentando usando tu cuenta de Google. 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 )

Conectando a %s

A %d blogueros les gusta esto: