Datenkorruption
Symptom
'ORA-01578', 'page corruption', 'checksum mismatch', 'MISCONF', I/O-Konsistenzfehler beim Lesen.
1. Ruhe bewahren und die Ausbreitung stoppen
Panische Eingriffe verschlimmern die Lage. Bestimme zuerst den Umfang und stoppe nach Möglichkeit Schreibvorgänge auf das betroffene Objekt. Ist es hardwarebedingt (Platte/Controller), prüfe auch die OS-/Hardware-Logs – eine Reparatur der DB repariert nicht die Platte.
2. Umfang bestimmen: wie viel ist beschädigt
Betrifft es einen einzelnen Block, eine Seite oder ein Objekt, oder ist es weit verbreitet? Führe eine Integritätsprüfung aus.
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. Priorität: Wiederherstellung aus dem Backup
Bei Korruption ist die Wiederherstellung aus einem guten Backup der sicherste Weg. Wird Recovery auf Block-/Seitenebene unterstützt, stelle nur den beschädigten Teil wieder her (Oracle RMAN BLOCKRECOVER, MSSQL Page Restore). Reparaturwerkzeuge (DBCC REPAIR_ALLOW_DATA_LOSS, innodb_force_recovery) VERURSACHEN DATENVERLUST – sie sind das letzte Mittel.
4. Integrität prüfen
Führe nach der Wiederherstellung die Prüfung erneut aus (DBCC CHECKDB / RMAN VALIDATE / CHECK TABLE) und bestätige, dass sie ohne Befund zurückkommt. Prüfe außerdem die Datenkonsistenz auf Anwendungsseite (Zeilenanzahlen, kritische Summen).
5. Ursache: meist Hardware
Korruption entsteht meist durch Ausfälle von Platte, Speicher oder Controller. Teste bzw. ersetze die Hardware, aktiviere Checksummen (data_checksums, PAGE_VERIFY CHECKSUM) und verschärfe die Routine aus Backup und Verifizierung. Plane regelmäßige DBCC CHECKDB / RMAN VALIDATE.