Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki

Oracle: Copias de seguridad en Oracle 11g, copia export, copia física RMAN
Seguridad Informática


Explicamos cómo hacer copias de seguridad de los datos de Oracle Database 11g. Mostramos los diferentes tipos de copia de seguridad y cómo hacerlos: copia física en línea (en caliente con RMAN) sin detener la base de datos, copia física fuera de línea (en frío, deteniendo la base de datos), copia lógica en línea (export con expdp). Explicamos las copias en el sistema operativo Windows Server 2008 R2.



 

Copia de seguridad lógica en línea con expdp export en Oracle 11g

Oracle Database 11g permite hacer copia de seguridad lógica de los datos que componen la base de datos: tablas, vistas, procedimientos almacenados, secuencias, funciones, disparadores, paquetes, sinónimos, usuarios, etc. Dicha copia se realiza con el comando expdp y se realizará en línea (sin detener la base de datos). Durante el proceso de export puede que caiga un poco el rendimiento pero seguirá funcionando la base de datos normalmente. La utilidad expdp (Export) de Oracle consulta la base de datos, incluyendo el diccionario de datos, y escribe el resultado en un archivo binario llamado archivo de volcado de exportación. Puede exportar la base de datos completa, usuarios determinados o tablas específicas (entre otras opciones de exportación).

Una vez exportados los datos, podrían importarse con el comando impdp (Import) en otra base de datos o en la misma si queremos "sobreescribirla".

 

Requisitos para funcionamiento del comando expdp de Oracle 11g

Oracle Database 11g Enterprise o Client

