You are on page 1of 9

En qu consiste el modo ARCHIVELOG de

Oracle, recomendaciones
Cmo funciona el modo ARCHIVELOG en Oracle
Oracle escribe en los archivos de registros de reconstruccin en lnea (redo log
online) de manera cclica, cuando los usuarios realizan modificaciones en la base de
datos, Oracle guarda todas las transacciones que se van realizando en estos archivos
de redo log online. Empieza a escribir en el primer archivo de redo log online, cuando
se llena pasa al segundo, y as sucesivamente hasta llegar al ltimo archivo de redo
log online, cuando llena el ltimo inicia un proceso en segundo plano llamado LGWR
(Log Writer) para sobreescribir los contenidos del primer archivo de redo log online y
volver a empezar. Cuando Oracle se ejecuta en modo ARCHIVELOG el proceso en
segundo plano llamado ARCH hace una copia de cada archivo de redo log online una
vez que el proceso LGWR termina de escribir en l, guarda dicha copia en los archivos
de reconstruccin fuera de lnea (redo log offline) en disco:

El modo ARCHIVELOG de Oracle es un mecanismo de proteccin ante fallos de disco


implementado por Oracle. Proteger la base de datos ante posibles fallos fsicos de
disco y tambin ante eliminaciones o modificaciones no deseadas de los datos. Con
este mecanismo tendremos varias ventajas:
Se podrn realizar copias de seguridad fsicas online, copias de los ficheros
fsicos sin detener la base de datos.
Se podr recuperar la base de datos en un momento especfico del tiempo, se
podr recuperar la base de datos a una hora y da indicados.
La nica desventaja es que este modo puede ralentizar (mnimamente) la base de
datos y requiere de ms espacio en disco para alojar los redo log offline (archivos de
reconstruccin fuera de lnea).
En realidad Oracle implement este modo de ARCHIVELOG cuando los discos duros
eran ms susceptibles de fallar. Hoy en da con los discos duros profesionales de que
disponemos en niveles de RAID adecuados es bastante difcil que ocurran fallos,
aunque no es imposible. Adems, este modo, como ya hemos comentado, tiene varias
ventajas por las que merece la pena usarlo.

Recomendaciones de seguridad para ARCHIVELOG en


Oracle
A continuacin indicamos algunas recomendaciones para disponer de una base de
datos robusta, con un alto grado de disponibilidad y de proteccin ante fallos (tanto
humanos como fsicos de hardware):
1. En primer lugar, como ya hemos comentado, es activar el modo ARCHIVELOG.
2. Debemos tener los archivos de redo log online (archivos de registro de
reconstruccin en lnea) multiplexados. Oracle permite establecer varios
archivos de redo log online en varias ubicaciones diferentes. Recomendamos
que haya varios archivos de redo log online en discos fsicos diferentes. De
esta forma, si un disco fsico falla, siempre habr una copia con las ltimas
transacciones en otro disco fsico, as podremos recuperar la base de datos en
un momento del tiempo.
3. Debe hacerse copia de seguridad (a ser posible con RMAN) de los archivos de
redo log offline (archivos de registro de reconstruccin fuera de lnea),
generados por Oracle cuando se van llenando los redo log online. Adems, esta
copia de seguridad debe hacerse a varios dispositivos (cinta, disco). RMAN
contempla, entre sus muchas opciones, la posibilidad de hacer copia de
seguridad de estos archivos y del resto que componen la base de datos,
eliminndolos de forma automtica si la copia se ha realizado con xito. De esta
forma la unidad de disco destino de los redo log offline no se llenar, pues se
irn eliminando los archivos conforme se vaya haciendo copia de seguridad de
ellos.
4. Tras explicar el funcionamiento del ARCHIVELOG, volvemos a repetir que es
muy importante que todos los archivos que componen la base de datos de
Oracle (datafiles de los tablespaces, los archivos de control, los redo log offline,
los redo log online) estn ubicados en discos duros profesionales en un nivel de
RAID adecuado tolerante a fallos.

Activar el modo ARCHIVELOG en Oracle


11g R2
Antes de activar el modo ARCHIVELOG de una base de datos Oracle, lo que haremos
en primer lugar es verificar el estado actual, para asegurarnos de que, efectivamente,
el modo ARCHIVELOG no est activado. Para comprobarlo abriremos SQL*Plus desde
una ventana de MS-DOS (si estamos en Windows) o una ventana de Terminal (si
estamos en Linux), para ello ejecutamos el siguiente comando:
sqlplus /nolog
Nos conectamos a la base de datos con un usuario con permisos de DBA con el
comando:
conn sys/contrasea as sysdba

Ejecutamos el siguiente comando Oracle para comprobar si la base de datos est o no


en modo ARCHIVELOG:
archive log list
El resultado del comando anterior en caso de que el ARCHIVELOG no est activo es:
Modo log de la base de datos Modo de No Archivado
Archivado automtico Desactivado

El texto de la ventana anterior:


sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Dom Ago 7 22:33:26 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
conn sys/XXX as sysdba
Conectado.
archive log list;
Modo log de la base de datos Modo de No Archivado
Archivado automtico Desactivado
Destino del archivo USE_DB_RECOVERY_FILE_DEST
Secuencia de log en lnea ms antigua 5
Secuencia de log actual 7
Tambin podremos comprobar el estado de ARCHIVELOG ejecutando la siguiente
consulta SQL:
select name, log_mode from v$database;

