ADMINISTRACIÓN DE ORACLE 11G
Backups de la base de datos
1
Carmen Soler Chorro - http://www.linkedin.com/in/casoch
INTRODUCCIÓN
Hay 3 Maneras de hacer un Backup:
Backup Offline u Online.
Que sea entero o parcial
De toda la base de datos o de una parte
Completo o incremental
De todos los datos o sólo de los que cambiaron desde el
último backup.
Cuando hacemos un backup podemos escoger
entre estas tres opciones, dependiendo del
modo de funcionamiento de la base de datos.
2Carmen Soler Chorro - http://www.linkedin.com/in/casoch
INTRODUCCIÓN
Si estamos trabajando en modo
noarchivelog, podemos escoger entre:
Offline – entero – completo
Offline – entero – incremental
Si nuestra base de datos no funciona en modo
noarchivelog no podemos hacer backups online ni
parciales.
Para poder hacer un backup offline, tenemos que
haber cerrado la base de datos de forma consistente:
shutdown normal, immediate o transactional.
Los backups pueden hacerse desde la herramienta
RMAN (Recovery Manager)
3Carmen Soler Chorro - http://www.linkedin.com/in/casoch
BACKUPS OFFLINE GESTIONADOS POR EL
USUARIO
Podemos hacer backups desde línea de
comandos siguiendo estos pasos:
Copiar los ficheros de control
Copiar los datafiles
Copiar los online redo log files
Aunque no se considera parte de la base de
datos, también es conveniente tener una copia
del fichero de parámetros.
4Carmen Soler Chorro - http://www.linkedin.com/in/casoch
TALLER 1
Generar un .bat que haga un backup.
5Carmen Soler Chorro - http://www.linkedin.com/in/casoch
BACKUPS OFFLINE GESTIONADOS POR EL
SERVIDOR
Se hacen utilizando la herramienta RMAN.
Sólo pueden hacerse si la base de datos está en mount.
Porque RMAN necesita leer el archivo controlfile para localizar
los datafiles.
Ejemplo de backup offline entero y completo desde
RMAN:
6Carmen Soler Chorro - http://www.linkedin.com/in/casoch
BACKUPS OFFLINE GESTIONADOS POR EL
SERVIDOR
Las 2 primeras líneas, nos llevan a estado
mount.
Luego indicamos que el backup se hará en
disco(podría ser SBT_TAPE para cinta).
La siguiente instrucción es la de backup:
BACKUPSET es una estructura propietaria de
RMAN.
Esta estructura combina todos los ficheros en uno
sólo y además podría comprimir el espacio que
ocupan los datos(no en este ejemplo).
La palabra database indica que el backup ha de
ser de toda la base de datos.
Con format indicamos el fichero al que irá a
parar el backup.
Finalmente abrimos la base de datos.
7Carmen Soler Chorro - http://www.linkedin.com/in/casoch
BACKUPS OFFLINE GESTIONADOS POR EL
SERVIDOR
Con el script anterior, podemos generar un fichero
que se llame offline_full_whole.rman y lanzarlo desde
línea de comandos de la siguiente forma:
RMAN TARGET SYS/Pa$$w0rd
@OFFLINE_FULL_WHOLE.RMAN
Desde RMAN pueden hacerse 3 tipos de backups:
BACKUP SET: Formato propietario formado por un
conjunto de ficheros que no incluye los bloques vacíos.
COMPRESSED BACKUP: Parecido al anterior, pero
además aplica un algoritmo de compresión.
IMAGE COPY: crea una imagen idéntica a los ficheros
que tiene que copiar. Se pueden sustituir los originales
sin problemas des de la copia.
8Carmen Soler Chorro - http://www.linkedin.com/in/casoch
TALLER 2
Backups offline gestionados por usuario y servidor.
Carmen Soler Chorro - http://www.linkedin.com/in/casoch 9
BACKUPS ONLINE GESTIONADOS POR EL
USUARIO
Pasos a seguir:
Backup del controlfile Se puede hacer con:
ALTER DATABASE BACKUP CONTROLFILE TO „fichero‟
Crea una copia binaria del controlfile
ALTER DATABASE BACKUP CONTROLFILE TO TRACE
AS „fichero‟;
Crea un script que sirve para regenerar el controlfile en un
fichero de texto.
Este script se puede ejecutar cuando la base de datos está en
nomount.
Copiar los ficheros de datos
Archivar los online redo log files
10Carmen Soler Chorro - http://www.linkedin.com/in/casoch
BACKUPS ONLINE GESTIONADOS POR EL
USUARIO
Pasos a seguir:
Backup del controlfile
Copiar los ficheros de datos
Antes de hacer la copia, debemos poner los tablespaces
de esos datafiles en modo backup:
ALTER TABLESPACE nombre_tablespace BEGIN BACKUP;
Pasar a modo backup fuerza que todo lo que está en memoria
se copia a disco (fuerza un checkpoint)
Guardar los archived redo log files
También deberíamos hacerles un backup, para tener todos
los cambios que se han ido haciendo en la base de datos.
11Carmen Soler Chorro - http://www.linkedin.com/in/casoch
BACKUPS ONLINE GESTIONADOS POR EL
SERVIDOR
Puede hacerse con este comando desde
RMAN:
BACKUP DATABASE;
También podemos ajustarlo un poco más como
en este script ejecutado también desde RMAN:
12Carmen Soler Chorro - http://www.linkedin.com/in/casoch
BACKUPS ONLINE GESTIONADOS POR EL
SERVIDOR
Explicación del script:
Damos de alta 2 unidades de cinta en las que poner los
backups.
Al utilizar dos canales, tenemos la posibilidad de paralelizar las
operaciones de backup.
El primer comando de backup, hace un backup de toda
la base de datos:
Divide la base de datos en 4 partes y hace el backup set en 4
ficheros diferentes.
Esto también permitirá recuperar el backup más rápido después.
El segundo comando de backup, hace un backup de los
archive log files, eliminándolos también de disco.
Cuando hacemos el backup desde RMAN, no es
necesario poner los tablespaces en modo BACKUP.
13Carmen Soler Chorro - http://www.linkedin.com/in/casoch
TALLER 3
Backups online gestionados por usuario y servidor.
Carmen Soler Chorro - http://www.linkedin.com/in/casoch 14
BACKUPS INCREMENTALES
Sólo pueden hacerse con backups de servidor.
Se debe a que el sistema operativo no puede “fisgonear” dentro de
los datafiles para extraer cada parte.
El sistema operativo no sabe interpretar los datafiles, sólo Oracle.
Parten de una versión 0 que contiene todos los datos (incremental
level 0 backup) y, a partir de aquí, se van haciendo los
incrementales, añadiendo sólo los bloques que han sufrido
cambios.
Desde RMAN podemos hacer un backup de nivel 0 con:
BACKUP AS BACKUP SET INCREMENTAL LEVEL 0 DATABASE;
Esto se podría hacer, por ejemplo, una vez a la semana.
Para hacer un incremental de nivel 1:
BACKUP AS BACKUP SET INCREMENTAL LEVEL 1 DATABASE;
Esto se puede ejecutar diariamente para tener los bloques que han
cambiado, desde el primer 0 o desde el último nivel 1.
Hay otros niveles además del 1, pero hacen lo mismo. Se mantienen por
compatibilidad.
15Carmen Soler Chorro - http://www.linkedin.com/in/casoch
BACKUPS INCREMENTALES
Esta otra instrucción extrae los bloques que han cambiado desde
el último nivel 0, independientemente de si hubo un nivel 1 o no:
BACKUP AS BACKUPSET CUMULATIVE DATABASE;
17Carmen Soler Chorro - http://www.linkedin.com/in/casoch
TALLER 4
Hacer backups incrementales.
Carmen Soler Chorro - http://www.linkedin.com/in/casoch 18
AUTOMATIZAR BACKUPS
No se gestionan desde el sistema
operativo, sino desde la herramienta Enterprise
Manager.
Puede llevar a cabo cualquier tipo de backup:
Online, offline
Entero, parcial
Completo, incremental.
Siempre debe ser gestionado por el
servidor, utilizando RMAN.
19Carmen Soler Chorro - http://www.linkedin.com/in/casoch
RMAN REPOSITORY
RMAN tiene un repositorio en el que se
guardan los detalles de todas las
operaciones de backup que se han llevado a
cabo.
Por ejemplo, desde este repositorio se puede
saber las fechas en las que se hicieron backup y
recuperar el que nos interese.
21Carmen Soler Chorro - http://www.linkedin.com/in/casoch
INFORMES SOBRE BACKUPS
Podemos:
Ver los backups que existen.
Ver cuáles de ellos son necesarios para tener una versión actualizada
de la base de datos y cuáles han quedado obsoletos.
Para ver todos los backups guardados en el repositorio:
LIST BACKUP OF DATABASE;
Listar todos los backups hechos de los archived redo log files:
LIST BACKUP OF ARCHIVELOG ALL;
Backups necesarios para hacer un backup de la última versión:
REPORT NEED BACKUP;
Backups que ya no son necesarios:
REPORT OBSOLETE;
Esta misma información también puede consultarse desde el
Database Control Tool.
22Carmen Soler Chorro - http://www.linkedin.com/in/casoch
GESTIONAR BACKUPS
Generalmente, los backups se guardan en cintas, que
tienen una política de retención.
Se eliminan los ficheros que ya tienen un cierto tiempo.
RMAN debe estar al corriente de lo que va haciendo el
DBA, ya que sino borra él las copias más antiguas, el
RMAN lo hará automáticamente.
Para que RMAN pueda contrastar la información que él
tiene con la que hay en realidad, tenemos 4 comandos:
CROSSCHECK
DELETE EXPIRED
DELETE OBSOLETE
CATALOG
23Carmen Soler Chorro - http://www.linkedin.com/in/casoch
GESTIONAR BACKUPS
CROSSCHECK
Hace que RMAN compare su repositorio con lo que hay en realidad.
Comprueba que todos los backups que él ha hecho existan.
Lo que no encuentra, lo marca como EXPIRED.
DELETE EXPIRED
Elimina del repositorio todos los backups marcados como EXPIRED.
DELETE OBSOLETE
Fuerza que se aplique la política de retención y se eliminan los
backups que ya no se consideran necesarios.
CATALOG
Permite informar a RMAN de backups que haya hecho el DBA
manualmente para que los incluya en su repository.
También podemos informar de si hay backups en otros directorios.
Estas operaciones también pueden hacerse desde el Database
Control Tool.
24Carmen Soler Chorro - http://www.linkedin.com/in/casoch
MONITORIZAR LA FLASH RECOVERY AREA
La Flash Recovery Area es donde se almacenan los
datos de recuperación.
Es importante monitorizar cuánto espacio nos queda
disponible en esta zona.
Con el parámetro DB_RECOVERY_FILE_DEST
sabemos el directorio donde está.
También podemos extraerlo de la vista
v$recovery_file_dest.
Con DB_RECOVERY_FILE_DEST_SIZE, sabemos
el espacio que tenemos disponible.
También podemos extraerlo de la vista
v$flash_recovery_area_usage.
25Carmen Soler Chorro - http://www.linkedin.com/in/casoch
TALLER 6
Gestionar los backups de RMAN.
Carmen Soler Chorro - http://www.linkedin.com/in/casoch 26