Copias de seguridad en Bases de Datos Oracle
Las copias de seguridad son esenciales para garantizar la integridad y disponibilidad de los datos en cualquier sistema de gestión de bases de datos. En Oracle, existen dos tipos principales de copias de seguridad: lógicas y físicas.
Copias de seguridad lógicas
Las copias de seguridad lógicas consisten en leer datos de la base de datos y extraerlos, generando un archivo de exportación que podrá ser recuperado posteriormente con la orden IMPORT
de Oracle. Las utilidades IMPORT
y EXPORT
nos permiten:
- Archivar datos históricos.
- Guardar definiciones de las tablas, con o sin datos.
- Migrar datos de una versión a otra de Oracle.
- Transportar tablespaces de una base de datos a otra.
Utilidad EXPORT
Para ejecutar esta utilidad, lo hacemos en modo comando desde el sistema operativo. Los parámetros más comunes son:
USERID
: Nombre de usuario/contraseña.BUFFER
: Tamaño del buffer de datos en bytes.FILE
: Nombre del archivo de salida.COMPRESS
: Indica si la exportación debe comprimir segmentos fragmentados (Y/N).GRANTS
: Especifica si las concesiones sobre los objetos se exportan (Y/N).INDEXES
: Especifica si se exportan los índices de las tablas.DIRECT
: Indica si se realiza una exportación directa sin utilizar la caché.LOG
: Nombre del archivo para mensajes informativos y de error.ROWS
: Especifica si se exportan las filas de las tablas.CONSISTENT
: Indica si se mantiene una versión con coherencia de lectura de todos los objetos exportados.FULL
: Se realiza una exportación completa de la base de datos si se poneFULL=Y
.OWNER
: Indica una lista de cuentas de la base de datos que se van a exportar.CONSTRAINTS
: Especifica si se exportan las restricciones sobre tablas.TRIGGERS
: Especifica si se exportan los triggers.TABLES
: Especifica la lista de las tablas que se van a exportar.PARFILE
: Especifica el nombre del archivo de parámetros que se va a pasar aEXPORT
.QUERY
: Especifica una cláusulaWHERE
que se aplicará a cada tabla.TABLESPACES
: Especifica los tablespaces que se deben transportar.TRANSPORT_TABLESPACE
: Activa la exportación de tablespaces transportables.FEEDBACK
: Visualiza el proceso de exportación cada X filas.
Modos de exportación
- Modo tabla: En este modo, se exportan las definiciones de la o las tablas.
- Modo usuario: Se exportan todos los objetos del esquema del usuario.
- Modo tablespaces: Se puede utilizar para mover tablespaces de una base de datos a otra.
- Modo base de datos completa: Este modo exporta todos los objetos de la base de datos.
Utilidad IMPORT
USERID
: Nombre de usuario/contraseña.FILE
: Nombre del archivo de exportación.SHOW
: Especifica si el contenido del archivo debe mostrarse.IGNORE
: Especifica si la importación debe ignorar errores.FROMUSER
: Lista de cuentas de la base de datos cuyos objetos deben leerse del archivo (FULL=N
).TOUSER
: Lista de cuentas de la base de datos en las que se importan los objetos.DESTROY
: Especifica si se ejecutan los comandosCREATE TABLESPACE
.INDEXFILE
: Permite escribir todos los comandos.RESUMABLE
: Especifica si se continúa la sesión después de los errores.COMPILE
: Especifica si se deben compilar de nuevo los procedimientos, funciones y paquetes de instalación.DATAFILES
: Indica la lista de archivos de datos que se va a transferir a la base de datos.TTS_OWNERS
: Especifica el nombre o la lista de nombres de propietarios.
Copias físicas
Consisten en copiar los archivos que constituyen la base de datos. Pueden ser en frío o en caliente.
- En caliente: Se realizan con la base de datos abierta. Para ello, los archivos deben estar en modo
ARCHIVELOG
. Deben copiarse todos los archivos de datos, todos los Redo Logs y un archivo de control conALTER DATABASE
. - En frío: Se producen cuando la base de datos se ha desconectado de modo normal y no debido a ningún fallo, es decir, se ha cerrado con un
SHUTDOWN
. Los archivos que deben copiarse son todos los archivos de datos, todos los archivos de control y todos los Redo Logs.
Para utilizar ARCHIVELOG
, hay que poner la base de datos en modo ARCHIVE LOG
.
1. Proceso para las copias de los TABLESPACES
- Poner el tablespace en estado de copia:
ALTER TABLESPACE nombre BEGIN BACKUP
. Esta orden hace que se congele la cabecera del archivo de datos y que se mantenga el número de secuencia. - Hacer copia de los archivos de datos asociados al tablespace.
- Dejar el tablespace en modo normal:
ALTER TABLESPACE nombre END BACKUP
. - Forzar un punto de control para sincronizar las cabeceras de archivos mediante un cambio de log:
ALTER SYSTEM SWITCH LOGFILE
.
2. Proceso para las copias de REDO LOGS
Hacer copia de los Redo Logs archivados ubicados en el directorio de archive log.
3. Proceso para las copias del archivo de control
Este archivo es uno de los que más debe protegerse. Su información es necesaria para el inicio de una instancia. Contiene información como el archivo de Redo Log online actual o nombres de los archivos de bases de datos. Pasos para su copia:
- Crear una imagen del archivo:
ALTER DATABASE BACKUP CONTROLFILE TO 'archivo de destino'
. - Crear un archivo de comandos para reproducir el archivo de control con:
ALTER DATABASE BACKUP CONTROLFILE TO TRACE
.
Restauración de datos
A la hora de recuperar los datos ante fallos imprevistos, hay que tener en cuenta el modo en el que estaba la base de datos y las copias que disponemos. El modo NOARCHIVELOG
puede ser adecuado en bases de datos dedicadas a desarrollo, entrenamiento y prueba.
1. Recuperación en modo ARCHIVELOG
Podemos hacer recuperaciones completas de la base de datos y recuperaciones hasta un punto determinado. Ventajas:
- Solo es necesario restaurar los archivos perdidos.
- Recupera todos los datos hasta el momento del fallo.
- El tiempo de recuperación es el que se tarda en restaurar los archivos de datos perdidos.
2. Recuperación completa ante fallo del medio físico
Antes de hacer recuperaciones de datos, es importante tener un plan de respaldo adecuado.