Devolver: LOG_MODE = NOARCHIVELOG si la bd no est en modo ARCHIVELOG.

Tras asegurarnos de que la base de datos no est en modo ARCHIVELOG, como hemos
indicado anteriormente, ahora ejecutaremos el siguiente comando para indicar la
carpeta de destino de los redo log offline:
alter system set log_archive_dest_1='location=C:/archive_log_offline' scope=spfile;
Ahora, para que se apliquen los cambios y para establecer la base de datos en modo
ARCHIVELOG definitivamente, deberemos detener la base de datos para iniciarla en
modo "mount" (montada). Por ello, si nuestra base de datos requiere un alto grado de
disponibilidad y hay usuarios conectados deberemos hacerlo en un momento del da en
que el impacto sea menor. El proceso es rpido por lo que la base de datos estar
detenida un minuto a lo sumo. Para detener la base de datos ejecutaremos:
shutdown immediate

El texto de la ventana anterior:


alter system set log_archive_dest_1='location=C:/oracle/archive_log_offline'
scope = spfile;
Sistema modificado.
shutdown immediate
Base de datos cerrada.
Base de datos desmontada.
Instancia ORACLE cerrada.
Antes de iniciar la base de datos, es importante que la carpeta de destino de los redo
log offline archivados exista en el sistema de ficheros del sistema operativo, en nuestro
ejemplo hemos creado la carpeta "archive_log_offline" en la unidad C:

Iniciamos la base de datos en modo mount con el comando:


startup mount;
Ejecutamos el siguiente comando para indicar a Oracle que la base de datos se iniciar
a partir de ahora en modo ARCHIVELOG:
alter database archivelog;
Abriremos la base de datos con el comando:
alter database open;
A partir de ahora nuestra base de datos ya estar en modo ARCHIVELOG. Podremos
comprobarlo (como ya hemos indicado) con el comando:
archive log list;
Y la sentencia SQL:
select log_mode from v$database;

El texto de la ventana anterior:


startup mount;
Instancia ORACLE iniciada.
Total System Global Area 1720328192 bytes
Fixed Size 2176448 bytes
Variable Size 1023412800 bytes
Database Buffers 687865856 bytes
Redo Buffers 6873088 bytes
Base de datos montada.
alter database archivelog;
Base de datos modificada.
alter database open;
Base de datos modificada.
archive log list;
Modo log de la base de datos Modo de Archivado
Archivado automtico Activado
Destino del archivo C:/archive_log_offline
Secuencia de log en lnea ms antigua 5
Siguiente secuencia de log para archivar 7
Secuencia de log actual 7
select log_mode from v$database;
LOG_MODE
-----------ARCHIVELOG

Si queremos forzar a Oracle a que escriba los redo log online en los redo log offline
podemos ejecutar el comando:
alter system switch logfile;
Este comando podremos ejecutarlo para forzar el copiado, para comprobar que el
ARCHIVELOG est funcionando o cuando queremos realizar algn cambio hardware o
software que suponga algn "peligro" para los datos, en estos casos forzaremos un
copiado de los redo log online a los redo log offline y haremos copia de seguridad. Por
supuesto, Oracle realiza el copiado de forma automtica cada vez que un redo log
online se llena, como ya hemos indicado, por lo que este comando no deberemos
usarlo salvo en circunstancias especficas.

Hemos ejecutado tres veces el comando alter system switch logfile; como ejemplo y
Oracle habr creado tres ficheros de redo log offline en la carpeta de destino:

Nota: no debemos usar "alter system set log_archive_start = TRUE scope = spfile;",
este parmetro ha quedado obsoleto a partir de la versin 10g de Oracle, ya no es
necesario.

Desactivar el modo ARCHIVELOG en Oracle


11g R2
Aunque no es recomendable, en determinados entornos y en determinadas
circunstancias hay que desactivar el modo ARCHIVELOG, para hacerlo detenemos la
base de datos (se desconectarn todos los usuarios y transacciones actuales) con el
comando (desde SQL*PLus, como hemos indicado anteriormente):
shutdown immediate;
Iniciamos la base de datos en modo mount con:
startup mount;
Ejecutaremos el siguiente comando para desactivar el modo ARCHIVELOG en Oracle
11g:
alter database archivelog;
Abriremos la base de datos con el comando:
alter database open;
A partir de ahora nuestra base de datos ya no estar en modo ARCHIVELOG.
Podremos comprobarlo (como ya hemos indicado) con el comando:
archive log list;

El texto de la ventana anterior:


shutdown immediate;
Base de datos cerrada.

Base de datos desmontada.


Instancia ORACLE cerrada.
startup mount;
Instancia ORACLE iniciada.
Total System Global Area 1720328192 bytes
Fixed Size 2176448 bytes
Variable Size 1023412800 bytes
Database Buffers 687865856 bytes
Redo Buffers 6873088 bytes
Base de datos montada.
alter database noarchivelog;
Base de datos modificada.
alter database open;
Base de datos modificada.
archive log list;
Modo log de la base de datos Modo de No Archivado
Archivado automtico Desactivado
Destino del archivo C:archive_log_offline
Secuencia de log en lnea ms antigua 9
Secuencia de log actual 11

You might also like