Veri bozulması (corruption)
Belirti
'ORA-01578', 'page corruption', 'checksum mismatch', 'MISCONF', okuma sırasında I/O tutarlılık hataları.
1. Sakin ol ve yayılmayı durdur
Panikle yapılan müdahale durumu kötüleştirir. Önce kapsamı belirle, mümkünse etkilenen nesneye yazmayı durdur. Donanım (disk/denetleyici) kaynaklıysa OS/donanım loglarına da bak — DB'yi düzeltmek diski düzeltmez.
2. Kapsamı tespit et: ne kadar bozuk
Tek bir blok/sayfa/nesne mi, yoksa yaygın mı? Bütünlük kontrolü çalıştır.
Oracle
RMAN> VALIDATE DATABASE; -- ya da: SELECT * FROM v$database_block_corruption;PostgreSQL
-- data_checksums açıksa loglarda görünür; pg_amcheck ile indeks/heap kontrolü:
-- pg_amcheck --heapallindexed -d veritabaniMySQL
CHECK TABLE musteri; -- InnoDB için innodb_force_recovery son çareSQL Server
DBCC CHECKDB ('MyDB') WITH NO_INFOMSGS, ALL_ERRORMSGS;Redis
redis-check-rdb dump.rdb
# AOF (Redis 7+ multi-part: appendonlydir/ altında, manifest dosyası verilir):
redis-check-aof appendonlydir/appendonly.aof.manifest
# --fix bozuk noktadan sonrasını KESER (o kısımdaki yazmalar kaybolur); önce dizinin yedeğini alın:
# redis-check-aof --fix appendonlydir/appendonly.aof.manifest3. Öncelik: yedekten kurtarma
Bozulmada en güvenli yol sağlam yedekten geri dönüştür. Blok/sayfa düzeyi kurtarma destekleniyorsa sadece bozuk kısmı kurtar (Oracle RMAN BLOCKRECOVER, MSSQL page restore). Repair araçları (DBCC REPAIR_ALLOW_DATA_LOSS, innodb_force_recovery) VERİ KAYBETTİRİR — son çaredir.
4. Bütünlüğü doğrula
Kurtarma sonrası kontrolü tekrar çalıştır (DBCC CHECKDB / RMAN VALIDATE / CHECK TABLE) ve temiz çıktığını gör. Uygulama tarafında da veri tutarlılığını (satır sayıları, kritik toplamlar) doğrula.
5. Kök neden: genelde donanım
Corruption çoğu zaman disk/bellek/denetleyici arızasından gelir. Donanımı test et/değiştir, checksum'ları aç (data_checksums, PAGE_VERIFY CHECKSUM), yedek + doğrulama rutinini sıkılaştır. Düzenli DBCC CHECKDB / RMAN VALIDATE planla.