El Fast Recovery Area (FRA) en Oracle 19c es una funcionalidad importante que desempeña un papel crucial en la recuperación y gestión de datos de una base de datos Oracle (valga la redundancia).

Básicamente, el Fast Recovery Area (FRA) es:

  1. Área de almacenamiento:
    • Es una ubicación de almacenamiento gestionada por Oracle, donde se guardan archivos de recuperación importantes, como copias de seguridad de datos, archivos de registro de recuperación y otros archivos relacionados con la recuperación.
  2. Gestión automática:
    • Oracle 19c administra automáticamente el contenido del FRA, eliminando archivos antiguos y poco utilizados para liberar espacio cuando es necesario.
    • Esto ayuda a mantener el FRA en un tamaño adecuado y previene problemas de almacenamiento.
  3. Mejora de la recuperación:
    • Al tener todos los archivos de recuperación en un solo lugar, el FRA agiliza y simplifica el proceso de recuperación de la base de datos en caso de fallos o desastres.
    • Esto reduce el tiempo de inactividad y mejora la disponibilidad de la base de datos.
  4. Requisitos de copia de seguridad:
    • El FRA se considera un requisito para utilizar características importantes como RMAN (Oracle Recovery Manager) y la recuperación de base de datos.
    • Muchas de las operaciones de copia de seguridad y recuperación dependen de la existencia y configuración adecuada del FRA.

Funcionamiento

El funcionamiento del Fast Recovery Area (FRA) en Oracle 19c se puede resumir de la siguiente manera:

  1. Configuración del FRA:
    • El DBA define la ubicación y el tamaño del FRA en la base de datos mediante parámetros de inicialización como DB_RECOVERY_FILE_DEST y DB_RECOVERY_FILE_DEST_SIZE.
    • Estos parámetros se pueden modificar según las necesidades de la base de datos.
  2. Almacenamiento de archivos:
    • Oracle automáticamente copia y almacena en el FRA diversos archivos relacionados con la recuperación, como:
      • Copias de seguridad de la base de datos (full y incrementales)
      • Archivos de registro de recuperación (redo logs)
      • Copias de control
      • Archivos de copia de seguridad de registros de control
      • Otros archivos de recuperación
  3. Gestión automática del espacio:
    • Oracle supervisa el uso de espacio en el FRA y elimina automáticamente los archivos obsoletos o poco utilizados para liberar espacio cuando es necesario.
    • Esto se realiza según reglas de retención configuradas y políticas de gestión del espacio.
  4. Recuperación y restauración:
    • En caso de fallo o necesidad de recuperación, Oracle usa los archivos almacenados en el FRA para realizar las siguientes operaciones:
      • Restaurar copias de seguridad de la base de datos
      • Aplicar los archivos de registro de recuperación (redo logs) para recuperar los cambios más recientes
      • Recuperar la base de datos a un punto específico en el tiempo
  5. Integración con herramientas de copia de seguridad:
    • Herramientas como RMAN (Oracle Recovery Manager) utilizan el FRA como ubicación predeterminada para almacenar los archivos de copia de seguridad y recuperación.
    • Esto simplifica la gestión de copias de seguridad y recuperación de la base de datos.

Configurar el Fast Recovery Area (FRA) en Oracle 19c

Antes de Crear la BD

  1. Identificar un área de almacenamiento adecuada:
    • Determinar una ubicación en el sistema de archivos donde se almacenará el FRA.
    • Asegurarse de que haya espacio suficiente disponible.
  2. Establecer los parámetros de inicialización:
    • Especifica la ubicación del FRA.
      • DB_RECOVERY_FILE_DEST = ‘/ruta/al/fra’
    • Indica el tamaño máximo que puede ocupar el FRA.
      • DB_RECOVERY_FILE_DEST_SIZE = tamaño_en_bytes
  3. Crear la base de datos:
    • Cuando creas la base de datos, Oracle utilizará la configuración del FRA establecida en los parámetros de inicialización.

Después de crear la base de datos (si no se configuraste la FRA):

  1. Detener la base de datos:
    • Detén la instancia de la base de datos de forma segura.
  2. Modificar los parámetros de inicialización:
    • Edita el archivo de parámetros de inicialización (p.ej. init.ora o spfile.ora) y agrega/modifica los siguientes parámetros:
      • Especifica la ubicación del FRA.
        • DB_RECOVERY_FILE_DEST = ‘/ruta/al/fra’
      • Indica el tamaño máximo que puede ocupar el FRA.
        • DB_RECOVERY_FILE_DEST_SIZE = tamaño_en_bytes
  3. Reiniciar la base de datos:
    • Reinicia la instancia de la base de datos para que los nuevos parámetros surtan efecto.
  4. Verificar la configuración del FRA:
    • Ejecuta la siguiente consulta SQL para comprobar que el FRA está configurado correctamente:
SELECT name, value, description
FROM v$parameter
WHERE name LIKE 'db_recovery%';
  • Verifica que los valores de los parámetros coincidan con la configuración realizada.

