26 Aralık 2012 Çarşamba

                           Data Block Corruption
Block corruption verinin data block larına yazılması sırasında bir hatadan dolayı yazma işleminin başarısız olmasıdır..Data corruption meydana geldiğinde database çalışmasına devam eder ve corruption olan blok dışındaki data ya ulaşılabilinir.Corruption olan bloktaki data ya ulaşılmak istendiğinde aşağıdaki gibi bir hata alınacaktır.
ORA-01578:ORACLE data block corrupted (file # string, block # string)

1)Physical Block Corruption(Media Corrupt):Bu corruption meydana geldiğinde database data bloklarında bulunan data yı okuyamadığı anlamına gelir..Datablock header da bulunan checksum invalid ve corruption olan data blocğunun tamamı null değer içerir.Physical corruption denetimi default olarak enabledir.Rman de validate yaparken nochecksum option ile physical corruption check disable edilir.Physical corruption alert.log dosyasında belirtilir.Bu tür corruptionlarda block media recovery gerçekleştirilir.Bu yöntem ile tüm datafile recover edilmesi yerine sadece corrupt olmuş blocks recover edilir.Bu sırada datafile geri kalan blocklarına erişim sağlanabilinir.Datafile içerisinde bulunan block da media corruption meydana geldiğinde;
Datafile  Media Recovery kullanılırsa datafile offline moda alınacak ve en son alınan backup tan restore edilecek ve backuptan sonra oluşan redo log uygulanacaktır.Bu sırada datafile tamamına erişim sağlanamayacaktır.
Block Media Recover kullanıldığında sadece corrupt olmuş data block recover edilecektir ve datafile geri kalan kısmına erişim sağlanacaktır.


NOT:Database corruption tespit ettiğinde block corrupt olarak işaretler ve bunun bilgisini diske yazar.Block için media recovery işlemi gerçekleştirildiğinde bloğun kopyası için ilk olarak flashback logs bakılır.Daha sonra rman full backup veya level 0 backup bakılır.Block kopyası bulunduktan sonra block restore edilir ve redo logs apply edilerek recover işlemi gerçekleştirilir.Block media recovery işleminde sadece redo logs kullanılır. Level 1 incremental backup kullanılmaz.Bu recovery işlemini gerçekleştirebilmek için corrupt olan bloğun içinde bulunduğu datafile sahip olan bir Rman yedeğine sahip olmalıyız.
Rman>backup validate  database;-->database varolan pyhsical corruption tespit edilir.


2)Logical  Block Corruption(Soft Corrupt): Bu corruption meydana geldiğinde block için de bulunan data inconsistent durumdadır.Data block ları doğru checksum sahip, header içerisinde  herhangi bir hata yok fakat block içinde bulunan data inconsistent durumdadır.Block media recovery ile logical block corruption düzeltilemez.Logical corruption denetimi default olarak disable dir.check logical seçeneği ile logical corruption tespit edilebilinir.Logical corruption dbverify ile öğrenilebilinir.
Rman>backup validate check logical database;-->datafile da varolan physical ve logical  corruption listeler

Block Corruption Nasıl Tespit Edebiliriz?

1)Dbverify Utility:Bunun ile physical data yapısı check edilir.Bu tool ile offline ve online database de check işlemi gerçekleştirilir.Restore işleminden önce block recovery gerçekleştirilecek datafile check edilir.
$ORACLE_HOME/bin/dbv

2)Rman: Rman ile hem media corruption hem de logical corruption check edebiliriz.Rman logical corruption bulursa alert.log dosyasına ve session trace file dosyasına yazar.Bu check işlemi default olarak disabledır. Check logical option kullanılarak bu işlem gerçekleştirilir.Backup komutunda check edilebilecek toplam  physical ve logical  corruption sayısını belirleyecek maxcorrupt parametresini set edebiliriz. Rman corruption işlemi sırasında bu sayıyı geçerse işlem terminate edilir Ve file geri kalan kısmı corruption için check edilmez.İşlemin başarılı olabilmesi için bu parameterenin değeri corruption sayısından fazla olmalıdır. Ama corruption check işlemi sorunsuz bir şekilde tamamlanırsa block corruption bilgiler v$database_block_corruption view ne  yazılır.

Block Checking Parameters:Block corruption check işlemi için kullanılan 2 tane initialization parametresi vardır.
db_block_checksum:Data bloğunu  disk yazmadan önce block için gereken checksum ı hesaplar.(%1-2 performans overhead)
db_block_checking:Her DML işleminden sonra block içindeki data consistency kontrol eder.(%1-10 performans overhead)

Rman and DBverify
1)Dbv boş blocks check ettiğinden dolayı rman göre daha uzun sürer.
2)Rman corruption bilgisini control file içerisinde tutar(v$database_block_corruption). DBV bu bilgiyi tutmaz.
3)DBverify database connection ihtiyaç duymaz. Database online ve offline durumunda çalıştırılabilinir.
4)İki yöntem ilede block range check edilebilinir.
Rman>backup  validate datafile 1 block 10 to 100
$ORACLE_HOME/bin/dbv file:'   ' start=10 end=100

Hiç yorum yok: