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 mydbMySQL
CHECK TABLE customer; -- for InnoDB, innodb_force_recovery is the last resortSQL 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.manifest3. 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.