5. Inicializar el FRA:

  • Una vez que la base de datos se reinicia, Oracle inicializará el FRA y comenzará a almacenar los archivos de recuperación en la ubicación especificada.

Monitoreo

Ejemplo 1: Consulta básica del estado del FRA

Esta consulta muestra los parámetros de inicialización relacionados con el FRA, como la ubicación y el tamaño máximo.

SELECT  
  NAME,  
  VALUE,  
  DESCRIPTION  
FROM  
  V$PARAMETER  
WHERE  
  NAME LIKE 'DB_RECOVERY%';

Ejemplo 2: Obtener el uso actual del FRA

Este ejemplo muestra el espacio utilizado por diferentes tipos de archivos en el FRA, como registros de archivo, copias de seguridad, archivos de control y copias de datos.

SELECT  
  TRUNC(SUM(DECODE(file_type, 'ARCHIVED LOG', bytes, 0))/1024/1024/1024, 2) AS archive_logs_gb,  
  TRUNC(SUM(DECODE(file_type, 'BACKUP PIECE', bytes, 0))/1024/1024/1024, 2) AS backup_pieces_gb,  
  TRUNC(SUM(DECODE(file_type, 'CONTROL FILE', bytes, 0))/1024/1024/1024, 2) AS control_files_gb,  
  TRUNC(SUM(DECODE(file_type, 'DATAFILE COPY', bytes, 0))/1024/1024/1024, 2) AS datafile_copies_gb,  
  TRUNC(SUM(BYTES)/1024/1024/1024, 2) AS total_used_gb  
FROM  
  V$RECOVERY_FILE_DEST;

Ejemplo 3: Identificar los archivos más antiguos en el FRA

Esta consulta enumera los 10 archivos más antiguos almacenados en el FRA, lo que puede ayudarte a identificar archivos que podrían ser candidatos para su eliminación.

SELECT  
  file_name,  
  file_type,  
  completion_time,  
  ROUND(file_size/1024/1024, 2) AS file_size_mb  
FROM  
  V$RECOVERY_FILE_DEST  
ORDER BY  
  completion_time ASC  
FETCH FIRST 10 ROWS ONLY;

Ejemplo 4: Monitorear el espacio disponible en el FRA

Este ejemplo de código PL/SQL calcula y muestra el tamaño total del FRA, el espacio utilizado y el porcentaje de utilización. Puedes programar este script para que se ejecute periódicamente y envíe alertas si se alcanza un umbral predefinido.

DECLARE  
  v_total_mb NUMBER;  
  v_used_mb NUMBER;  
  v_pct_full NUMBER;  
BEGIN  
  SELECT  
    ROUND(SUM(BYTES)/1024/1024, 2) AS total_mb,  
    ROUND(SUM(SPACE_LIMIT)/1024/1024, 2) AS used_mb,  
    ROUND(100 * SUM(BYTES) / SUM(SPACE_LIMIT), 2) AS pct_full  
  INTO  
    v_total_mb, v_used_mb, v_pct_full  
  FROM  
    V$RECOVERY_FILE_DEST;  

  DBMS_OUTPUT.PUT_LINE('Total FRA size: ' || v_total_mb || ' MB');  
  DBMS_OUTPUT.PUT_LINE('Used FRA space: ' || v_used_mb || ' MB');  
  DBMS_OUTPUT.PUT_LINE('FRA utilization: ' || v_pct_full || '%');  
END;  
/

Vistas dinámicas:

  • Utiliza las siguientes vistas dinámicas para obtener información detallada sobre el FRA:
    • v$recovery_file_dest: Muestra información sobre el espacio utilizado y disponible en el FRA.
    • v$backup_device: Proporciona detalles sobre los dispositivos de copia de seguridad configurados, incluidos los del FRA.
    • v$backup_async_io: Muestra información sobre las operaciones de copia de seguridad y restauración en el FRA.

Ejemplo 5: Vistas dinámicas

Consulta la vista V$RECOVERY_FILE_DEST para obtener información sobre el espacio utilizado y disponible en el FRA:

Esta consulta muestra el espacio utilizado (en GB) por cada tipo de archivo en el FRA, el espacio total disponible (en GB) y el porcentaje de utilización.

SELECT  
  FILE_TYPE,  
  ROUND(SUM(BYTES)/1024/1024/1024, 2) AS SPACE_USED_GB,  
  ROUND(SUM(SPACE_LIMIT)/1024/1024/1024, 2) AS SPACE_LIMIT_GB,  
  ROUND(100 * SUM(BYTES) / SUM(SPACE_LIMIT), 2) AS PCT_USED  
FROM  
  V$RECOVERY_FILE_DEST  
GROUP BY  
  FILE_TYPE;

Consulta la vista V$BACKUP_DEVICE para obtener detalles sobre los dispositivos de copia de seguridad configurados, incluidos los del FRA:

Esta consulta enumera los dispositivos de copia de seguridad configurados, tanto en cinta (SBT_TAPE) como en disco (DISK), lo que incluye aquellos utilizados para el FRA.

SELECT  
  DEVICE_TYPE,  
  MEDIA_DEVICE,  
  BACKUP_TYPE,  
  BLOCK_SIZE,  
  BUFFER_SIZE  
