8/08/2011



Explicamos cómo activar el modo ARCHIVELOG en Oracle Database 11g. Mostramos en qué consiste el modo ARCHIVELOG, qué son los redo log online y redo log offline. Indicamos algunas recomendaciones de seguridad para que nuestra base de datos sea totalmente robusta ante fallos de disco y fallos humanos. Explicamos también cómo desactivar el modo ARCHIVELOG, aunque no es recomendable, en determinados entornos puede ser necesario.


 

En qué consiste el modo ARCHIVELOG de Oracle, recomendaciones

Cómo funciona el modo ARCHIVELOG en Oracle

Oracle escribe en los archivos de registros de reconstrucción en línea (redo log online) de manera cíclica, 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 reconstrucción fuera de línea (redo log offline) en disco:
En qué consiste el modo ARCHIVELOG de Oracle

El modo ARCHIVELOG de Oracle es un mecanismo de protección ante fallos de disco implementado por Oracle. Protegerá la base de datos ante posibles fallos físicos de disco y también ante eliminaciones o modificaciones no deseadas de los datos. Con este mecanismo tendremos varias ventajas:
  • Se podrán realizar copias de seguridad físicas online, copias de los ficheros físicos sin detener la base de datos.
  • Se podrá recuperar la base de datos en un momento específico del tiempo, se podrá recuperar la base de datos a una hora y día indicados.
La única desventaja es que este modo puede ralentizar (mínimamente) la base de datos y requiere de más espacio en disco para alojar los redo log offline (archivos de reconstrucción fuera de línea).
En realidad Oracle implementó este modo de ARCHIVELOG cuando los discos duros eran más susceptibles de fallar. Hoy en día con los discos duros profesionales de que disponemos en niveles de RAID adecuados es bastante difícil que ocurran fallos, aunque no es imposible. Además, este modo, como ya hemos comentado, tiene varias ventajas por las que merece la pena usarlo.

Recomendaciones de seguridad para ARCHIVELOG en Oracle

A continuación indicamos algunas recomendaciones para disponer de una base de datos robusta, con un alto grado de disponibilidad y de protección ante fallos (tanto humanos como físicos 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 reconstrucción en línea) 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 físicos diferentes. De esta forma, si un disco físico falla, siempre habrá una copia con las últimas transacciones en otro disco físico, 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 reconstrucción fuera de línea), generados por Oracle cuando se van llenando los redo log online. Además, 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, eliminándolos de forma automática 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 irán 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) estén 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/contraseña 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 automático Desactivado

Activar el modo ARCHIVELOG en Oracle 11g R2
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 automático Desactivado
Destino del archivo USE_DB_RECOVERY_FILE_DEST
Secuencia de log en línea más antigua 5
Secuencia de log actual 7

También podremos comprobar el estado de ARCHIVELOG ejecutando la siguiente consulta SQL:
select name, log_mode from v$database;
Activar el modo ARCHIVELOG en Oracle 11g R2
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 grdo de disponibilidad y hay usuarios conectados deberemos hacerlo en un momento del día en que el impacto sea menor. El proceso es rápido por lo que la base de datos estará detenida un minuto a lo sumo. Para detener la base de datos ejecutaremos:
shutdown immediate
Activar el modo ARCHIVELOG en Oracle 11g R2
El texto de la ventana anterior:
alter system set log_archive_dest_1='location=C:/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:
Activar el modo ARCHIVELOG en Oracle 11g R2
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;
Activar el modo ARCHIVELOG en Oracle 11g R2
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 automático Activado
Destino del archivo C:/archive_log_offline
Secuencia de log en línea mßs 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 algún cambio hardware o software que suponga algún "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 automática cada vez que un redo log online se llena, como ya hemos indicado, por lo que este comando no deberemos usarlo salvo en circunstancias específicas.
Activar el modo ARCHIVELOG en Oracle 11g R2
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:
Activar el modo ARCHIVELOG en Oracle 11g R2
Nota: no debemos usar "alter system set log_archive_start = TRUE scope = spfile;", este parámetro ha quedado obsoleto a partir de la versión 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 desconectarán 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;
Activar el modo ARCHIVELOG en Oracle 11g R2
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 automático Desactivado
Destino del archivo C:archive_log_offline
Secuencia de log en línea más antigua 9
Secuencia de log actual 11


 

Artículos relacionados

  

Créditos

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

No hay comentarios: