Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Proveer al alumno las conocimientos necesarios para la definicion de una estrategia de respaldo y de recuperacion
valida y completa ante la mayor cantidad de desastres.
Ofrecer una guia visual de los pasos a seguir para que los procesos de recuperacion sean lo mas rapidos y con el
menor esfuerzo posible.
Tener las practicas necesarias en ambientes controlados para este tipo de recuperacion
Evacuar cualquier pregunta o duda correspondientes a las tareas de respaldo y recuperacion de BD.
Recuperacion y Respaldo de Bases de datos Oracle se refiere a la teoria de proteger una Base de datos de produccion en
contra perdidas y poder recuperar con éxito los datos de la instancia despues de la restauracion. Las razones de las caidas
pueden ser muchas: problemas tecnicos o por errores logicos producidos por los usuarios en la operación de los sisteamas,
tambien porque los administradores puedan borrar los archivos equivocados.
El concepto de respaldo y recuperacion es el conjunto de estrategias y guias paso a paso para poder hacer la restauracion de
los datos en el menor tiempo posible con la menor cantidad posible de perdidas de informacion. En el mundo ideal nunca
deberian de haber perdidas de datos o caidas de sistemas, sin embargo, siempre existe el riesgo de error ya sea humano o por
problemas en los equipos y/o cualquiera de sus componentes.
En nuestra vida practica como Administradores de Bases de Datos siempre estamos a cargo de administrar y mantener las
instancias, monitorear y afinar el rendimiento, pero tambien tenemos que agregarles una serie de metas realistas a cumplir:
RMAN es la manera principal de proteccion de una BD Oracle, ya toda la utilidad se encuentra embevida dentro del codigo, no
se tienen que pagar cargos adicionales por su uso. Fue inicialmente introducido en la version 8 de Oracle y a partir de ahí ha
tenido muchas mejoras hasta el punto de ser considerado la herramienta mas poderosa para respaldar y recuperadad BD
Oracle. Durante el curso exploraremos las formas tradicionales de respaldo y recuperacion de Bases de datos Oracle y tambien
utilizaremos RMAN para completar nuestra politica de Respaldo y Recuperacion.
Tipos De Fallos
Ya que los respaldos estan diseñados para proteger por fallas en las BD, rapidamente explicaremos los tipos de fallos que
pueden ocurrir. Muchas restauraciones se pueden hacer sin mucho esfuerzo por parte del administrador, ya que el motor
incluye procesos de recuperacion automaticos a partir de ciertos tipos de fallas, pero los mas criticos tipos de fallas requiere la
intervension del adminitrador para la restauracion utilizando respaldos, estos pueden ser catalogados en las siguientes
categorias:
Un ejemplo tipico de esta situacion es cuando un programa quiere insertar registros invalidos dentro de una tabla. La consulta
fallara por el proceso de verificacion de los datos a insertar, la solucion es simple: validar los datos y corregirlos, posiblemente
en algunos casos la consulta falla por errores en la logica de programacion, por lo que habria que regresarlo al equipo de
desarrollo para su revision y correcion.
Tambien se presenta cuando un gran proceso de insercion de datos o la importacion de datos falla a la mitad porque no hay
espacio disponible para poder almacenar todos estos nuevos registros, la solucion aca es asignarle mas espacio de crecimiento
a los Tablespaces adecuados.
Algunas veces los procesos usuarios fallan de forma abrupta por desconexiones no adecuadas o por errores en la PC que
utilizan teniendo como resultado la desconexion de la BD, como Administradores, no hay mucho que hacer ya que los procesos
de background de Oracle se encargan en la hacer la correcion, hacer rollback de los datos sin commit y liberar los bloqueos
generados por esas sesiones anormalas.
Fallo de Red:
Un problema de red podria tambien generar un problema en la Base de Datos. Estos problemas pueden ocurrir porque el
Listener de Oracle, la tarjeta de red (NIC) o la conectividad ha fallado. Como Administradores se tienen que configurar varias
tarjetas de red, tener una conexión de respaldo y tambien respaldar los archivos utilizados por el listener para poder tener una
proteccion contra estos tipos de eventos.
Falla de Instancia:
Se experimienta este tipo de fallas cuando la instancia se cae por algun evento como podria ser daño de Hardware, problema
electrico, por un procedimiento de emergencia o por un proceso de Background de Oracle (PMON) falla por alguna condicion
de error.
Lo primero que hay que verificar son los archivos de alertas y traces en busqueda que cualquier pista que nos ayude a ubicar la
causa de la falla de la instancia, luego de esto ejecutar el comando startup desde la linea de comandos del SQL Plus. Ya que la
BD no fue cerrada de la forma correcta, sus archivos no se encuentran sincronizados por lo que Oracle ejecutara de forma
automatica un proceso de crash recovery, hara inicialmente un rollback de las transacciones sin commit que pueda encontrar en
los UNDO Segments y luego un roll forward de los datos con commit que se encuentren en los Redo Logs, luego de este
proceso todos los archivos de la BD estaran sincronizados teniendo unicamente datos validos. La BD se puede abrir sin
problemas. Esto es unicamente valido cuando no hay ninguna falla en el hardware del equipo en donde la instancia fallo.
Error de Usuario:
Borrar una tabla importante es un es un error que podriamos cometer como administradores, adicionalmente los usuarios
podrian modificar o borrar datos importantes, Oracle provee varias tecnicas para poder solucionar eventos como estos:
flashback table es una funcionalidad para reconstruir una tabla a un punto en el tiempo, por supuesto siempre se puede hacer
rollback hasta el ultimo commit. Oracle tambien provee una herramienta llamada LogMiner la cual es muy util en estos casos.
Este tipo de errores ocurre cuando hay una perdida de un componente del equipo en donde se encuentra instalada la instancia,
por ejemplo discos duros o una controladora de discos, corrupcion de un archivo, sobreescritura o borrar un datafile, de manera
general, cualquier error que se genere al leer o escribir a un disco consiste en Error en el medio y para poder recuperarnos a
partir de este error tenemos que hacer uso de nustros respaldos.
Cada tipo de error en el medio tiene una solucion diferente desde el punto de vista de recuperacion, por ejemplo, eliminar
accidentalmente un archivo de control, no es necesario restaurarlo desde un respaldos a diferencia de la eleiminacion de un
datafile, siempre hay necesidad de restaurar a partir de un respaldo y aplicar luego los Archive redo logs.
Una vez que la BD este funcionando podria verse comprometida cuando alguno de cualquiera de estos eventos es verdadero:
Cualquiera de los archivo de control, que estan multiplexados, es eliminado o perdido por algun error en uno de los
discos (Media Failure)
Cualquier datafile que corresponda al tablespace del System o Undo es borrado o eliminado por problema de discos,
en este caso la BD puede que no se caiga de forma inmediata.
La perdida de un grupo de redo logs
Perdida o eliminacion de un datafile no critico (desde el punto de vista de Oracle estos son cualquiera que no sean del
System o de Undo)
Perdida de un miembro de algun grupo de Redo Logs.
Oralce utiliza muchos procesos para el mantenimiento de la instancia pero alguno de esos procesos son de vital importancia en
las tareas de respaldo y recuperacion, estos se puede apreciar en el siguiente grafico:
La instancia de Oracle consiste en el System Global Area (SGA) la cual es memoria fisica de la RAM del equipo asignada a la
instancia de Oracle, y el conjunto de procesos de Oracle llamado tambien Background process, estos se inician cuando la
instancia arranca y se mantienen funcionando mientras la instancia este viva. Cada proceso tiene una funcionalidad especifica.
Para las actividades de respaldo y recuperacion de BD lso procesos criticos son: el proceso de Checkpoint , el proceso de log
writer y el proceso de archivado (archiver):
El proceso de Checkpint:
Los redo logs files, almacenan todos los cambios realizados a la BD, ya que Oracle utiliza el protocolo de escritura adelantada
(write ahead protocol), para lo cual primero se escribe la informacion en los redo logs files para luego ser escritos en los
datafiles, por lo tanto es de suma importancia asegurarse que los redo logs files estan multiplexados.
Los redo logs entran en la jugada cuando la BD falla o se cae, lo primero que hace al inicializarse es leer estos archivos en
busqueda de cualquier informacion con commit y que aun no han sido almacenados en los datafiles. El proceso LGWR es
responsable de transsferir el contenido del Redo Log Buffer a los Redo Logs Files y esta escritura se realiza dentro de las
siguientes circunstancias:
Despues de cada commit
Cada 3 segundos
Cuando el Redo Log Buffer esta a un tercio de lleno
Lo importante a recordar es que el LGWR escribe antes que el DBWR por el protocolo de escritura adelantada. Los cambios no
estan necesariamente escrito a los datafile cuando se realiza commit a la transaccion, pero si son escritos siempre a los Redo
Logs Files.
TIP: Oracle cuenta con caracteristicas para evitar la generacion de Redo, estas son utiles
cuando se necesita acelerar la carga de mucha informacion en la BD, sin embargo, este
beneficio tiene un riesgo ya que la informacion sera irrecuperable y se tendria que hacer un
respaldo al finalizar la carga.
Es un proceso de background opcional, se encarga de archivar los archive redo logs llenos, para que luego puedan ser
sobreescritos con informacion nueva. Este proceso se habilita cuando la BD esta configurada en ArchiveLog.
Datafiles
Redo Logs (Archived and online)
Control Files
Undo Records
En una basica configuracion de recuperacion, lo primero que hay que hacer es restituir desde un respaldo todos los datafiles,
una vez que este paso se completo ejecutar el comando recover el cual resultara en la BD en el rollforward de todos los datos
con commit para la sincronizacion de todos los datafiles, tambien se realiza un rollback de la informacion sin commit que se
encuentra almacenada en los segementos de UNDO que son del tablespace Undo. Oracle almacena todos los datos realizados
a la BD en los online redo logs, como Oracle utiliza el algoritmo round-robin para escribir a los miembros de cada grupo de Redo
logs, por lo tanto es de suma importancia garantizar una copia de estos archivos antes de ser reutilizados, este proceso es el
llamado Archivado (archive), los archivos redo, una vez guardados reciben el nombre de : archive redo log files, un proceso de
recuperacion del medio utiliza ambos archivos.
El archivo de control (control file) es esencial en el funcionamiento de la instancia, ya que en el se almacena toda la informacion
concerniente a tablespace y datafiles, checkpoints, secuencia de encabezados de datafiles y redo logs, etc, etc.
TIP: No se debe nunca respaldar los online redo log files, en lugar es recomendable hacer
multiplexacion de los mismos para protegerlo en contra de perdidas de algun miembro por
problemas fisicos.
La BD puede operar en ambos modos. En modo Noarchivelog, los redo logs llenos seran sobreescritos en demanda al contraro
del modo Archivelog. En el modo Noarchivelog estamos protegidos unicamente contra daños de instancia, pero no por daños
en el medio, los cambios que han sido sobreescritos se pierden para siempre y la BD no tendra capacidad de poder acceder
dichas modificaciones para recuperar la informacion. Las transacciones realizadas desde el ultimo respaldo se pierden y
unicamente podemos recuperarnos desde el ultimo respaldo (logico o fisico) realizado.
Si la BD esta en modo Noarchivelog y hay perdida de un datafile estos serian los pasos a seguir:
Si la BD no se ha caido, hacer un shutdown
Restaurar toda la BD (datafiles y archivos de control) de un respaldo en frio
Reinicializar la BD.
Se perdera cualquier informacion que haya sido ingresada desde el ultimo respaldo.
TIP: Es un riesgo muy alto correr una BD de produccion en modo NOARCHIVELOG ya que no
tendriamos ya que existen muchas posibilidades de perdidas de informacion, utilizar las
herramientas como EXPORT o EXPDP garantizan un respaldo logico, pero estas por si solas no
es un respaldo, es un complemento a una estrategia de respaldos.
Tipos de Respaldos:
Los respaldos en Oracle es mucho mas de una copia de todos los archivos y se podrian clasificar de la siguiente forma:
Cuando se realiza una copia de los archivos de la BD utilizando una herramienta del sistema operativo (cp) pueden ser
utilizados para hacer una restauracion de los contenidos de la BD en el caso de perdida de algun medio en donde se encuentre
algun archivo de la BD, las copias de la BD incluye: todos los datafiles, redo logs y archivos de control esto hace un respaldo
fisico. Es importante mencionar que la BD debe de haber sido cerrada con un shutdown que garantice la sincronizacion de los
datafiles (shutdown immediate).
Los respaldos logicos se hacen con una utilidad de Oracle llamada Export o Data Pump, con la cual se realiza un archivo que
contiene las definiciones de los objetos en la BD (procedimientos, triggers, tablas, etc) y los datos almacenados en las tablas, la
contraparte de esta herramienta en la Import Utility el cual sirve para actualizar en otra BD el contenido del archivo generado
con el EXP, los respaldos logicos no son una solucion completa para un escenario de respaldo y recuperacion, la funcion es
completar o ser un medio secundario de respaldo de informacion importante valida para en algunos escenarios.
Un respaldo total incluye todos los archivos necesarios para el funcionamiento de la BD, mientras que un respaldo parcial
corresponde a un grupo de datafiles especificos en un punto en el tiempo, tambien podria ser la copia de un archivo de control,
tambien se podria hacer al invocar una copia binaria de este mismo.
Para hacer un respaldo parcial, es necesario tener la BD en modo ARCHIVELOG, se tienen que ejecutar la sentencia: alter
database tablespace users begin backup; se copian los datafiles correpondientes y luego alter database tablesapce users end
backup;
Online, es tambien llamados respaldos en calientes, estos son realizados cuando la BD esta abierta y en operación, por
definicion, este tipo de respaldos son incosistentes siempre es necesaria la aplicación de los archive logs necesarios para
hacerlos consistentes, esto es unicamente valido para BD seteadas en forma ARCHIVELOG.
Los respaldos totales son copias completas de todos los archivos contenidos en la BD, mientras que los incrementales nada
mas contienen los bloques de datos que han tenido algun tipo de modificacion desde el ultimo respaldo total.
Consecuentemente los respaldos incrementales toman mucho menor tiempo en completarse. Los respaldos incrementales
unicamente son posibles utilizando RMAN, no se puede hacer respaldo incrementales a BD Oracle utilizando tecnicas manuales
de respaldo.
Hay una diferencia crucial entre estos dos tipos de respaldos y para entenderlos hay que conocer el concepto de SCN (System
Change Number).
El SCN es un numero asignado por Oracle a nivel de servidor que representa la version con commit de la BD. Es posible que
diferentes datafile en la BD tengan numero distinto de SCN en cualquier punto en el tiempo y si el SCN es sincronizado en todos
los datafiles, significa que todos estan al mismo punto en el tiempo, por lo tanto, consistentes.
Durante cada checkpoint, el servidor hace todos los archivos consistentes con respecto a un solo SCN, el cual es almacenado
en el Archivo de Control, esta sincronizacion garantiza la consistencia de la BD. Si se hace un respaldo en caliente (mientras la
BD esta corriendo) a los datafiles al final se cuenta con un archivos con diferentes SCN, por lo tanto inconsistente.
En modo NOARCHIVE unicamente se pueden hacer respaldos consistentes para restaurar la BD a diferencia que en modo
ARCHIVE se pueden restaurar a partir de respaldos inconsistentes aplicando todos los Redo Logs necesarios para sincronizar
el SCN a los datafiles. La clave del proceso para hacer consistente lo inconsistente es aplicando todos los archive redo logs
necesarios.
No es recomendable respaldar una BD inconsistente que haya sido resultado de un shutdown abrupto (shutdown abort) cuando
se encuentra configurada en modo NOARCHIVELOG, a manera contraria, corriendo en modo ARVICHELOG se puede
respaldar la BD en cualquiera de las siguientes formas:
Cerrada y consistente
Cerrada e inconsistente
Abierta e inconsistente
Tipos de Recuperacion:
Si la BD fue bajada de forma normal (Norma, Immediate, transactional) se tiene una BD cerrada de forma consistente y esto
sucede cuando:
Se le aplica el proceso de rollback a todos los datos sin commit
El contenido del buffer Cache es escrito a los datafiles
Todos los recursos asignados son liberados
Si la BD fue bajada de forma abrupta (shutdown abort o force) se baja de forma inconsistente, por lo tanto cualquiera de los
siguientes eventos pueden ser verdaderos:
Cualquier cambio con commit no son aplicados procesos de rollback.
Cualquier cambio hecho a la BD que se encuentre en el buffer cache no son escritos a los datafiles
Todos los recursos (bloqueos y latches) no son liberados
YA que no fue cerrada de forma normal cerrada en medio de procesamiento de usuarios que no han sido propiamente escritos
a los datafiles, cuando se reinicializa el proceso la BD realiza inicialmente lo siguiente:
Utiliza la informacion contenida en los Online Redo Logs para reaplicar los cambios
Usa la informacion contenida en los UNDO para hacer rollback
Liberacion de los recursos asignados
Todo este proceso es obligatorio pero realizado de forma automatica con poca o ninguna intervension de parte del DBA.
Crash Recovery:
Esta es la realizada de forma automatica por el servidor luego de haber sido cerrada de forma abrupta, para sincronizar los
archivos Oracle realiza los siguientes procesos clave:
Rolling forward: Durante este proceso Oracle actualizara toda la informacion contenida en los Online redo logs hacia los
datafiles, durante este proceso Oracle aplicara a los datafiles todos los cambios desde el ultimo checkpoint hasta el final de los
redo log, este proceso es afinable a traves del parametro de inicializacion fast_start_mttr_target para especificar el numero
en segundos que la recuperacion puede tomar, Oracle lo realizara lo mas cercano posible a ese numero. El maximo numero de
este parametro es 3,600 segundos (1 hora).
Rolling back: Durante este proceso todos los cambios sin commits que fueron escritos a los datafiles durante el proceso de
rollforward son deshechos, para esto se auxilia del Undo tablespace el cual contiene toda la informacion en su estado original.
Media recovery:
Esta es una situacion mas seria, ya que hay un daño en algun medio que impide que la BD se recupere de forma automatica,
para recuperar hay que sumistrar los datafiles faltantes desde un respaldo valido y todos los archive redo log necesarios para la
completa sincronizacion de este archivo con respecto al SCN. Cuando el motor de Oracle presenta algun tipo de error indicando
problemas en el medio, primeramente se debe de consultar la vista V$RECOVER_FILE el cual presenta todos los archivos
que necesiten recuperacion por algun erreor en el medio.
El comando recover realiza el proceso de recuperacion al aplicar los archive redo logs necesarios, para completar este tipo de
recuperaciones se debe de hacer lo siguiente:
Este tipo de recuperacion es tambien conocida como recuperacion incompleta, el cual trae a la BD a un punto en el tiempo
especifico en el pasado, esto implica que todos los cambios realizados despues del punto de restauracion son perdidos y esta
situacion es valida (aunque no parezca logico tener perdida de datos) cuando se presentan cualquiera de los ejemplos:
Perdida de uno de los archive redo logs o respaldos incrementales necesarios para la completa restauracion luego de
un fallo en el medio.
El Administrador o cualquiera de los usuarios por error aplicación actualizaciones a tablas equivocadas
Un proceso batch realizando updates fallo.
En cualquiera de esas situaciones se puede utilizar o recuperacion en un punto en el tiempo o Flashback (introducida en 10g)
para restaurar la BD en un punto en el tiempo pasado. La tecnologia de flashback ofrece la capacidad de hacer una
restauracion a un punto en el tiempo mucho mas rapido que la forma tradicional que residen en la recuperacion de BD, cada
una de las tecnologias tiene su momento de uso:
Utilizar recuperacion en el medio cuando la situacion es perdida, daño o un datafile inacessible.
Un usuario borra o le hace commit a mucha informacion por error, a pesar que se puede realizar una recuperacion
aun punto en el tiempo es recomendable aplicar la opcion de flashback.
Por algun tipo de error logico la mejor opcion es hacer una recuperacion a un punto en el tiempo.
Corrupcion de datos en algunos bloques de datafiles.
Si un usuario afecta mucha informacion en toda la BD, lo mejor es utilizar la tecnologia flashback database hasta un
punto valido en el tiempo.
Documentar, siempre es util en momentos de restauracion cualquier informacion de configuracion realizada, siempre
es necesario documentar con el mayor detalle posible los procedimientos de respaldo y recuperacion, si es posible
realizar scripts que realicen tareas de recuperacion a realizar en momentos de crisis y por ultimo compartir toda esta
informacion con todas las personas que tengan que ver en los procesos de administracion de BD, procesos de
respaldo.
Configurar el Flash Recovery Area, como punto de inicio de trasalado de la informacion desde los discos a las
unidades de cintas, ya que por definicion y arquitectura, es mucho mas rapido leer a disco que de cintas de respaldos.
Oracle recomienda utilizar esta area para almacenar toda la informacion concerniente a respaldos y recuperacion y
como minimo el tamaño deberia de ser lo suficientemente grande como para almacenar todos los redo logs que aun
no han sido copiados a cintas. Esta configuracion es opcional pero la recomendación es habilitar al menos una para
poder tener la opcion de utilizar la tecnologia de flashback.
Copias de respaldo redundantes en el caso de perdidas o daño de algun juego de respaldos estos deberian de incluir
respaldo de todos los datafiles y el archivo de control, todos los archive redo log generados desde el ltimo respaldo,
copias de los archivos de control actuales y todos los archivo relacionados a configuracion (spfile, password file,
tnsnames, listener.ora). a nivel de BD esto se garantiza en multiplexar los online redo log y los archivos de control en
al menos dos ubicaciones fisicas distintas, tambien hay que considerar las opciones de redundancia que ofrecen los
sistemas operativos y las controladoras de discos (mirror, arreglos) para garantizar el funcionamiento de la BD cuando
haya problemas fisicos.
Crear copias de respaldo del archivo de control en forma regular, el cual es un archivo de suma importancia para el
funcionamiento correcto de la BD. Rman ofrece una buena solucion para garantizar sus respaldos constantes.
Tener la BD en modo ARCHIVELOG, es la unica forma de garantizar la restauracion de la BD con ninguna perdida de
datos en los esquemas de produccion.
Modo NOARCHIVELOG
La instrucción generara el archivo en las carpetas de trace del motor, pero tambien se puede invocar el respaldo directo del
archivo de control a una ubicación definida por nosotros:
Revision del estado del modo archive
log_archive_dest: Define la ubicacion en donde seran almacenados los archive, Oracle por defecto solicita un lugar en donde
guardar pero pueden ser hasta 10 ubicaciones incluyendo carpetas en servidores remotos.
log_archive_start: Define si la BD funcionara o no en modo Archive, este parametro se tiene que modificar a nivel de archivo de
parametros para luego habilitar el proceso desde modo mount. Para habilitarlo, hay que tener el servicio detenido
log_archive_format: define el formato con el que Oracle generara los archive log, por ejemplo, si el formato es arch%s.arc los
archivos se generaran arch1.arc, arch2.arc, el %s define le consecutivo, las demas variables son las siguientes:
%s consecutivo
%t numero de thread
%a activation ID
%d database ID
%r resetlogs ID que asegura nombres unicos para la construccion de los archive log files a traves varias encarnaciones de la
BD.
1. Revision de los parametros de inicio en el archivo de control, agregarlos de ser necesarios (para esto es necesario
hacer inicialmente un create pfile from spfile).
2. Despues de
agregar los
parametros
adecuados, bajar
la BD y volver a
subir hasta modo mount
3. En modo mount escribir lo siguiente:alter database archive log y luego abrir la bd
A como fue explicado en las paginas anteriores, ya con la BD configurada en modo archive es posible la realizacion de
procedimientos de respaldos inconsistentes y el caliente, al bloquear los encabezados de los datafiles.
A nivel de tablespace
Al bloquear los encabezados de los datafiles, pueden ser copiados de forma normal por medio de las utilidades del sistema
operativo.
Luego de finalizar el proceso de respaldo, la informacion en v$backup cambia a como se muestra en la pantalla a continuacion.
Estos tipos de respaldo deberia de hacerse de forma semanal, siempre manteniento tambien todas los archive redo logs
generados para su posterior aplicación, es importante tambien convinarlos con respaldos fisicos totales (respaldos en frio) para
tener un punto de referencia a la hora de restaurar. Los respaldos fisicos deberian de realizarse una vez al menos (cuando
menos) la ventaja es que se reduce la cantidad de archive logs necesarios para la completa restauracion de la BD pero la
desventaja es que hay que bajar por completo la BD para realizarlos.
Otro punto muy importante es validar los respaldos generados de manera que estemos seguros de lo que estamos haciendo
nos funcionara cuando los necesitemos.
En este punto es donde se integran mas que en cualquier otro lugar las tareas de Administracion de BD con las de Sistemas
operativos esto para garantizar la disponibilidad de espacio en discos, cintas de respaldos, nomenclatura, etc. El mejor consejo
es, en lugar de duplicacion de funciones y por ende de esfuerzo es mejor la integracion de ambas de acuerdo a los
procedimientos y las necesidades de cada organización.
Es de mucha importancia hacer respaldos de los archivos criticos (a nivel de funcionamiento de Oracle) esto son: los datafiles
del tablespace SYSTEM el cual contiene toda la informacion del diccionario de datos de Oracle, y es vital para el funcionamiento
del motor.
TIP: Es una buena practica una vez que se le haya agregado algun datafile a un tablespace, proceder de forma inmediata a su
respaldo, para que, en el caso de daño en el medio no nos resulte imposible la restauracion de dicho archivo, tambien incluir
este nuevo datafile en las politicas de respaldos.
A como se analizo en paginas anteriores, la BD seteada en modo NOARCHIVELOG unicamente puede ser recuperada a partir
de un respaldo fisico en frio realizado con anterioridad, toda la informacion despues del respaldo hasta el momento de la
recuperacion se pierte. A diferencia del modo ARCHIVE con el cual tenemos varias formas de recuperacion de manera que la
perdida de datos podria estar muy cercana al cero.
Recover Database:
Se utiliza la informacion del archivo de control actual, la BD puede estar montada pero no abierta, el encabezado de los datafiles
es comparado con la informacion almacenada en el archivo de control y a partir de ahí aplica todos los archive redo logs
necesarios para la correcta y completa sincronizacion de los encabezados.
En la figura se nota que el datafile necesita recuperacion porque no esta sincronizado con la informacion de encabezados
almacenada en los archivos de control y la bd no se encuentra abierta.
Al aplicar el comando recover database, la instancia procede a aplicar todos los redo logs necesarios para la correcta
sincronizacion de los datafiles
Con la finalizacion de la sincronizacion se procede a abrir la BD con el comando alter database open; con el cual esta listo para
la conexión de usaurios.
Recover Datafile:
Este comando es usado cuando la BD esta funcionando y no puede ser detenida aunque tambien podria ser desde modo
mount.
El datafile del tablespace users no se encuentra sincronizado con respecto al diccionario de datos.
Con la sincronizacion realizada, se procede a abrir la BD
Nota: para efectos de laboratorio, la BD deberia de estar en modo OPEN y no en modo MOUNT, lo cual no logre reproducirlo
por ser un ambiente no produccion, pero el comportamiento (a nivel de comandos y funcionalidad) es exactamente el mismo.
Recover Tablespace:
El tablespace debe de estar fuera de linea y la BD en modo OPEN, la idea es la recuperacion de un solo tablespace al momento
actual, este comando no puede ser usado en los tablespace del SYSTEM o cualquier tablespace que tenga asignado
segmentos de rollback o de UNDO que esten en status “in use”, es igual al primer escenario de recuperacion con el detalle que
la BD esta en modo OPEN.
La recuperacion manual nos da el control de poder de controlar que tantos archive redo logs se aplicaran a la BD, esto es util
para deshacer cambios inadvertidos a la BD al detener la recuperacion antes de aplicar el cambio. La opcion manual es
necesaria para recuperacion con un archivo de control viejo y el archivo de control actual no esta disponible.
La BD debe de estar en modo MOUNT pero no OPEN, luego de montar la BD se tiene que dar el comando recover database
manual, luego ira aplicando iniciando con los redo logs mas viejos, el proceso de recuperacion es de hacerla hasta el momento
antes que se necesite al escribir CANCEL a la hora de preguntar por el siguiente archive redo log.
Es parecido al concepto anterior pero no se puede hacer con la version vieja de un archivo de control, aca se le tiene que definir
el tiempo en donde se quiere recuperar la BD definiendole el punto en el tiempo hasta donde se quiere recuperar.
Luego de una recuperacion hasta un punto en el tiempo hay que abrir la BD con el comando resetlogs;
La opcion de resetlogs limpia todos los online redo logs y modifica todos los online data files para indicar que no es necesaria la
recuperacion, luego de hacer abrir la BD de esta forma, ninguno de los archive log files y de los juegos de respaldo generados
con anterioridad son validos ya que el encabezado que se encuentra en todos ellos es sobreescrito por una nueva numeracion
(iniciando de cero), esta opcion es de sumo cuidado aplicarla ya que al resetear los encabezados cualquier informacion que
existira en los online redo logs no es aplicada a la BD, por lo tanto, se pierde. Es recomendale hacer un backup total en frio
antes y despues de aplicar el resetlogs. Todos los datafiles de la BD tienen que estan en linea para que sean reescritos los
encabezados de lo contrario no seran utiles en la nueva encarnacion de la BD.
Utilidad DBVERIFY
DBVerify o DBV es una herramienta que revisa los datafiles de Oracle en busqueda de corrupcion y le aplica medidas
correctivas. Esta herramienta se puede correr en archivos abiertos por alguna instancia (en versiones anteriores a 10g no se
podia hacer esto) ya que esta herramienta abre de forma de lectura los datafiles. Esta se ejecuta a nivel de consola
Limitantes:
Esta utilidad esta diseñada para la verificacion a nivel de bloques, no detecta inconsistencias entre bloques de indices
contra los de las tablas.
Esta utilidad unicamente puede ser utilizada contra archivos de datos, no para verificacion de redo logs o archivos de
control
Se puede verificar en datafiles contenidos en ASM pero la BD debe de estar abierta para la validacion del
usuario/password.
No se puede utilizar en contra de dispositivos tipo RAW ya que espera una extension en los archivos de entrada, la
solucion para esto es definirles una antes de ejecutarlos:
Eg: ln -s /dev/rdsk/mydevice /tmp/mydevice.dbf
Utilizar DBV contra /tmp/mydevice.dbf
Para dispositivos tipo RAW hay que utilizar el parametro END para evitar llegar al final del datafile, si se setea este
parametro muy alto DBV puede marcar como corupto la parte final del datafile. El cual se puede hayar al revisar la
vista V$DATAFILE
El comando seria:
Ejemplos de uso
Recuperacion utilizando RMAN
Se puede comenzar a utilizar esta herramienta sin hacer ningun tipo de instalaciones o de configuraciones, simplmenete
ejecutando la heramienta llamada rman situada en la carpeta bin del Oracle Home. Se pueden tambien hacer la administracion
del RMAN por medio del GUI del Enterprise Manager Pero para hacer una estrategia de respaldo y recuperacion robusta hay
que configurar ciertos componentes opcionales:
Catalogo de Recuperacion (recovery catalog): es la BD que almancena la informacion del repositorio del RMAN, es tambien
llamada Rman metadata, es una muy buena recomendación dejar un servidor dedicado para este repositorio, elimando el riesgo
de quedarse sin espacio.
Flash Recovery Area: es el espacio en disco que la BD almacenara toda la informacion concerniente a recuperaciones.
En paginas anteriores analizamos la forma de respaldos manejados por el usuario, pero estas tienen muchas desventajas, por
ejemplo, no se puede realizar un respaldo incremental y tambien se tiene que manejar varios set de backups para poder ser
aplicados en la recuperacion, los cuales tienen que ser oportunos y validos, ademas de tener que hacer las propias rutinas a
nivel de BD y de Sistema operativo, Oracle provee ambas formas de recuperacion pero siempre recomienda en la utilizacion del
RMAN para respaldos y recuperaciones de BD, algunas de las ventajas son:
Utilizacion del Data recovery Advisor, la cual es una utilidad poderoza que permite facilmente el diagnostico y
reparacion de falltas de datos y corrupcion.
Los comandos son mas simples
Automaticamente maneja el juego de respaldos sin intervencion del DBA
Automaticamente elimina respaldos viejos (en discos y cintas)
Provee un reporte detallado de las operaciones de respaldos
Provee una gran ayuda en el momento de creacion de una BD standby
Permite la validacion de respaldos de BD a modo de prueba sin la recuperacion de los datos
Lista los juegos de respaldos disponibles para recuperacion
Permite hacer respaldos incrementales
Detecta de forma automatica los bloques corruptos
Si hay algunos bloques corruptos se puede recuperar a nivel de bloques sin necesidad de recuperar todo el datafile
Se puede realizar compresion a nivel de bloques
Permite generar backups encriptados
Se integra con herramientas de respaldo de terceros (Veritas, TSM, etc)
Provee una herramienta para el desarrollo de scripts a la medida.
Antes de trabajar con RMAN hay que tener ciertas consideraciones:
A continuacion se detallan los parametros de inicio que se tienen que definir antes de utilizar RMAN
CONTROL_FILE_RECORD_KEEP_TIME:
Un registro de toda los respaldos realizados por rman son almacenados en el archivo de control de la BD destino, este
parametro especifica el numero de dias que se mantendra esta informacion en el archivo de control de la BD destino, luego de
llegar al limite, la informacion sera sobreescrita, en el caso que haya un umbral muy alto el motor tratara de ampliar el tamaño
del archivo de control para poder soportar mas informacion, generalmente esto siempre es exitoso ya que el tamaño del archivo
de control es relativamente pequeño comparado con los demas archivos de Oracle.
DB_RECOVERY_FILE_DEST:
Este parametro especifica la ubicación del FLASH_RECOVERY_AREA y deberia de estar ubicada en un filesystem diferente a
cualquier otro que contenga archivos de la BD, esto para reducir el riesgo de perdida del area de recuperacion en el caso de
daño de medio.
DB_RECOVERY_FILE_DEST_SIZE:
Define el tamaño limite maximo de espacio en disco que sera utilizado para el FLASH_RECOVERY_AREA.
Las tablas dinamicas que contienen informacion especifica de las operaciones del RMAN en ambas BD.
Vista Descripcion
RC_* Vistas del catalogo de recuperacion del RMAN, unicamente
existen en la BD en donde este configurado este
V$RMAN_STATUS Muestra informacion de las tareas finalizadas y en proceso del
RMAN
V$RMAN_OUTPUT Muestra informacion de mensajes generados por los mensajes
del RMAN generados durante la sesion
V$SESSION_LONGOPS Muestra informacion sobre los procesos largos
administrativos, aquellos que tienen mas de 6 segundos de
duracion
V$DATABASE_BLOCK_CORRUPTION Informacion de bloques corruptos detectados por la sesion del
RMAN
V$FLASH_RECOVERY_AREA_USAGE El porcentaje del espacio usado por objeto dentro del flash
recovery area
V$RECOVERY_FILE_DEST Numero de archivos, espacio utilizado, espacio a reutilizar en
el flash recovey area
V$RMAN_CONFIGURATION Parametros personalizados (que no son por defecto) para la
BD.
Configuracion del Catalogo de recuperacion
El siguiente script creara el usuario rman, que sera el dueño del catalogo de recuperacion, la cual es una BD pequeña que
contiene toda la metadata utilizada por rman para su funcionamiento, conectado como system por medio de sqlplus.
Utilizando el usuario creado anteriormente se procede a crear el catalogo de recuperacion, esto se hace al invocar el comando
del RMAN create catalog.
Una vez que el catalogo esta creado, se tiene que registrar todas las BD que seran respaldadas por RMAN, en este caso nos
tenemos que conectar a la bd destino (Target) la cual sera la que se respalda y a la BD que contiene el catalogo (Catalog)
Una vez que la BD esta registrada con el rman, podemos extraer informacion de ella desde el catalogo de recuperacion, para
esto es necesario ejecutar el comando report schema para obtener la informacion:
La BD la cual cuenta con la informacion de recuperacion debe de ser protegida en contra de fallas, el minimo nivel de se puede
garantizar con un export del esquema (se analizara mas adelante la utilidad del export e import), con el siguiente comando se
puede realizar:
En algunas situaciones es necesario hacer consultas directas al catalogo de recuperacion, para esto es necesario saber primero
el ID de la BD (dbid) que queremos para buscarlas en el catalogo de recuperacion, el db_id se obtiene al consultas la vista
V$DATABASE:
Respaldo Total con RMAN
En el siguiente ejemplo se realizara un respaldo total de la BD incluyendo el SPFILE y sera almacenado en el flash recovery
area:
El comando del alter system lo que permite es asegurarnos de archivar todas las transacciones, incluyendo las que sucedieron
mientras realizabamos el respaldo, ademas asegura que podriamos realizar una recuperacion en el medio exitosa luego de
aplicar este respaldo.
Notese que se respaldo dos veces el archivo SPFILE esto es por la configuracion de configure controlfile autobackup on para
automaticamente respaldarlo.
Administracion del repositorio:
Copias Imágenes:
Hasta este punto se han realizado respaldo tipos backupset, pero tambien se pueden realizar copias bit a bit de un tablespace
especifico de una BD, las ventajas que se obtienen es que el respaldo se almacena directamente en el repositorio del RMAN y
los bloques son validados por corrupcion, otra ventaja es que este tipo de copias pueden ser utilizadas tan cual fuera del RMAN,
ya que por alguna razon la recuperacion se tenga que hacer fuera del RMAN.
En el ejemplo a continuacion se realiza una copia de imagen del tablespace inet_star, estas copias imágenes pueden ser
creadas en discos
Respaldo del archivo de control y del spfile:
De forma manual se podria invocar el respaldo de estos archivos, tomando en cuenta que al tener el parametro de autobackup
on, se realizara de forma automatica.
Respaldo de los Archive redo Logs:
Aunque los archive redo logs se podrian generar a varias ubicaciones de forma simultanea (por la multiplexacion), pero por su
naturaleza critica es de suma importancia el respaldo de dicha informacion, una vez completada el proceso de respaldo se tiene
la opcion de eliminarlos.
En el ejemplo, se respalda toda la informacion de los archive redo log ubicados en el flash recovery area y luego removidos del
disco:
Elminar y almacenar archive redo logs viejos puede ser acompañada al definir un rango de fechas en el comando:
En el ejemplo, todos los archive redo logs anteriores desde una semana hasta 3 semanas son copiadas a cintas y luego
eliminadas de los discos, tambien se podria definir una secuencia por SCN o el numero de secuencias.
Respaldos Incrementales:
Una estretegia alternativa es el uso de respaldos incrementables incluyendo los archive redo logs necesarios para la
recuperacion. El primer respaldo incremental es conocido como respaldo nivel 0, los respaldos incrementales siguientes son
nivel 1, ya que inicamente incluye los cambios a nivel de bloques modificados, estos pueden ser acomulativos o diferenciales. El
acomulativo respalda toda la informacion de bloques desde el primer respaldo incremental; un respaldo diferencial almacena
toda la informacion desde el ultimo incremental sin importar que sea nivel 0 o 1.
Cuando existe una serie diferentes de respaldos disponibles en el catalogo, ya sea copias de imágenes, de tablespaces,
incrementales, rman utilizara la mejor opcion para recuperacion que sea mas eficiente. Aunque el DBA aun tiene la opcion de
prevenir al RMAN sobre el uso de un respaldo particular.
La decision ya sea de utilizar respaldos acomulativos o diferenciales depende de la cantidad de ciclos de CPU y la cantidad de
espacio en disco disponible. Usando respaldos acomulativos significa que cada respaldo incremental sera progresivamente mas
grande y tomara mas tiempo hasta que se realice otro respaldo incremental nivel 0, durante un proceso de recuperacion
unicamente seran utilizados un juego de respaldos a diferencia de los respaldos diferenciales que por ser mas pequeños y
manejables son necesarios todos para poder realizar la recuperacion completa.
En el ejemplo, nos damos cuenta que hay muchos archivos fuera de la politica de retencion de cuatro dias, en otras palabras,
los datafiles necesitan cuatro dias de archive log para recuperar la BD.
Para remediar la situacion, se puede realizar otro respaldo total o un respaldo incremental, la cual sera mas facil de implementar
y mantener, para un respaldo incremental a nivel 0 se realiza de la siguiente forma:
Luego en cualquier momento en el futuro podemos realizar respaldos incrementales a nivel 1:
Por defecto el respaldo se realiza de forma diferencial, la palabra clave differential no es necesaria, sin embargo se puede
realizar un respaldo acomulativo al agregar la palabra clave cumultive.
Tambien la actvidad en la BD tambien podria dictar la forma de realizar los respaldos (acomulativo o diferenciales), en un
ambiente tipo OLTP el cual tiene mucha actividad de insert, updates, los respaldos incrementales son mas manegables en
termino de utilizacion de discos. Para un ambiente de datawarehouse con casi ningun cambio, los respaldos diferenciales son
mas adecuados, en comparacion de uso de redo log files, ambos tipos de respaldo son recomendados en terminos de tiempo
de recuperacion de la BD, para cualquier se puede definir la politica de retension:
Compresion de respaldos
Se puede configurar este parametro de forma para la compresion automatica de respaldos, o se podira especificar por medio de
comandos RMAN:
Validacion de respaldos
Teniendo toda una serie de respaldos realizados de distintas formas es igual a no tener nada si no se realiza una validacion
oportuna de lo que tenemos. El comando del rman backup validate database simulara un respaldo, revisando la existencia de
los archivos especificados, asegurandose que no estan corruptos pero sin realizar el juego de respaldo, este comando es util en
el caso de validacion o de forma proactiva encontrar cualquier problema y resolverlos antes de comprometer algun respaldo.
.
Operaciones de recuperacion:
La parte clave de cualquier plan de desastres, poder tener toda la informacion de la BD disponible para su uso es fundamental.
Cuando es una pequeña parte de bloques dañados, RMAN puede hacer la recuperacion de dichos bloques en lugar de hacer
una restauracion de todo un datafile completo, este tipo de recuperaciones reduce el tiempo de aplicación de redo logs y reduce
tambien de forma drastica la cantidad de I/O necesaria para la recuperacion, mientras la recuperacion se realiza los datafiles
afectados podrian estar en uso y disponibles para los usuarios.
El error que se presenta a la hora de un bloque corrupto es el siguiente, esta informacion se encuentra disponible a nivel de las
trazas generadas por la BD.
Si en algun raro evento se pierde el archivo de control, es facilmente recuperable por medio del rman con la instancia en modo
NOMOUNT.
Si no se utiliza un catalogo de recuperacion, se puede hacer una recuperacion a partir de una copia anterior de la siguiente
forma:
Restauracion de un Tablespace
Si algun disco conteniendo los datafiles de un tablespace se corrompe, la recuperacion es posible y la BD siempre se mantiene
abierta para los usuarios, esto no se puede hacer si el tablespace dañado es el SYSTEM. Luego de darnos cuenta del problema
(algun usuario llama quejandose) se puede revisar la vista dinamica V$DATAFILE_HEADER para ver que archivos necesitan
recueperacion:
Ademas de que cuando se revisa el archivo log de la BD nos damos cuenta de lo siguiente:
Luego de reparar lo dañado a nivel de hardware (en el caso que sea necesario) rman viene al rescate buscando inicialmente a
que tablespace corresponde el datafile numero 4
Para la recuperacion el TBS tiene que estar en fuera de linea, por lo que hay que forzarlo
Luego de ponerlo fuera de linea hay que proceder con la restauracion y recuperacion de dicho tablespace para luego ponerlo en
linea nuevamente:
El comando recover copia el archivo de nuestro ultimo juego de respaldo y el comando recover aplica los archive redo logs
necesarios para la correcta sincronizcion contra el archivo de control.
Restauracion de un datafile
El proceso es bastante similar a la recuperacion de un tablespace con la diferencia de utilizacion de un par de simples
comandos, se determina el numero del datafile dañado y se restaura y luego se recupera:
Restauracion de una BD por completo:
Este es el evento mas desastrozo y serio que podriamos ver como Administradores, y la solucion es tener unas solidas tecnicas
de respaldo y de recuperacion, ya se demostro que se puede recuperar partes de la BD con esfuerzo minimo y sin perdidas de
informacion. Como se deben de tomar medidas como las de multiplexacion de archivos de control y los redo logs en diferentes
discos los tendremos disponibles para la recuperacion de la BD con el RMAN.
Todo el proceso de recuperacion de la BD puede realizarse dentro del RMAN, primero montar la BD:
RMAN se conecta a la BD e identifica que no esta disponible, el siguiente paso es restaurar y recuperar laBD
La BD se encuentra disponible y lista para uso, RMAN utilizara la mejor o mas eficiente forma de recuperacion de la BD con la
idea de minimizar la cantidad de archivos accesados para reducir el I/O y tener la BD consistente y en linea en el menor tiempo
posible.
La idea es tener una certeza que al momento que necesitemos nuestros respaldos para una recuperacion, estos esten
accesibles y listos para ser utilizados por el RMAN, el comando restore preview simula el proceso de recuperacion sin hacer la
recuperacion fisica de los archivos.
En el siguiente ejemplo se realiza una recuperacion de prueba del tablespace users:
Para el proceso de recuperacion RMAN utilizara un set de backup para un simple datafile del tablespace y todos los archive
redo logs necesarios para la sincronizacion del mismo.