Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Melewatkan blok yang rusak
Untuk melewati blok yang rusak selama pemindaian indeks dan tabel, gunakan paket rdsadmin.rdsadmin_dbms_repair
.
Prosedur berikut mencakup fungsionalitas prosedur sys.dbms_repair.admin_table
dan tidak menggunakan parameter:
-
rdsadmin.rdsadmin_dbms_repair.create_repair_table
-
rdsadmin.rdsadmin_dbms_repair.create_orphan_keys_table
-
rdsadmin.rdsadmin_dbms_repair.drop_repair_table
-
rdsadmin.rdsadmin_dbms_repair.drop_orphan_keys_table
-
rdsadmin.rdsadmin_dbms_repair.purge_repair_table
-
rdsadmin.rdsadmin_dbms_repair.purge_orphan_keys_table
Prosedur berikut menggunakan parameter yang sama seperti parameter dalam paket DBMS_REPAIR
untuk basis data Oracle:
-
rdsadmin.rdsadmin_dbms_repair.check_object
-
rdsadmin.rdsadmin_dbms_repair.dump_orphan_keys
-
rdsadmin.rdsadmin_dbms_repair.fix_corrupt_blocks
-
rdsadmin.rdsadmin_dbms_repair.rebuild_freelists
-
rdsadmin.rdsadmin_dbms_repair.segment_fix_status
-
rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks
Untuk informasi selengkapnya tentang penanganan korupsi database, lihat DBMS_ REPAIR
contoh Merespons blok yang rusak
Contoh ini menunjukkan alur kerja dasar untuk merespons blok yang rusak. Langkah-langkah yang diperlukan bergantung pada lokasi dan sifat kerusakan blok Anda.
penting
Sebelum mencoba memperbaiki blok yang rusak, tinjau REPAIR dokumentasi DBMS_ dengan cermat
Untuk melewati blok yang rusak selama pemindaian indeks dan tabel
-
Jalankan prosedur berikut untuk membuat tabel perbaikan jika belum ada.
EXEC rdsadmin.rdsadmin_dbms_repair.create_repair_table; EXEC rdsadmin.rdsadmin_dbms_repair.create_orphan_keys_table;
-
Jalankan prosedur berikut untuk memeriksa catatan yang ada dan menghapusnya jika sesuai.
SELECT COUNT(*) FROM SYS.REPAIR_TABLE; SELECT COUNT(*) FROM SYS.ORPHAN_KEY_TABLE; SELECT COUNT(*) FROM SYS.DBA_REPAIR_TABLE; SELECT COUNT(*) FROM SYS.DBA_ORPHAN_KEY_TABLE; EXEC rdsadmin.rdsadmin_dbms_repair.purge_repair_table; EXEC rdsadmin.rdsadmin_dbms_repair.purge_orphan_keys_table;
-
Jalankan prosedur berikut untuk memeriksa adanya blok yang rusak.
SET SERVEROUTPUT ON DECLARE v_num_corrupt INT; BEGIN v_num_corrupt := 0; rdsadmin.rdsadmin_dbms_repair.check_object ( schema_name => '&corruptionOwner', object_name => '&corruptionTable', corrupt_count => v_num_corrupt ); dbms_output.put_line('number corrupt: '||to_char(v_num_corrupt)); END; / COL CORRUPT_DESCRIPTION FORMAT a30 COL REPAIR_DESCRIPTION FORMAT a30 SELECT OBJECT_NAME, BLOCK_ID, CORRUPT_TYPE, MARKED_CORRUPT, CORRUPT_DESCRIPTION, REPAIR_DESCRIPTION FROM SYS.REPAIR_TABLE; SELECT SKIP_CORRUPT FROM DBA_TABLES WHERE OWNER = '&corruptionOwner' AND TABLE_NAME = '&corruptionTable';
-
Gunakan prosedur
skip_corrupt_blocks
untuk mengaktifkan atau menonaktifkan pelompatan kerusakan untuk tabel yang terkena dampak. Bergantung pada situasi, Anda mungkin juga perlu mengekstrak data ke tabel baru, lalu meletakkan tabel yang berisi blok yang rusak.Gunakan prosedur berikut untuk mengaktifkan pelompatan kerusakan untuk tabel yang terkena dampak.
begin rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks ( schema_name => '&corruptionOwner', object_name => '&corruptionTable', object_type => rdsadmin.rdsadmin_dbms_repair.table_object, flags => rdsadmin.rdsadmin_dbms_repair.skip_flag); end; / select skip_corrupt from dba_tables where owner = '&corruptionOwner' and table_name = '&corruptionTable';
Gunakan prosedur berikut untuk menonaktifkan pelompatan kerusakan.
begin rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks ( schema_name => '&corruptionOwner', object_name => '&corruptionTable', object_type => rdsadmin.rdsadmin_dbms_repair.table_object, flags => rdsadmin.rdsadmin_dbms_repair.noskip_flag); end; / select skip_corrupt from dba_tables where owner = '&corruptionOwner' and table_name = '&corruptionTable';
-
Setelah menyelesaikan semua pekerjaan perbaikan, jalankan prosedur berikut untuk melakukan tabel perbaikan.
EXEC rdsadmin.rdsadmin_dbms_repair.drop_repair_table; EXEC rdsadmin.rdsadmin_dbms_repair.drop_orphan_keys_table;