Error SAP HANA SQL code 131: Causas y Solución

Destacados del análisis del error SQL code 131 en SAP HANA:

  • Qué es – El error SQL code 131 en SAP HANA indica que una transacción ha sido revertida por un error interno causado por falta de espacio en disco o fallo en la asignación de memoria.
  • Causa principal – El sistema de archivos donde residen los data volumes o log volumes de HANA ha alcanzado su capacidad máxima, impidiendo que la base de datos continúe escribiendo.
  • Impacto – Las transacciones se cancelan de forma abrupta, los procesos ABAP pueden quedar bloqueados y el sistema SAP puede perder conectividad con la base de datos.
  • Solución – Liberar espacio en disco, redimensionar volúmenes o ampliar el almacenamiento, seguido de una reactivación ordenada de los servicios de HANA.

Introducción

El error SQL code 131 con el mensaje «transaction rolled back by an internal error: Allocation failed / disk full» es uno de los problemas de infraestructura más críticos que puede experimentar una base de datos SAP HANA. Cuando aparece, la base de datos se ve forzada a cancelar transacciones activas porque el subsistema de almacenamiento no puede completar las operaciones de escritura solicitadas. En este artículo analizamos en profundidad las causas, síntomas y, sobre todo, la solución paso a paso para resolver este error y prevenir su reaparición.

¿Qué es SQL code 131 en SAP HANA?

El código de error SQL 131 en SAP HANA corresponde a un error interno del motor de base de datos que fuerza la reversión (rollback) de la transacción en curso. El mensaje asociado «Allocation failed / disk full» señala que el problema se origina en la capa de almacenamiento: HANA intenta asignar espacio en disco para escribir datos o registros de log y el sistema operativo responde con un error de espacio insuficiente.

Este error no es un problema lógico de la base de datos (como un constraint violation o un deadlock), sino un problema físico de capacidad de almacenamiento. SAP HANA opera con escrituras constantes en sus data volumes (archivos *.dat) y log volumes (archivos *.log); si cualquiera de estos sistemas de archivos se llena, HANA no puede garantizar la integridad de las transacciones y las revierte inmediatamente.

Síntomas típicos

  • Aparición del error SQL code 131 en transacciones ABAP como ST22 (análisis de short dumps), SM21 (análisis de logs del sistema) o directamente en la transacción DBACOCKPIT.
  • Mensajes en el indexserver_alert_*.log de HANA indicando «Allocation failed for row store table …» o «cannot extend file».
  • El sistema SAP muestra errores de conexión a la base de datos tipo DBSL_ERROR_CONNECT_FAILED.
  • Los procesos de backup (BACKUP FULL, BACKUP INCREMENTAL) fallan con errores de escritura.
  • Alertas en SAP HANA Studio / HANA Cockpit / HANA Cloud Platform por Disk Usage > 95% en los volúmenes de datos o logs.
  • Rendimiento degradado del sistema antes de que el error se manifieste por completo.

Causas principales

  • Data volume lleno: El sistema de archivos que contiene los archivos *.dat de HANA ha alcanzado su capacidad máxima. SAP HANA necesita espacio libre para realizar operaciones de savepoint y fusión de delta.
  • Log volume lleno: El sistema de archivos de los *.log está al límite. HANA no puede escribir nuevos registros de redo log, lo que fuerza el rollback inmediato de las transacciones en curso.
  • Backup sin gestión de retención: Acumulación de backups completos o incrementales en la misma unidad donde residen los volúmenes de HANA, consumiendo el espacio disponible.
  • Archivos de trace/dump sin rotación: Los archivos de trace (*.trc) y dump en los directorios /usr/sap/<SID>/HDB<xx>/trace pueden acumular gigabytes si no se configuran rotaciones adecuadas.
  • Crecimiento inesperado de tablas: Tablas column store o row store que han crecido por encima de lo previsto sin una planificación de capacidad correspondiente.
  • Configuración incorrecta de max_log_size: Un valor demasiado alto en el parámetro log_segment_size_mb o max_log_size puede provocar que los segmentos de log ocupen más espacio del disponible.

Solución paso a paso

