Corrupção de dados
Sintoma
'ORA-01578', 'page corruption', 'checksum mismatch', 'MISCONF', erros de consistência de I/O durante leituras.
1. Mantenha a calma e contenha o alastramento
Uma intervenção em pânico piora as coisas. Primeiro determine o escopo e, se possível, pare as escritas no objeto afetado. Se for algo de hardware (disco/controladora), verifique também os logs do SO/hardware — consertar o banco não conserta o disco.
2. Determine o escopo: quanto está corrompido
É um único bloco/página/objeto ou algo generalizado? Execute uma verificação de integridade.
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. Prioridade: recuperação a partir de backup
Com corrupção, o caminho mais seguro é restaurar a partir de um backup bom. Se a recuperação no nível de bloco/página for suportada, recupere apenas a parte corrompida (Oracle RMAN BLOCKRECOVER, MSSQL page restore). Ferramentas de reparo (DBCC REPAIR_ALLOW_DATA_LOSS, innodb_force_recovery) CAUSAM PERDA DE DADOS — são o último recurso.
4. Verifique a integridade
Após a recuperação, execute a verificação de novo (DBCC CHECKDB / RMAN VALIDATE / CHECK TABLE) e confirme que volta limpa. Verifique também a consistência dos dados no lado da aplicação (contagens de linhas, totais críticos).
5. Causa raiz: geralmente hardware
A corrupção geralmente vem de falha de disco/memória/controladora. Teste/substitua o hardware, ative checksums (data_checksums, PAGE_VERIFY CHECKSUM) e reforce a rotina de backup + verificação. Agende DBCC CHECKDB / RMAN VALIDATE regularmente.