FROM  
  V$BACKUP_DEVICE  
WHERE  
  DEVICE_TYPE = 'SBT_TAPE' OR DEVICE_TYPE = 'DISK';

Consulta la vista V$BACKUP_ASYNC_IO para obtener información sobre las operaciones de copia de seguridad y restauración en el FRA:

Esta consulta muestra detalles sobre las operaciones de copia de seguridad y restauración realizadas en el FRA, incluyendo el nombre del archivo, el tipo de dispositivo, la función (copia de seguridad o restauración), el evento de espera y el tiempo transcurrido (en segundos).

SELECT  
  FILE_NAME,  
  DEVICE_TYPE,  
  FUNCTION,  
  WAIT_EVENT,  
  ROUND(ELAPSED_TIME/1000000, 2) AS ELAPSED_SECONDS  
FROM  
  V$BACKUP_ASYNC_IO  
WHERE  
  DEVICE_TYPE = 'DISK' AND FUNCTION IN ('BACKUP', 'RESTORE')  
ORDER BY  
  ELAPSED_TIME DESC;

Herramientas de monitoreo:

  • Utiliza herramientas de administración y monitoreo de Oracle, como Oracle Enterprise Manager Cloud Control, para obtener una vista general del FRA y sus estadísticas.
  • Estas herramientas ofrecen paneles y reportes para supervisar el uso del FRA, las operaciones de copia de seguridad y restauración, y las alertas relacionadas.

Scripts de monitoreo:

  • Puedes crear scripts personalizados, como scripts de shell o PL/SQL, que consulten las vistas dinámicas y generen informes sobre el estado y el uso del FRA.
  • Estos scripts se pueden programar para ejecutarse periódicamente y enviar alertas cuando se alcancen umbrales predefinidos.

Ejemplo 6 : Shell de Monitoreo de FRA

Este script de shell realiza las siguientes tareas:

  1. Configura las variables de entorno necesarias, como la ubicación de ORACLE_HOME y el SID de la base de datos.
  2. Define una función check_fra_usage que consulta la vista V$RECOVERY_FILE_DEST para obtener el porcentaje de uso del FRA y muestra una alerta si supera el umbral establecido.
  3. Crea una función check_fra_space que consulta la vista V$RECOVERY_FILE_DEST para obtener el espacio utilizado y el espacio total del FRA, y muestra esta información.
  4. Ejecuta las funciones de monitoreo y muestra los resultados.

Para usar este script, guárdalo en un archivo (por ejemplo, monitor_fra.sh) y asegúrate de tener los permisos de ejecución:

chmod +x monitor_fra.sh

Luego, puedes ejecutarlo de la siguiente manera:

./monitor_fra.sh
#!/bin/bash  

# Configuración  
ORACLE_HOME="/app/oracle/product/19.0.0/dbhome_1"  
ORACLE_SID="orcl"  
FRA_USAGE_THRESHOLD=80 # Porcentaje de uso del FRA que activará la alerta  

# Funciones  
function check_fra_usage {  
  usage=$(sqlplus -s / as sysdba <<EOF  
    SET HEAD OFF  
    SET FEEDBACK OFF  
    SELECT  
      ROUND(100 * SUM(BYTES) / SUM(SPACE_LIMIT), 2) AS pct_full  
    FROM  
      V\$RECOVERY_FILE_DEST;  
EOF  
  )  
  echo "Uso actual del FRA: $usage%"  

  if [ $(echo "$usage > $FRA_USAGE_THRESHOLD" | bc -l) -eq 1 ]; then  
    echo "¡Alerta! Uso del FRA superior al $FRA_USAGE_THRESHOLD%"  
  fi  
}  

function check_fra_space {  
  space_used=$(sqlplus -s / as sysdba <<EOF  
    SET HEAD OFF  
    SET FEEDBACK OFF  
    SELECT  
      ROUND(SUM(BYTES)/1024/1024, 2) AS used_mb  
    FROM  
      V\$RECOVERY_FILE_DEST;  
EOF  
  )  

  space_total=$(sqlplus -s / as sysdba <<EOF  
    SET HEAD OFF  
    SET FEEDBACK OFF  
    SELECT  
      ROUND(SUM(SPACE_LIMIT)/1024/1024, 2) AS total_mb  
    FROM  
      V\$RECOVERY_FILE_DEST;  
EOF  
  )  

  echo "Espacio utilizado en el FRA: $space_used MB"  
  echo "Espacio total del FRA: $space_total MB"  
}  

# Ejecución  
echo "Monitoreando el Fast Recovery Area (FRA) de la base de datos $ORACLE_SID..."  

check_fra_usage  
check_fra_space  

echo "Monitoreo completado."

Este script de shell proporciona una forma sencilla de monitorear el uso y el espacio del FRA de forma regular. Puedes adaptarlo y mejorarlo según tus necesidades específicas, como agregar funcionalidades adicionales, enviar alertas por correo electrónico o integrar con herramientas de monitoreo más avanzadas.

Deja un comentario

Tendencias