A continuación se detalla el procedimiento para resolver el error SQL code 131 por disco lleno en SAP HANA:

  1. Identificar el volumen problemático
    Conéctese al servidor HANA vía SSH y verifique el uso de disco con:
    df -h
    Identifique los sistemas de archivos montados en /hana/data/<SID> y /hana/log/<SID>. Anote cuál está al 100% o cerca de estarlo.
  2. Verificar el estado de HANA
    Ejecute como usuario <sid>adm:
    HDBSettings.sh systemReplicationStatus.py
    HDBSettings.sh landscapeHostConfiguration.py
    Confirme qué servicios están operativos y cuáles reportan errores de persistencia.
  3. Liberar espacio de forma inmediata
    Dependiendo del volumen lleno, puede:
    – Mover o eliminar backups antiguos: /usr/sap/<SID>/HDB<xx>/backup
    – Rotar traces: hdbsrvutil -R <tenant>
    – Eliminar archivos .trc antiguos en $DIR_INSTANCE/trace
    – Si el log volume está lleno y HANA no puede continuar, puede ser necesario realizar un backup de logs para liberar segmentos de log: hdbsql -U SYSTEM "BACKUP LOG <tenant> FOR <timestamp>"
  4. Redimensionar o ampliar almacenamiento
    Si la liberación de archivos no es suficiente, deberá ampliar el almacenamiento:
    – En VM: expanda el disco virtual desde el hipervisor, luego extienda la partición y el sistema de archivos con lvextend + resize2fs (ext4) o xfs_growfs (XFS).
    – En hardware físico: agregue discos y extienda los LVM correspondientes.
    – En cloud (AWS/Azure/GCP): modifique el tamaño del EBS/disco gestionado y extienda la partición en el SO.
  5. Reiniciar servicios de HANA (si es necesario)
    Si la base de datos quedó en estado inconsistente, reinicie HANA de forma controlada:
    HDB stop
    HDB start
    Monitoree los logs de arranque con tail -f $DIR_INSTANCE/trace/indexserver_alert_*.log.
  6. Verificar la resolución
    Conéctese al tenant con hdbsql y ejecute una transacción de prueba:
    SELECT * FROM DUMMY;
    Si la consulta se ejecuta sin errores, el sistema está operativo.
  7. Configurar monitorización
    Implemente alertas de uso de disco en los volúmenes de HANA. Configure umbrales:
    – Warning: 80% de uso
    – Critical: 90% de uso
    Utilice SAP HANA Cockpit, SAP Focused Run, o herramientas del SO como cron + df + scripts de alerta.

Notas SAP relacionadas

  • SAP Note #1943073 – «HANA DB: Disk full situation analysis» – Guía oficial de diagnóstico y resolución de disco lleno en SAP HANA.
  • SAP Note #1824819 – «FAQ: SAP HANA Database Disk Full» – Preguntas frecuentes sobre situaciones de disco lleno.
  • SAP Note #2000003 – «FAQ: SAP HANA Troubleshooting» – Guía general de resolución de problemas de HANA.
  • SAP Note #1999993 – «How to solve out of disk space in SAP HANA» – Procedimientos específicos para liberar espacio.
  • SAP Note #1730936 – «SAP HANA Database: Error ‘Allocation failed'» – Documentación específica sobre el error de asignación fallida.
  • SAP Note #2186744 – «SAP HANA DB: Monitoring Disk Space» – Configuración de monitorización de espacio en disco.

Conclusión

El error SQL code 131 con mensaje «Allocation failed / disk full» en SAP HANA es una señal de alarma que no debe ignorarse. Aunque la solución inmediata pasa por liberar espacio en disco, la clave está en establecer una monitorización proactiva del almacenamiento y planificar el crecimiento de la base de datos. Un sistema HANA correctamente dimensionado y monitorizado rara vez llega a esta situación crítica. Recomendamos revisar periódicamente las Notas SAP citadas y mantener un plan de capacidad actualizado para los volúmenes de datos y logs.

¿Te ayudamos?

Contamos con una base de consultores certificados por SAP que brindan un excelente servicio de Administración SAP así como el análisis de vulnerabilidades SAP y remediación de las mismas.

Puedes contactarnos a través del formulario de contacto o a través de nuestra dirección de correo electrónico contacto@aurit.es

En AURIT estaremos encantados de poder ayudarte.

[pretty-locker id="5911"][/pretty-locker]