Apa yang menyebabkan Block Corruption?
Block data curruption adalah suatu block yang tidak dikenal di dalam suatu format Oracle, atau memiliki isi yang tidak consistent. Secara khas, corruption disebabkan oleh hardware atau operating system yang bermasalah. Oracle database mengidentifikasikan block corrupt berupa “logically corrupt” atau “media corrupt.” Jika logically corrupt, kemudia akan keluar informasi Oracle internal error. Block logically corrupt ditandai oleh Oracle database setelah mendetek inconsistency. Jika media yang corrupt, maka format block tidaklah benar; Information didalam block tidak bisa dibaca dari disk.
Anda dapat memperbaiki suatu block media yang corrupt menggunakan recover block atau menghapus object database yang berisi block corrupt, atau kedua-duanya. Jika media corruption berarti berkaitan dengan hardware yang cacat, Masalah tidak akan sepenuhnya terpecahkan sampai hardware dikoreksi kesalahannya.
Gejala Block Corruption : ORA-01578
Error ORA-01578: “ORACLE data block corrupted (file # %s, block # %s)”:
• Dihasilkan ketika suatu Block data corrupted ditemukan
• Selalu mengembalikan nomor file yang absolute dan nomor block
• Cek didalam file alert.log
Bagaimana Untuk menghandel Corruption
• Check pada alert log dan file log operating system.
• Gunakan Tools diagnostic yang tersedia untuk menemukan type dari corruption.
• Tentukan apakah error tetap bertahan ketika pengecekan dilakukan pada beberapa waktu.
• Recover data dari object yang corrupted jika diperlukan.
Menggunakan Utility DBVERIFY
DBVERIFY adalah suatu utility external menggunakan command-line yang melakukan suatu integritas check terhadap struktur physical data database baik yang offline atau yang online Itu dapat digunakan terhadap backup files dan online file. Menggunakan utama DBVERIFY ketika anda harus memastikan backup dari database atau data file valid sebelum digunakan untuk restored atau sebagai bantuan diagnostic ketika anda menemukan permasalahan data corruption. Karena DBVERIFY melakukan check integrity yang lebih cepat.
Batasan dari DBVERIFY meliputi yang berikut ini:
• DBVERIFY tidak bisa men-detect permasalahan seperti INDEX
• DBVERIFY tidak bisa untuk menverifikasi redo log files atau control files.
• DBVERIFY hanya check suatu block didalam isolation; itu tidak mengetahui apakah block menjadi bagian dari object yang ada atau tidak.
• Untuk raw devices, anda perlu menggunakan parameter END parameter untuk menghindari scanning blocks melalui sampai akhir dari space data file: dbv FILE=/dev/rdsk/r1.dbf END=last_data_block#
Perintah ANALYZE
Gunakan perintah ANALYZE untuk validasi structure dari suatu table atau table partitions, dan index atau index partitions. Object yang akan analyzed haruslah local dan harus didalam schema pemiliknya atau anda harus memiliki system privilege ANALYZE ANY. Opsi CASCADE digunakan untuk validasi object, mencakup semua object yang terkait. Anda dapat menjalankan session SQL*Plus pada suatu object yang spesifik, untuk melakukan suatu cek integrity dan untuk menentukan apakah error tersebut menetap, dengan menjalankan perintah ANALYZE beberapa kali.
Untuk table partisi, ANALYZE juga memverifikasi row untuk partisi yang benar. Jika row tidak disusun dengan benar, row ID akan di Insert didalam table INVALID_ROWS.
SQL> ANALYZE TABLE partitioned_table PARTITION (p1) VALIDATE STRUCTURE INTO invalid_rows;
Suatu statement select sederhana (SELECT * FROM table) melakukan suatu full table scan, dimana dia akan membaca semua data blocks sampai kepada high-water mark dari table. Anda bisa melakukan suatu pengecekan yang cepat untuk corruptions didalam table data anda sekarang. Anda dapat menggunakan Data Pump untuk export objects; ini juga secara full scan setiao table.