Con este espacio pretendo crear un rincón de información relacionda con las bases de datos Oracle, sus funcionalidades, características, noticias.... etc. Interaré hacer pequeños artículos con ejemplos demostrativos para que resulte más fácil leerlos. No dudéis en mandar vuestros comentarios, críticas, aclaraciones... etc.

Información del Autor

Llevo más de diez años trabajando como DBA Oracle en diferentes compañías y desde el 2004 lo hago de forma freelance a través de una sociedad creada por mí, Infor Consult Soluciones (http://www.inforconsult.es). Si tienes cualquier duda, comentario o propuesta que hacerme, no lo dudes.

jueves, 10 de enero de 2008

Backups automáticos del spfile y del controlfile

Introducción
Desde la versión 9 de Oracle existe la posibilidad de hacer backups del controfile y del SPFILE automáticamente (autobackups) si se usa RMAN, esto es, ante determinadas circunstancias, Oracle lanza automáticamente el backup asegurando que siempre se tiene un respaldo actualizado.

Lógicamente, este comportamiento permite asegurar casi al 100% que ante una caída se podrá hacer una recuperación exitosa siempre que contemos con alguna copia de los ficheros de datos y la base de datos esté en modo archivelog. Téngase en cuenta que Oracle necesita el repositorio para hacer una recuperación, y ese repositorio reside en el fichero de control y/o en un catálogo de recuperación si está configurado. En el caso de que se pierda el catálogo de recuperación y además todos los ficheros de control, la recuperación se hace (casi) imposible, salvo que tengamos activado el autobackup (que, curiosamente, “viene de fábrica” en OFF).

¿Cuándo lanza Oracle el autobackup?
Si está configurado el autobackup, Oracle salva el controlfile y el SPFILE (si se usa):
  1. Después de ejecutar una orden BACKUP en el prompt o después de ejecutar un bloque RUN{} que incluya la orden BACKUP.
  2. Después de cada cambio estructural que haya modificado en contenido del controlfile, por ejemplo, añadir o borrar tablespaces o datafiles.

¿Dónde se salvan los autobackups?
Depende. Si el autobackup se genera por el primer caso, Oracle usa el primer canal asignado para ese backup y lo guarda en otro backupset diferente. Obviamente, el medio físico donde se guardará ese autobackup es el mismo que el del canal, es decir, si el primer canal era de tipo TAPE el autobackup irá también a cinta.

Sin embargo, si el autobackup se genera como consecuencia de un cambio estructural de la base de datos, Oracle automáticamente abre un canal tipo DISK y guarda el autobackup. El lugar y el nombre que Oracle dará a este autobackup se puede configurar como se verá más adelante.

Cada vez que se lanza un autobackup Oracle escribe en el alert.log de la instancia la hora y la ruta completa del backup.

No obstante, aunque no esté configurado el autobackup, en realidad, se hace pero solo con cada orden BACKUP que incluya el datafile número 1 (datafile system). Además, en este caso el backup lo mete en el mismo backupset que el backup general. Otra diferencia es que si no está configurado, Oracle no hace autobackup después de cada cambio estructural.

¿Cómo se ve la configuración actual?
Para ver los valores de configuración se debe entrar en RMAN y una vez conectados a la base de datos target ejecutar SHOW ALL para ver todos los valores o SHOW OPCIÓN para ver la opción que se quiera, por ejemplo:

SHOW CONTROLFILE AUTOBACKUP;
SHOW CONTROLFILE AUTOBACKUP FORMAT;
SHOW DEFAULT DEVICE TYPE;


¿Cómo se activa/desactiva el autobackup?
Como ya se ha dicho, por omisión viene desactivado. Para activarlo hay que entrar en RMAN y una vez conectados a la base de datos target lanzar la orden:

CONFIGURE CONTROLFILE AUTOBACKUP ON;

Para desactivarlo hay que hacer lo mismo pero con esta otra orden:

CONFIGURE CONTROLFILE AUTOBACKUP OFF;

¿Cómo se cambian las rutas?
La ruta por omisión del autobackup tipo DISK es la flash recovery area si está configurada, o en su defecto, la carpeta $ORACLE_HOME/dbs. El formato es %F, que se traduce por una cadena de este tipo: c-IIIIIIIIII-YYYYMMDD-QQ, donde “c” es un literal, “IIIIIIIIII” se sustituye por el DBID de la base de datos, “YYYYMMDD” es la fecha y “QQ” es un número hexadecimal y sequencial.

Para cambiar la ruta se debe usar (es obligatorio que se use %F):

CONFIGURE CONTROFILE AUTOBACKUP FOR DEVICE TYPE DISK TO ‘ruta_formato’;

Ejemplos de ruta_formato:

‘%F’
‘/opt/oracle/%F’
‘/opt/oracle/controfile_%F’

Para volver a dejar el valor por omisión se puede usar CLEAR en vez de TO ‘ruta_formato’.

Y hasta aquí por hoy con este artículo. Espero que te haya sido útil. Por favor, deja
tus comentarios, correciones o sugerencias.

Juan Lorenzo Arellano
Oracle DBA
Infor Consult Soluciones

2 comentarios:

hagfree dijo...

Hola Juan, Estoy en búsqueda de resolver una curiosidad. Te comento: He utilizado ( y aún utilizo) el RMAN como política de respaldo(unos cuantos años 10 o más haciendolo) pero especialmente en una actividad se me ha pedido que configure el catalogo del RMAN para integranrlo con una herramienta de HP (HP Data protector), sin embargo al verificar la configuración de la integración del producto de HP con Oracle RMAN he observado que permite escoger si se trabaja o no con el catalogo.

En concreto; mi curiosidad es ( si me puedes ayudar, por supuesto ) ¿ Cual es exactamente la ventaja de utilizar un catalogo en el RMAN ?

Bueno, espero que sigas bien. Y te agradezco de antemano tu colaboración,

Hugo González,
CC's Venezuela
hagffree@gmail.com

Yeimi Juarez dijo...

gracias por la ayuda apenas ando batallando con los backups y tu entrada me ayudo bastante, solo que no me funciono como tu la tienes yo la puse de la siguiente manera:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'C:\XXX'
tal vez porque lo estoy haciendo en windows, pero sin duda tu entrada me marco la pauta para saber que debia buscar, muchas gracias desde mexico df