Obviamente, el primer requisito es disponer de Oracle Database 11g (bien en su versión Enterprise o bien Oracle Database 11g Client. En loa siguientes artículos explicamos cómo instalar Oracle Database 11g en un equipos con sistemas operativos Microsoft Windows:

 

Usuario y contraseña de Oracle y del sistema operativo con permisos suficientes

Otro de los requisitos es disponer de usuario y contraseña de Oracle con permisos suficientes para hacer copias de seguridad. Normalmente el usuario SYS y el usuario SYSTEM tienen estos permisos, aunque cualquier usuario con el Rol "DBA" podrá hacer copias de seguridad.

También deberemos disponer de un usuario y contraseña del sistema operativo con permisos suficientes para leer y escribir en la carpeta destino del fichero de volcado (resultado del export). Obviamente, además, deberemos disponer de espacio libre suficiente en el destino de la copia de seguridad. En Oracle 11g con expdp el fichero de volcado (fichero resultante de la copia de seguridad) se puede comprimir para ahorrar espacio.

 

Variable de entorno PATH apuntando a carpeta bin de Oracle

En la variable de entorno PATH del sistema operativo deberá existir la ruta de instalación de Oracle y la carpeta "bin" donde se encuentra el comando "expdp". Para comprobar esto podremos hacerlo de dos formas:

1. Desde el botón "Inicio" - "Todos los programas" - "Accesorios" - "Ejecutar" (o pulsando las teclas Windows + R), introduciremos "cmd" y pulsaremos "Aceptar". En la ventana de MS-DOS que aparece escribimos el comando:

set path

Debería aparecer algo así:

Path=C:/app/ajpdsoft/product/11.2.0/dbhome_1/bin;C:/Windows/system32;C:/Windows;
C:/Windows/System32/Wbem;C:/Windows/System32/WindowsPowerShell/v1.0/
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

Requisitos para funcionamiento del comando expdp de Oracle 11g

2. También es posible ver el valor de la variable de entorno PATH en Windows Server 2008 desde las propiedades del sistema, desde el botón "Inicio" - pulsando con el botón derecho del ratón sobre "Equipo" y seleccionando "Propiedades":

Requisitos para funcionamiento del comando expdp de Oracle 11g

En la ventana de "Sistema" pulsaremos en "Configuración avanzada del sistema":

Requisitos para funcionamiento del comando expdp de Oracle 11g

En la ventana de "Propiedades del sistema" seleccionaremos la pestaña "Opciones avanzadas" y pulsaremos en "Variables de entorno":

Requisitos para funcionamiento del comando expdp de Oracle 11g

En la ventana de "Variables de entorno", en "Variables del sistema" buscaremos la variable "Path". En esta variable se especifica cada ruta (path) separada por punto y coma. Para consultar si está la ruta de la carpeta "bin" de Oracle pulsaremos en "Editar":

Requisitos para funcionamiento del comando expdp de Oracle 11g

En "Valor de la variable" debe aparecer la ruta de instalación de Oracle más la carpeta "bin", algo así:

C:/Oracle/product/11.2.0/dbhome_1/bin

Requisitos para funcionamiento del comando expdp de Oracle 11g

Esta variable de entorno es necesaria para que al programar y ejecutar un expdp desde una ventana de MS-DOS, al escribir el comando desde cualquier carpeta el sistema, lo encuentre en la carpeta "bin" de Oracle:

Requisitos para funcionamiento del comando expdp de Oracle 11g

Si en la variable PATH no tenemos la carpeta "bin" de Oracle, para ejecutar el comando expdp tendremos que indicar la ruta donde se encuentra o acceder a esa carpeta y ejecutarlo.

 

Objeto de tipo directory creado en Oracle

Otro requisito indispensable para realizar un export (expdp) en Oracle Database 11g es disponer de un objeto de tipo Directory creado en la base de datos. Este Directory debe apuntar a la unidad y carpeta destino de la copia de seguridad.

Para crear este objeto Directory abriremos una ventana de MS-DOS (desde "Inicio" - "Ejecutar" - "cmd"), abriremos SQL*Plus (utilidad para administrar Oracle desde la línea de comandos) con el siguiente comando:

sqlplus /nolog

Objeto de tipo directory creado en Oracle

Nos conectaremos a Oracle con el comando:

connect usuario/contraseña as sysdba;

Objeto de tipo directory creado en Oracle

Crearemos el objeto directory con el comando:

create directory CARPETA_EXPORT as 'c:/backup/export';

Donde:

  • CARPETA_EXPORT: será el nombre que le asignemos al directory, será el que usemos en el comando export (expdp).
  • 'c:/backup/export': unidad y carpeta asignada al directory, será el destino de la copia de seguridad export.

Objeto de tipo directory creado en Oracle

Para comprobar que el directorio se ha creado correctamente podemos ejecutar la siguiente select:

select directory_name from dba_directories;

Nos devolverá varios directory, entre ellos el creado anteriormente:

Objeto de tipo directory creado en Oracle

La carpeta de destino debe existir, si no está creada el export devolverá el error:

ORA-39002: operación no válida
ORA-39070: No se ha podido abrir el archivo
ORA-29283: operación de archivo no válida
ORA-06512: en "SYS.UTL_FILE", línea 536
ORA-29283: operación de archivo no válida

 

El archivo de volcado de exportación anterior no debe existir

Si ya existe un archivo de volcado de exportación el comando expdp dará error pues no reemplaza uno existente, el error:

ORA-39001: valor de argumento no válido
ORA-39000: especificación de archivo de volcado errónea
ORA-31641: no se ha podido crear el archivo de volcado "c:/backup/export/copia_oracle_export.dmp"
ORA-27038: el archivo creado ya existe
OSD-04010: opción <CREATE> especificada; el archivo ya existe

Por lo tanto si decidimos crear una tarea programada para ejecutar este comando automáticamente cada día deberemos, previamente, eliminar el archivo de volvado de exportación anterior antes de ejecutar el expdp.

 

Parámetros para comando expdp export de Oracle 11g

El comando expdp en Oracle 11g tiene los siguientes parámetros (obtenidos ejecutando expdp help=y):

  • ATTACH: conectar a un trabajo existente. Por ejemplo, ATTACH=nombre_trabajo.
  • COMPRESSION: reduce el tamaño de un archivo de volcado. Los valores de palabras clave válidos son: ALL, DATA_ONLY, [METADATA_ONLY] y NONE.
  • CONTENT: especifica los datos que se van a descargar. Los valores de palabras clave válidos son: [ALL], DATA_ONLY y METADATA_ONLY.
  • DATA_OPTIONS: indicadores de opciones de nivel de datos. Los valores de palabra clave válidos son: XML_CLOBS.
  • DIRECTORY: objeto de directorio que se va a utilizar para los archivos de volcado y log.
  • DUMPFILE: lista de nombres de archivo de volcado de destino [expdat.dmp]. Por ejemplo, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.
  • ENCRYPTION: cifra todo o parte del archivo de volcado. Los valores de palabras clave válidos son: ALL, DATA_ONLY, ENCRYPTED_COLUMNS_ONLY, METADATA_ONLY y NONE.
  • ENCRYPTION_ALGORITHM: especifica cómo se debe hacer el cifrado. Los valores de palabras clave válidos son: [AES128], AES192 y AES256.
  • ENCRYPTION_MODE: método para generar la clave de cifrado. Los valores de palabras clave válidos son: DUAL, PASSWORD y [TRANSPARENT].
  • ENCRYPTION_PASSWORD: clave de contraseña para crear datos cifrados en un archivo de volcado.
  • ESTIMATE: calcula estimaciones de trabajo. Los valores de palabras clave válidos son: [BLOCKS] y STATISTICS.
  • ESTIMATE_ONLY: calcula las estimaciones de trabajo sin realizar la exportación.
  • EXCLUDE: excluye tipos de objeto específicos. Por ejemplo, EXCLUDE=SCHEMA:"='HR'".
  • FILESIZE: especifica el tamaño de cada archivo de volcado en unidades de bytes.
  • FLASHBACK_SCN: SCN utilizado para restablecer la instantánea de sesión.
  • FLASHBACK_TIME: tiempo utilizado para buscar el valor de SCN correspondiente más cercano.
  • FULL: exporta toda la base de datos.
  • HELP: muestra mensajes de ayuda.
  • INCLUDE: incluye tipos de objetos específicos. Por ejemplo, INCLUDE=TABLE_DATA.
  • JOB_NAME: nombre del trabajo de exportación que se va a crear.
  • LOGFILE: especifica el nombre del archivo log [export.log].
  • NETWORK_LINK: nombre del enlace de base de datos remota al sistema de origen.
  • NOLOGFILE: no se escribe el archivo log.
  • PARALLEL: cambia el n·mero de workers activos para el trabajo actual.
  • PARFILE: especifica el nombre del archivo de parámetros.
  • QUERY: cláusula de predicado utilizada para exportar un subjuego de una tabla. Por ejemplo, QUERY=employees:"WHERE identificador_departamento > 10".
  • REMAP_DATA: especifica una función de conversión de datos. Por ejemplo, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO.
  • REUSE_DUMPFILES: sobrescribe el archivo de volcado de destino si existe.
  • SAMPLE: porcentaje de datos para exportar.
  • SCHEMAS: lista de esquemas que se van a exportar (esquema de conexión).
  • SOURCE_EDITION: edición que se usará para extraer metadatos.
  • STATUS: estado del trabajo de frecuencia (seg) que se va a controlar donde el valor por defecto (0) mostrará el nuevo estado cuando esté disponible.
  • TABLES: identifica una lista de tablespaces que se van a exportar. Por ejemplo, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995.
  • TABLESPACES: identifica una lista de tablespaces que se van a exportar.
  • TRANSPORTABLE: especifica si el método transportable se puede utilizar. Los valores de palabras clave válidos son: ALWAYS y [NEVER].
  • TRANSPORT_FULL_CHECK: verifica segmentos de almacenamiento de todas las tablas.
  • TRANSPORT_TABLESPACES: lista de tablespaces desde los que se descargarán los metadatos.
  • VERSION: versión de los objetos que se van a exportar. Los valores de palabra cable válidos son: [COMPATIBLE], LATEST o cualquier versión de base de datos válida.

Los siguientes comandos son válidos en el modo interactivo:

  • ADD_FILE: agrega un archivo de volcado al juego de archivos de volcado.
  • CONTINUE_CLIENT: vuelve al modo de registro. El trabajo se reiniciará si está inactivo.
  • EXIT_CLIENT: sale de la sesión del cliente y deja el trabajo ejecutándose.
  • FILESIZE: tamaño de archivo (bytes) por defecto para los comandos ADD_FILE posteriores.
  • HELP: resume los comandos interactivos.
  • KILL_JOB: desconecta y suprime un trabajo.
  • PARALLEL: cambia el número de workers activos para el trabajo actual.
  • REUSE_DUMPFILES: sobrescribe el archivo de volcado de destino si existe.
  • START_JOB: inicia o reanuda el trabajo actual. Los valores de palabra clave válidos son: SKIP_CURRENT.
  • STATUS: estado del trabajo de frecuencia (seg) que se va a controlar donde el valor por defecto (0) mostrará el nuevo estado cuando está disponible.
  • STOP_JOB: cierra en orden la ejecución del trabajo y sale del cliente. Los valores de palabra clave válidos son: IMMEDIATE.

 

Ejemplos de copia de seguridad lógica en línea con expdp export en Oracle 11g

A continuación mostramos algunos ejemplos para realizar backup lógico de los datos de Oracle Database 11g. Para ejecutar el comando expdp correctamente necesitaremos disponer de los requisitos explicados aquí.

1. Ejemplo de export full (copia de seguridad completa de la base de datos) con un único archivo de volcado:

expdp usuario/contraseña dumpfile=copia_oracle_export.dmp logfile=copia_oracle_export.log directory=CARPETA_EXPORT full=y

Ejemplos de copia de seguridad lógica en línea con expdp export en Oracle 11g

Mientras se va realizando la copia lógica con expdp irá mostrando las tablas que va exportando y el número de filas que contienen:

Ejemplos de copia de seguridad lógica en línea con expdp export en Oracle 11g

El comando anterior generará el fichero "copia_oracle_export.dmp" en la carpeta indicada en el directory CARPETA_EXPORT con la copia de seguridad lógica de todos los datos de toda la base de datos Oracle (todos los usuarios, vistas, tablas, sinónimos, procedimientos, funciones, ...). Generará un fichero llamado "copia_oracle_export.log" con el resultado de la copia:

Ejemplos de copia de seguridad lógica en línea con expdp export en Oracle 11g

2. Ejemplo de export full con un único archivo de volcado comprimido:

expdp usuario/contraseña dumpfile=copia_oracle_export.dmp logfile=copia_oracle_export.log directory=CARPETA_EXPORT full=y compression=all

Como ejemplo, el archivo anterior sin compresión ocupaba 270MB, mientras que el comprimido de la misma base de datos ha ocupado 68MB.

3. Ejemplo de export full con varios archivos de volcado de tamaño predefinido 100MB:

expdp usuario/contraseña dumpfile=copia_oracle_export_%U.dmp logfile=copia_oracle_export.log directory=CARPETA_EXPORT full=y filesize=100M

En negrita hemos indicado los caracteres "%U" en el nombre del fichero de volcado (dumpfile), este parámetro indicará a Oracle que vaya creando tantos ficheros como necesite del tamaño indicando acabando en el nombre con xxx01.dmp, xxx02.dmp, xxx03.dmp, ... Si no se indican los caracteres "%U" y el archivo de volcado supera el tamaño de filesize, el expdp mostrará el error:

ORA-39095: Se ha agotado el espacio del archivo de volcado: No se han podido asignar XXX bytes
El trabajo "SYSTEM"."SYS_EXPORT_FULL_01" se ha parado debido a un error fatal en 21:44:01

Nota: este método de dividir el archivo de volcado resultante en ficheros de un tamaño especificado es muy interesante. Si tenemos una base de datos que ocupe más de 10 ó 20 GB podremos tener problemas en algunos sistemas operativos al generar ficheros de más de 10 ó 20 GB. Por ello este comando es muy recomendable, permitirá generar ficheros de un tamaño máximo, generará tantos como necesite. En el ejemplo hemos indicado que como máximo cree ficheros de100MB, aunque lo habitual es indicar 2000MB (2GB). El resultado del volcado quedará en varios ficheros:

Ejemplos de copia de seguridad lógica en línea con expdp export en Oracle 11g

4. Ejemplo de export del esquema de un usuario concreto de Oracle (tablas, vistas y objetos de los que ese usuario es propietario):

expdp usuario/contraseña dumpfile=copia_oracle_export.dmp logfile=copia_oracle_export.log directory=CARPETA_EXPORT schemas=nombre_usuario

El comando de exportación anterior sólo exportará los objetos (tablas, vistas, etc.) de los que es propietario el usuario "nombre_usuario". Este comando será mucho más rápido en su ejecución que si usamos full=yes pues no exportará los objetos del sistema.

 

Tarea programada para copia lógica de Oracle en Windows Server 2008

Es conveniente automatizar la copia de seguridad lógica para que se ejecute todos los días de forma automática. Explicamos a continuación cómo programar una copia de seguridad lógica con expdp para export de la base de datos Oracle.

En primer lugar crearemos un fichero de proceso por lotes .bat con el comando expdp que se ejecutará desde la tarea programada. Abriremos el bloc de notas de Windows (notepad) o cualquier otro editor de texto plano sin formato e introduciremos el comando export que deseemos (como hemos explicado aquí). Por ejemplo, para realizar las siguientes acciones:

1. Primero eliminamos los ficheros de export del día anterior con el comando:

del c:/backup/export/copia_oracle_export*.dmp /q

2. Ejecutamos el export completo de la base de datos, con ficheros de tamaño no superior a 2GB:

expdp usuario/contraseña dumpfile=copia_oracle_export_%U.dmp logfile=copia_oracle_export.log directory=CARPETA_EXPORT full=y filesize=2000M

3. Tras realizarse el export de la base de datos oracle copiaremos los ficheros de volcado resultantes a un PC de la red (por seguridad) con el comando:

xcopy c:/backup/export/copia_oracle_export*.dmp \\pcbackup\backup\oracle\export /y

Todos los comandos juntos en el mismo fichero:

del c:/backup/export/copia_oracle_export*.dmp /q
expdp usuario/contraseña dumpfile=copia_oracle_export_%U.dmp logfile=copia_oracle_export.log directory=CARPETA_EXPORT full=y filesize=2000M
xcopy c:/backup/export/copia_oracle_export*.dmp \\pcbackup\backup\oracle\export /y

Tarea programada para copia lógica de Oracle en Windows Server 2008

Nombraremos el fichero con "export.bat", será un fichero de proceso por lotes, ejecutable al hacer doble clic por ello no es conveniente dejarlo en el escritorio (para que sólo se ejecute por tarea programada):

Tarea programada para copia lógica de Oracle en Windows Server 2008

Para crear la tarea programada accederemos al botón "Inicio" - "Herramientas administrativas" - "Programador de tareas":

Tarea programada para copia lógica de Oracle en Windows Server 2008

Pulsaremos con el botón derecho del ratón sobre "Programador de tareas (local)" y seleccionaremos "Crear tarea" del menú emergente:

Tarea programada para copia lógica de Oracle en Windows Server 2008

En la pestaña "General" introduciremos los siguientes datos:

  • Nombre: texto identificativo para diferenciar esta tarea de otras, por ejemplo "Backup lógico diario Oracle".
  • Descripción: texto descriptivo de la acción que realiza la tarea, por ejemplo "Export full de Oracle diario".
  • Es importante marcar la opción "Ejecutar tanto si el usuario inició sesión como si no" para que aunque no se haya iniciado sesión la tarea se ejecute.
  • Si queremos ejecutar la tarea con un usuario del sistema operativo diferente al actual pulsaremos en "Cambiar usuario o grupo".

Tarea programada para copia lógica de Oracle en Windows Server 2008

Desde la pestaña "Acciones" de la ventana de creación de tarea pulsaremos en "Nueva":

Tarea programada para copia lógica de Oracle en Windows Server 2008

En la ventana de "Nueva acción", en "Acción" seleccionaremos "Iniciar un programa", en "Programa o script" pulsaremos en el botón "Examinar":

Tarea programada para copia lógica de Oracle en Windows Server 2008

Seleccionaremos el fichero .bat creado anteriormente con el script de ejecución el comando expdp, en nuestro caso "export.bat":

Tarea programada para copia lógica de Oracle en Windows Server 2008

Pulsaremos en "Aceptar" para guardar la acción que se realizará con la tarea programada:

Tarea programada para copia lógica de Oracle en Windows Server 2008

Desde la pestaña "Desencadenadores" pulsaremos en "Nuevo" para establecer la programación (días de la semana y hora en que se ejecutará el export):

Tarea programada para copia lógica de Oracle en Windows Server 2008

Estableceremos la programación como consideremos. En nuestro caso ejecutaremos el export los lunes, martes, miércoles, jueves, viernes y sábados a las 22:00. Para ello marcamos "Semanalmente" y seleccionamos dichos días:

Tarea programada para copia lógica de Oracle en Windows Server 2008

Tras establecer las opciones de la tarea programada pulsaremos en "Aceptar":

Tarea programada para copia lógica de Oracle en Windows Server 2008

Nos solicitará la contraseña del usuario elegido que será con el que se ejecute la tarea, dicho usuario debe tener permisos suficientes para escribir en el destino de la copia de seguridad:

Tarea programada para copia lógica de Oracle en Windows Server 2008

Podremos probar la tarea programada para verificar que funciona, pulsando con el botón derecho sobre ella y seleccionando "Ejecutar":

Tarea programada para copia lógica de Oracle en Windows Server 2008

Tras finalizar el export ejecutado desde la tarea programada, si todo es correcto, mostrará en "Resultado de última ejecución" el texto "La operación se completó correctamente. (0x0)":

Tarea programada para copia lógica de Oracle en Windows Server 2008

Es muy importante mencionar que el hecho de que la tarea finalice con estado de 0x0 (correcta) no quiere decir que el export haya finalizado correctamente, simplemente indica que la tarea se ha ejecutado. Es muy importante verificar el fichero de log para comprobar que el export se ejecuta correctamente:

Tarea programada para copia lógica de Oracle en Windows Server 2008

Además, cada cierto tiempo, conviene verificar que el export es realmente correcto haciendo un import (impdp) en alguna base de datos de pruebas, esta es la mejor comprobación que puede realizarse para tener la garantía de que la copia de seguridad lógica en línea está funcionando y tenemos los datos a salvo. Además, obviamente, antes de eliminar cada día el fichero de volcado export para generar el nuevo, conviene copiarlo a una unidad de red (a otro equipo) o bien a una unidad de cintas de seguridad o a ambos destinos.

 

 

Copia de seguridad física fuera de línea en Oracle 11g

Backup físico offline en Oracle 11g

La copia de seguridad física fuera de línea (en frío) es la más sencilla de todas y, tal vez, la más importante: consiste en detener la base de datos y realizar una copia de todos los ficheros que componen la base de datos y la configuración de Oracle (archivos de datos, archivos de control, registros de reconstrucción en línea, pfile), como explicaremos más adelante. Esta copia no suele realizarse muy a menudo pero es fundamental pues, si se realiza correctamente, es la copia más fiable. Obviamente no es una copia que deba hacer todos los días, sobre todo en entornos de alta disponibilidad ya que tendrá la base de datos parada mientras se esté realizando la copia y para bases de datos grandes el proceso de copiado puede tardar minutos e incluso horas.

La ventaja de esta copia es que se realiza una "imagen" exacta de la base de datos tal cual se encuentra en el momento de detenerla y hacer la copia, por lo que la recuperación es rápida (tardará el mismo tiempo que se tarde en detener la base de datos y reemplazar todos los ficheros) con el inconveniente de que no podrá recuperarse en un punto determinado del tiempo, sólo quedará recuperada la información al momento en que se hizo la copia.

Esta copia de seguridad física fuera de línea podría hacerse cada 15 días (dos semanas), a ser posible en fin de semana para evitar la desconexión de los usuarios. Aunque la periodicidad debe establecerla el administrador de sistemas o administrador de bases de datos en función del uso, la disponibilidad y el tamaño que se le dé.

 

Cómo hacer copia de seguridad física fuera de línea de forma manual

Para hacer copia de seguridad física fuera de línea de Oracle, en primer lugar detendremos la base de datos, para ello abriremos SQL*Plus desde una ventana de MS-DOS, con el comando:

sqlplus /nolog

conn / as sysdba

shutdown immediate;

Copia de seguridad física fuera de línea en Oracle 11g

Una vez detenida la base de datos copiaremos los ficheros que la componen, por ejemplo los ficheros de datos, ficheros de control y redolog:

Copia de seguridad física fuera de línea en Oracle 11g

Ficheros de configuración y contraseñas (SPFILE y PWDFile), normalmente ubicados en:

$ORACLE_HOME/dbhome_1/database

Copia de seguridad física fuera de línea en Oracle 11g

Copiaremos también los ficheros de log archivado:

Copia de seguridad física fuera de línea en Oracle 11g

Una vez copiados todos los ficheros a una ubicación de red o local volveremos a iniciar la base de datos con el comando:

startup

Copia de seguridad física fuera de línea en Oracle 11g

 

Automatizar mediante scripts la copia de seguridad física fuera de línea en Oracle 11g

Obviamente el proceso de copia de seguridad física fuera de línea puede automatizarse mediante scripts, explicamos cómo a continuación.

1. Creamos un fichero de texto plano sin formato (con notepad) para detener la base de datos con el nombre "detenerbd.sql", con el siguiente contenido:

shutdown immediate;
exit;

Automatizar mediante scripts la copia de seguridad física fuera de línea en Oracle 11g

2. Creamos un fichero de texto plano sin formato (con notepad) para iniciar la base de datos con el nombre "iniciarbd.sql", con el siguiente contenido:

startup;
exit;

Automatizar mediante scripts la copia de seguridad física fuera de línea en Oracle 11g

3. Crearemos un fichero de proceso por lotes para ejecutar el fichero que detiene la bd, para para copiar todos los ficheros de la base de datos y de configuración usando el comando de Windows xcopy y para volver a iniciar la bd. El contenido de este fichero llamado "copia_fisica_offline.bat" será:

sqlplus sys/contraseña as sysdba @detenerbd.sql
xcopy "O:\datos\AJPDSOFT\*.*" "X:\backup_fisico\datos" /e /c /y
xcopy "O:\oracle\database\SPFILEAJPDSOFT.ORA" "X:\backup_fisico\configuracion" /e /c /y
xcopy "O:\oracle\database\PWDAJPDSOFT.ora" "X:\backup_fisico\configuracion" /e /c /y
xcopy "O:\oracle\flash_recovery_area" "X:\backup_fisico\archivado" /e /c /y
sqlplus sys/contraseña as sysdba @iniciarbd.sql

Automatizar mediante scripts la copia de seguridad física fuera de línea en Oracle 11g

Los ficheros para la automatización:

Automatizar mediante scripts la copia de seguridad física fuera de línea en Oracle 11g

Podremos programar la tarea al igual que hemos explicado aquí.

 

Copia de seguridad con RMAN offline si la base de datos no está en modo ARCHIVELOG

Si la base de datos Oracle 11g no está en modo ARCHIVELOG (por el motivo que sea), la copia de seguridad mediante RMAN detendrá la base de datos, será una copia offline. A continuación indicamos cómo programarla de forma automática mediante el asistente de Oracle Enterprise Manager Database Control, introduciremos usuario y contraseña de oracle Database 11g, a ser posible SYS ó SYSTEM ó algún otro usuario DBA de la base de datos:

Copia de seguridad con RMAN offline si la base de datos no está en modo ARCHIVELOG

Pulsaremos en "Disponibilidad":

Copia de seguridad con RMAN offline si la base de datos no está en modo ARCHIVELOG

Pulsaremos en "Planificar Copia de Seguridad":

Copia de seguridad con RMAN offline si la base de datos no está en modo ARCHIVELOG

Oracle ofrece una estrategia de copia de seguridad automatizada basada en la configuración del disco y/o cinta o también es posible establecer una estrategia de copia seguridad personalizada.

  • Copia de Seguridad Sugerida por Oracle: permite plantificar una copia de seguridad mediante la estrategia de copia de seguridad automatizada de Oracle. Esta opción realizará una copia de seguridad de la base de datos completa. Los intervalos de copia de seguridad de la base de datos serán diarios y semanales.
  • Copia de Seguridad Personalizada: permite seleccionar los objetos de los que se realizarán copia de seguridad:
    • Toda la Base de Datos: se realizará una copia de seguridad offline de la base de datos completa. Si la base de datos está abierta al realizar la copia de seguridad, se cerrará y montará antes de realizar la copia de seguridad. La base de datos se abrirá después de la realización de la copia de seguridad.
    • Todos los archivos de Recuperación en el Disco: incluye tods los archive logs y las copias de seguridad de los discos de los que todavía no se ha realizado una copia de seguridad en cinta.

En nuestro caso dejaremos que Oracle nos sugiera la estrategia de copia de seguridad óptima para nuestra base de datos. Marcaremos la opción "Toda la Base de Datos", introduciremos usuario y contraseña del sistema operativo con permisos suficientes para escribir en la carpeta de destino de la copia. Pulsaremos en el botón "Planificar Copia de Seguridad Sugerida por Oracle":

Copia de seguridad con RMAN offline si la base de datos no está en modo ARCHIVELOG

Seleccionaremos el medio físico de destino para la copia de seguridad, las opciones:

  • Disco: usar disco como el único almacenamiento para copias de seguridad.
  • Cinta: usar cinta como el único almacenamiento para copias de seguridad.
  • Disco y Cinta: usar disco para almacenar las copias de seguridad de base de datos más recientes para poder restaurar la copia de seguridad anterior rápidamente. Usar cinta para almacenar las copias de seguridad antiguas de la ventana de recuperación ampliada.

Si disponemos de unidad de cinta de backup es recomendable hacer la copia en Disco y en Cinta, si no disponemos de unidad de copia de seguridad en cinta marcaremos "Disco" y pulsaremos "Siguiente":

Copia de seguridad con RMAN offline si la base de datos no está en modo ARCHIVELOG

El asistente de planificación de copia de seguridad nos sugerirá realizar una copia de seguridad diaria: se realizará una copia completa de la base de datos durante la primera copia de seguridad. A continuación, se realizará una copia de seguridad incremental en el disco diariamente. Las copias de seguridad del disco se mantendrán para que siempre pueda realizar una recuperación completa de la base de datos o una recuperación point-in-time (en un punto del tiempo) hasta un momento determinado del día anterior.

En "Valores de Disco" nos mostrará el destino de la copia de seguridad (área de recuperación de flash), por defecto:

$ORACLE_HOME/Administrador/flash_recovery_area

Esta ubicación se puede modificar ejecutando, desde SQL*Plus, el comando:

ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = 'C:/carpeta_destino' SCOPE=BOTH;

Oracle permite cifrar los ficheros de destino de la copia, para que no puedan ser abiertos por usuarios "indeseados" salvo que sepan la contraseña de descrifrado. Para cifrar los ficheros marcaremos "Usar Cifrado de Recovery Manager", indicaremos el algoritmo de cifrado (por defecto AES128). Si queremos cifrar con Oracle Encryption Wallet marcaremos "Modo de cifrado... Las copias de seguridad se cifrarán con Oracle Encryption Wallet". Marcaremos también "Las copias de seguridad se cifrarán con la siguiente contraseña" e introduciremos la contraseña para los archivos de destino cifrados. Oracle admite los dos tipos de cifrado: con Oracle Encryption Wallet o/y con contraseña:

Copia de seguridad con RMAN offline si la base de datos no está en modo ARCHIVELOG

Indicaremos la fecha de inicio a partir de la cual Oracle comenzará la planificación de las copias de seguridad, introduciremos también la hora en la que se realizará la copia de seguridad diaria. Una vez más, el asistente de copia de seguridad de Oracle 11g nos advertirá que al no estar la base de datos en modo ARCHIVELOG, el trabajo planificado de copia de seguridad detendrá la base de datos antes de iniciar la copia, realizará la copia con RMAN y tras finalizar volverá a iniciar la base de datos. Pulsaremos "Siguiente" para continuar:

Copia de seguridad con RMAN offline si la base de datos no está en modo ARCHIVELOG

El asistente, en el último paso, nos mostrará las opciones seleccionadas para la copia de seguridad y nos mostrará el script de RMAN que se ejecutará. Pulsaremos en "Ejecutar Trabajo" si todo es correcto:

Copia de seguridad con RMAN offline si la base de datos no está en modo ARCHIVELOG

El script para RMAN que genera el asistente de copia de seguridad:

set encryption on for all tablespaces algorithm 'AES128' identified by '%PASSWORD' only;
set decryption identified by '%PASSWORD';
run {
allocate channel oem_disk_backup device type disk;
recover copy of database with tag 'ORA_OEM_LEVEL_0';
backup incremental level 1 cumulative copies=1 for recover of copy with tag 'ORA_OEM_LEVEL_0' database;
}

El asistente nos indicará que el trabajo se ha guardado correctamente. La tarea de copia de seguridad se ejecutará en la hora y día programado:

Copia de seguridad con RMAN offline si la base de datos no está en modo ARCHIVELOG

Esta copia de seguridad puede programarse desde fuera de Oracle, usando el programador de tareas de Windows y ejecutando el script desde RMAN en un fichero de proceso por lotes, pero recomendamos realizarla como hemos explicado pues al generar un trabajo de Oracle podremos consultar un registro del estado de las copias (cuándo se hacen y con qué resultado) desde el propio Oracle Enterprise Manager Database Control (Disponibilidad - Informes de Copia de Seguridad).

 

Copia de seguridad física en línea con RMAN en Oracle 11g con ARCHIVELOG activado

La copia de seguridad física en línea consiste en copiar los archivos que constituyen la base de datos sin necesidad de detenerla. La base de datos seguirá funcionando mientras se realiza la copia física de los ficheros gracias a la utilidad RMAN de Oracle. El requisito es que la base de datos debe estar en modo ARCHIVELOG, aunque esto no es inconveniente pues en Oracle 11g la base de datos se establece en este estado por defecto, pero sí hay que verificar que esté activo, como indicamos aquí:

Activar modo ARCHIVELOG en Oracle Database 11g R2

La ventaja de esta copia, además de que no es necesario detener la base de datos, es que si se ha realizado correctamente y si disponemos de los ficheros de archivado podremos realizar una recuperación en un punto del tiempo determinado (point-in-time). A diferencia de la copia lógica export que es una instantánea del momento en el que se ejecutó, con lo cual los datos sólo podrían ser recuperados a ese momento.

Vamos a explicar a continuación cómo programar un trabajo de Oracle para realizar una copia de seguridad diaria (completa la primera e incrementales el resto) de la base de datos a disco usando RMAN. La utilidad RMAN puede ser muy complicada según las opciones que necesitemos, aunque en Oracle 11g se ha simplificado, por ejemplo, el RMAN a disco es bastante sencillo. Además, con el asistente de Oracle 11g para copia de seguridad veremos a continuación que es muy fácil programar la copia.

Para programar la copia de Oracle online con RMAN lo haremos de forma automática desde el asistente de Oracle Enterprise Manager Database Control. El procedimiento es exactamente el mismo que para la copia explicada aquí, sólo cambiarán algunas advertencias, como por ejemplo el asistente ya no indicará que la base de datos se detendrá para hacer la copia, pues en este método y con el modo ARCHIVELOG la base de datos no se detendrá para hacer las copias de seguridad.

En el primer paso de la copia de seguridad, en la opción de "Copia de Seguridad Personalizada" podremos ver más opciones para la copia: Toda la Base de Datos, Tablespaces, Archivos de Datos, Archive Logs y Todos los Archivos de Recuperación en el Disco. En nuestro caso, como anteriormente, introduciremos el usuario y contraseña del sistema operativo y pulsaremos "Planificar Copia de Seguridad Sugerida por Oracle":

Copia de seguridad física en línea con RMAN en Oracle 11g con ARCHIVELOG activado

Seleccionaremos el destino de la copia:

Copia de seguridad física en línea con RMAN en Oracle 11g con ARCHIVELOG activado

Nos mostrará, si hemos elegido "Disco" en el destino, la unidad y carpeta donde se copiarán los ficheros, también podremos cifrarlos:

Copia de seguridad física en línea con RMAN en Oracle 11g con ARCHIVELOG activado

Indicaremos la fecha y hora de inicio:

Copia de seguridad física en línea con RMAN en Oracle 11g con ARCHIVELOG activado

Nos mostrará el script de RMAN, pulsaremos "Ejecutar Trabajo":

Copia de seguridad física en línea con RMAN en Oracle 11g con ARCHIVELOG activado

El script que se generará para RMAN:

set encryption on for all tablespaces algorithm 'AES128' identified by '%PASSWORD';
set decryption identified by '%PASSWORD';
run {
allocate channel oem_disk_backup device type disk;
recover copy of database with tag 'ORA_OEM_LEVEL_0';
backup incremental level 1 cumulative copies=1 for recover of copy with tag 'ORA_OEM_LEVEL_0' database;
}

Nos indicará que el trabajo se ha ejecutado correctamente. Para ver el estado actual pulsaremos en "Ver Trabajo":

Copia de seguridad física en línea con RMAN en Oracle 11g con ARCHIVELOG activado

El asistente nos mostrará los trabajos de copia de seguridad actuales y su información (nombre, estado, fecha y hora de planificación, destinos, tipo de destino, propietario, etc.):

Copia de seguridad física en línea con RMAN en Oracle 11g con ARCHIVELOG activado

Como hemos comentado anteriormente, desde "Disponibilidad" - "Informes de Copia de Seguridad" podremos consultar el estado de ejecución de todos los trabajos de copia de seguridad que se hayan realizado en el servidor:

Copia de seguridad física en línea con RMAN en Oracle 11g con ARCHIVELOG activado

Pulsando en alguno de ellos podremos consultar todos los detalles de la ejecución de la copia de seguridad: archivos de datos, archivos de control, SPFile, resumen de salida, juego de copias de seguridad, copia de imagen, archivos de datos, tipo de salida, clave de salida, tamaño del archivo, tablespace, hora de punto de control, nivel incremental, ratio de compresión, bloques corruptos, SCN de Punto de Control de Archivos, ...:

Copia de seguridad física en línea con RMAN en Oracle 11g con ARCHIVELOG activado

 

Artículos relacionados

  

Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del proyecto AjpdSoft.


Anuncios


Enviado el Viernes, 12 agosto a las 01:10:46 por ajpdsoft
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A