DBAtlas · Atlas de operaciones de bases de datos

Corrupción de datos

Síntoma

'ORA-01578', 'page corruption', 'checksum mismatch', 'MISCONF', errores de consistencia de I/O durante las lecturas.

1. Mantenga la calma y detenga la propagación

Una intervención apresurada empeora las cosas. Primero determine el alcance y, si es posible, detenga las escrituras en el objeto afectado. Si está relacionado con el hardware (disco/controladora), revise también los logs del SO/hardware: arreglar la BD no arregla el disco.

2. Determine el alcance: cuánto está corrupto

¿Es un solo bloque/página/objeto o está extendido? Ejecute una verificación de integridad.

Oracle

RMAN> VALIDATE DATABASE;  -- or: SELECT * FROM v$database_block_corruption;

PostgreSQL

-- With data_checksums enabled it shows up in the logs; check indexes/heap with pg_amcheck:
-- pg_amcheck --heapallindexed -d mydb

MySQL

CHECK TABLE customer;  -- for InnoDB, innodb_force_recovery is the last resort

SQL Server

DBCC CHECKDB ('MyDB') WITH NO_INFOMSGS, ALL_ERRORMSGS;

Redis

redis-check-rdb dump.rdb
# AOF (Redis 7+ multi-part: under appendonlydir/, pass the manifest file):
redis-check-aof appendonlydir/appendonly.aof.manifest
# --fix TRUNCATES everything after the corrupted point (writes in that part are lost); back up the directory first:
# redis-check-aof --fix appendonlydir/appendonly.aof.manifest

3. Prioridad: recuperación desde backup

Ante una corrupción, el camino más seguro es restaurar desde un backup bueno. Si se admite la recuperación a nivel de bloque/página, recupere solo la parte corrupta (Oracle RMAN BLOCKRECOVER, MSSQL page restore). Las herramientas de reparación (DBCC REPAIR_ALLOW_DATA_LOSS, innodb_force_recovery) CAUSAN PÉRDIDA DE DATOS: son el último recurso.

4. Verifique la integridad

Tras la recuperación, vuelva a ejecutar la comprobación (DBCC CHECKDB / RMAN VALIDATE / CHECK TABLE) y confirme que el resultado es limpio. Verifique también la consistencia de los datos en el lado de la aplicación (conteo de filas, totales críticos).

5. Causa raíz: normalmente el hardware

La corrupción suele deberse a fallos de disco, memoria o controladora. Pruebe/sustituya el hardware, habilite checksums (data_checksums, PAGE_VERIFY CHECKSUM) y refuerce la rutina de backup + verificación. Programe DBCC CHECKDB / RMAN VALIDATE de forma periódica.

Abrir en DBAtlas →