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
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_ REPAIR
Beispiel 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.
Wichtig
Bevor Sie versuchen, beschädigte Blöcke zu reparieren, lesen Sie sich die REPAIR Dokumentation zu DBMS_
So überspringen Sie beschädigte Blöcke bei Index- und Tabellenscans
-
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;
-
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;
-
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';
-
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';
-
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;