Hola a todos, hoy os vamos a proponer una tarea que cuando tenemos una BBDD Oracle nos tocará realizar, o al menos pensar en ello, que es cómo poner una BBDD en modo Archivelog. Con este procedimiento, al igual que con el procedimiento de cambio de ubicación de los ficheros de control, que comentamos hace unas semanas, hay que tener cuidado si lo hacemos en entornos de producción, ya que también requiere un reinicio de la instancia, con la consiguiente afectación de las aplicaciones que conectan a la BBDD.
Modo Archivelog de la BBDD
Los ficheros de Redo Log son los ficheros donde se guardan automáticamente los cambios que ocurren en la BBDD. Estos ficheros se utilizan para recuperación en caso de caída de la instancia. Cuando se produce un cambio en la BBDD, además de los mecanismos para que el cambio quede realizado en la BBDD, también se escribe en los ficheros de Redo log. La escritura de los cambios en los ficheros de redo log es en serie, comenzando en el primer fichero, y continuando con los siguientes. Es cíclico, cuando se llega al final del último fichero, se vuelve al principio del primero. Esto quiere decir que se sobrescribe la información que había en el fichero.

Con este procedimiento, solamente se puede recuperar una BBDD en caso de caída hasta donde esté sobrescrita la información, es decir, los cambios que se hayan guardado en los ficheros de Redo Log que existen. Para poder recuperar la BBDD en caso de caída, se utiliza el modo Archivelog de la BBDD. En este modo, se realiza una copia de cada fichero de Redo Log cuando se completa su escritura a otra ubicación para guardarlo por si es necesario en el futuro para dicha recuperación.
Cómo está configurada la BBDD
Tenemos varias formas de conocer si la BBDD se encuentra en modo Archivelog o no, haciendo consultas a las vistas del catálogo de la misma BBDD.
La columna ARCHIVER En las vistas v$instance y LOG_MODE en v$database nos dicen el modo en que está operando la BBDD
SQL> select * from v$instance;
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION STARTUP_ STATUS PAR THREAD# ARCHIVE LOG_SWITCH_WAIT
----------------- -------- ------------ --- ---------- ------- ---------------
LOGINS SHU DATABASE_STATUS INSTANCE_ROLE ACTIVE_ST BLO
---------- --- ----------------- ------------------ --------- ---
1 orcl
pruhost
12.2.0.1.0 25/08/20 OPEN NO 1 STOPPED
ALLOWED NO ACTIVE PRIMARY_INSTANCE NORMAL NO
SQL> select name, log_mode from v$database;
NAME LOG_MODE
--------- ------------
ORCL NOARCHIVELOG
También hay un comando que nos dice el modo de la BBDD sin acceder a las vistas del catálogo.
SQL> 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
Poner una BBDD en modo Archivelog
Se puede especificar el modo archivelog de la BBDD en el momento de la creación de la instancia con el DBCA.

Para poner la BBDD en modo archivelog, es necesario especificar una ruta donde se deben guardar los ficheros de archivelog una vez se creen. Se pueden almacenar hasta 30 copias del fichero especificando distintas rutas.
Como se puede ver en la imagen, no se especifica ninguna ruta en el cuadro de diálogo «Edit Archive Mode Parameters».
En este caso, los ficheros de archivelog generados se almacenan en la Fast_Recovery_Area o Flash_Recovery_Area en versiones anteriores a la 11g.
También se puede hacer de forma manual, posteriormente al momento de la creación de la BBDD. Para cambiar el modo de la BBDD, está tiene que estar en modo MOUNT, con lo que es necesario pararla para poder iniciarla en este modo.
SQL> shutdown immediate
Base de datos cerrada.
Base de datos desmontada.
Instancia ORACLE cerrada.
SQL>
SQL> startup mount
Instancia ORACLE iniciada.
Total System Global Area 1068937216 bytes
Fixed Size 2288080 bytes
Variable Size 671090224 bytes
Database Buffers 390070272 bytes
Redo Buffers 5488640 bytes
Base de datos montada.
Una vez en modo MOUNT, se pone la BBDD en modo archivelog y se abre para que los usuarios se puedan volver a conectar.
SQL> alter database archivelog;
Base de datos modificada.
SQL> alter database open;
Base de datos modificada.
Comprobar modo de la base de datos
Se puede comprobar que la BBDD está en modo Archivelog
SQL> select name, log_mode from v$database;
NAME LOG_MODE
--------- ------------
ORCL ARCHIVELOG
SQL> archive log list
Modo log de la base de datos Modo de Archivado
Archivado automßtico Activado
Destino del archivo USE_DB_RECOVERY_FILE_DEST
Secuencia de log en lÝnea mßs antigua 5
Siguiente secuencia de log para archivar 7
Secuencia de log actual 7
El destino de los ficheros de Archivelog se indica en la línea «Destino del archivo», y en este caso, el valor que muestra esta línea es que se está usando la ruta indicada por el parámetro DB_RECOVERY_FILE_DEST. Se puede comprobar ese parámetro con la instrucción:
SQL> show parameter db_recovery_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string F:\fast_recovery_area
db_recovery_file_dest_size big integer 4182M
Se comprueba que se están copiando los ficheros en la ruta indicada:

Si se quiere cambiar la ruta destino de los ficheros o añadir un nuevo destino (hasta 30) podemos ejecutar lo siguiente:
ALTER SYSTEM SET log_archive_dest_1='LOCATION=F:\ORCL';
Y comprobamos que se generan los ficheros en la nueva ruta:

Esperamos que os haya sido de utilidad.
Un saludo.
Equipo de base de datos
Más info: https://franhormigo.wordpress.com/2017/06/17/activar-desactivar-y-comprobar-el-modo-archivelog/
Si tienes dudas sobre su administración o relacionada con Oracle o SQL Server, ¡¡no dudes en contactar con nosotros que estaremos encantados de ayudar!!
Si no quieres perderte trucos como este y estar al día de este mundo, suscríbete a nuestra newsletter. Te mantendremos informados con un solo email al mes.