Omisión de bloques dañados - Amazon Relational Database Service

Omisión de bloques dañados

Para omitir bloques dañados durante análisis de índice y tablas, utilice el paquete rdsadmin.rdsadmin_dbms_repair.

Los siguientes procedimientos encapsulan la funcionalidad del procedimiento sys.dbms_repair.admin_table y no toman parámetros:

  • 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

Los siguientes procedimientos toman los mismos parámetros que sus contrapartes en el paquete DBMS_REPAIR para bases de datos de 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

Para obtener más información sobre la gestión de daños en la base de datos, consulte DBMS_REPAIR en la documentación de Oracle.

ejemplo Respuesta a bloques dañados

En este ejemplo se muestra el flujo de trabajo básico para responder a bloques dañados. Sus pasos dependerán de la ubicación y la naturaleza del daño de sus bloques.

importante

Antes de intentar reparar bloques dañados, revise detenidamente la documentación de DBMS_REPAIR.

Para omitir bloques dañados durante análisis de índices y tablas
  1. Ejecute los siguientes procedimientos para crear tablas de reparación si aún no existen.

    EXEC rdsadmin.rdsadmin_dbms_repair.create_repair_table; EXEC rdsadmin.rdsadmin_dbms_repair.create_orphan_keys_table;
  2. Ejecute los siguientes procedimientos para verificar los registros existentes y purgarlos, si corresponde.

    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. Ejecute el siguiente procedimiento para verificar si hay bloques dañados.

    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. Utilice el procedimiento skip_corrupt_blocks para habilitar o desactivar la omisión de daños de las tablas afectadas. En función de la situación, es posible que también necesite extraer datos en una tabla nueva y, a continuación, soltar la tabla que contiene el bloque dañado.

    Ejecute el siguiente procedimiento para habilitar la omisión de daños en tablas afectadas.

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

    Ejecute el siguiente procedimiento para desactivar la omisión de daños.

    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. Cuando haya completado todo el trabajo de reparación, ejecute los siguientes procedimientos para eliminar las tablas de reparación.

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