Melewatkan blok yang rusak - Layanan Basis Data Relasional Amazon

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 di dokumentasi Oracle.

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
  1. 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;
  2. 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;
  3. 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';
  4. 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';
  5. 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;