DBAtlas · Veritabanı operasyon atlası

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 veritabani

MySQL

CHECK TABLE musteri;  -- InnoDB için innodb_force_recovery son çare

SQL 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.manifest

3. Ö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.

DBAtlas'ta aç →