Importancia del Housekeeping
En SAP HANA, el mantenimiento proactivo es vital para evitar el llenado de los sistemas de archivos de Log y Trace, lo cual podría provocar la parada inmediata de la base de datos. El housekeeping debe cubrir el catálogo de backup, los archivos físicos de backup y las trazas del sistema.
Automatización con Bash y HDBSQL
Utilizando la herramienta HDBSQL, podemos automatizar la limpieza del catálogo de backups y la eliminación de logs antiguos que ya no son necesarios para la recuperación.
Script: hana_housekeeping.sh
#!/bin/bash
# Script de Mantenimiento Proactivo para SAP HANA
# Limpieza de Catálogo de Backups y Logs
KEY="ADMIN_KEY"
RETENTION_DAYS=30
# 1. Obtener el ID del backup más antiguo dentro de la retención
BACKUP_ID_LIMIT=$(hdbsql -U $KEY -x "SELECT TOP 1 BACKUP_ID FROM M_BACKUP_CATALOG WHERE SYS_START_TIME < ADD_DAYS(CURRENT_TIMESTAMP, -$RETENTION_DAYS) ORDER BY SYS_START_TIME DESC")
if [ ! -z "$BACKUP_ID_LIMIT" ]; then
echo "Iniciando limpieza de catálogo anterior al Backup ID: $BACKUP_ID_LIMIT"
# 2. Borrar del catálogo y eliminar archivos físicos (WITH FILE)
hdbsql -U $KEY "BACKUP CATALOG DELETE ALL BEFORE $BACKUP_ID_LIMIT WITH FILE"
else
echo "No se encontraron backups para limpiar con más de $RETENTION_DAYS días."
fi
# 3. Limpieza de Trace Files antiguos (Linux)
find /usr/sap/*/HDB*/trace -name "*.trc" -mtime +$RETENTION_DAYS -delete
echo "Housekeeping completado."
Tareas de Mantenimiento Clave
- M_BACKUP_CATALOG: Monitorizar el tamaño del catálogo. Un catálogo excesivamente grande ralentiza las consultas de administración.
- Trace Files: Configurar el parámetro
maxfilesizeenglobal.inipara evitar archivos de traza gigantescos. - Estadísticas: Ejecutar
UPDATE STATISTICSen tablas grandes si hay degradación de rendimiento.
Seguridad y Prevención
Atención: Antes de ejecutar una limpieza masiva con
WITH FILE, asegúrate
de que tienes copias de seguridad externas (Tape/Cloud) que cumplan con la política de retención legal
de tu empresa.
Usa siempre el hdbuserstore para que el script de mantenimiento no exponga credenciales en el sistema operativo.