

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Überspringen von beschädigten Blöcken
<a name="Appendix.Oracle.CommonDBATasks.SkippingCorruptBlocks"></a>

Zum Überspringen von beschädigten Blöcken während Index- und Tabellenscans verwenden Sie das `rdsadmin.rdsadmin_dbms_repair`-Paket.

Die folgenden Verfahren umschließen die Funktionalität der `sys.dbms_repair.admin_table`-Prozedur und verwenden keine 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`

Die folgenden Verfahren verwenden dieselben Parameter wie ihre Gegenstücke im `DBMS_REPAIR`-Paket für Oracle-Datenbanken:
+ `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`

Weitere Informationen zum Umgang mit Datenbankbeschädigungen finden Sie unter [DBMS\$1REPAIR](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_REPAIR.html#GUID-B8EC4AB3-4D6A-46C9-857F-4ED53CD9C948) in der Oracle-Dokumentation.

**Example Reaktion auf beschädigte Blöcke**  
Dieses Beispiel zeigt den grundlegenden Workflow für die Reaktion auf beschädigte Blöcke. Ihre Schritte hängen vom Ort und der Art Ihrer Blockbeschädigung ab.  
Bevor Sie versuchen, beschädigte Blöcke zu reparieren, überprüfen Sie sorgfältig die [DBMS\$1REPAIR](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_REPAIR.html#GUID-B8EC4AB3-4D6A-46C9-857F-4ED53CD9C948)-Dokumentation.

**So überspringen Sie beschädigte Blöcke bei Index- und Tabellenscans**

1. Führen Sie die folgenden Verfahren aus, um Reparaturtabellen zu erstellen, wenn sie noch nicht vorhanden sind.

   ```
   EXEC rdsadmin.rdsadmin_dbms_repair.create_repair_table;
   EXEC rdsadmin.rdsadmin_dbms_repair.create_orphan_keys_table;
   ```

1. Führen Sie die folgenden Verfahren aus, um nach vorhandenen Datensätzen zu suchen und diese ggf. zu löschen.

   ```
   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;
   ```

1. Führen Sie das folgende Verfahren aus, um nach beschädigten Blöcken zu suchen.

   ```
   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';
   ```

1. Führen Sie das Verfahren `skip_corrupt_blocks` aus, um das Überspringen von Beschädigungen für betroffene Tabellen zu aktivieren oder zu deaktivieren. Abhängig von der Situation müssen Sie möglicherweise auch Daten in eine neue Tabelle extrahieren und dann die Tabelle löschen, die den beschädigten Block enthält.

   Führen Sie das folgende Verfahren aus, um das Überspringen von Beschädigungen für betroffene Tabellen zu aktivieren.

   ```
   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';
   ```

   Führen Sie das folgende Verfahren aus, um das Überspringen von Beschädigungen zu deaktivieren.

   ```
   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';
   ```

1. Wenn Sie alle Reparaturarbeiten abgeschlossen haben, führen Sie die folgenden Verfahren aus, um die Reparaturtabellen zu löschen.

   ```
   EXEC rdsadmin.rdsadmin_dbms_repair.drop_repair_table;
   EXEC rdsadmin.rdsadmin_dbms_repair.drop_orphan_keys_table;
   ```