Las interrupciones de la base de datos pueden ser tremendamente costosas para las organizaciones basadas en datos, lo que hace que su negocio esté casi paralizado. Una de las causas más comunes de interrupciones de la base de datos es la corrupción de bloques de datos. En este artículo, analizaremos cómo puede detectar y reparar el problema de la corrupción de bloques dentro de su base de datos Oracle.

¿Qué es la corrupción de un bloque de datos?

La corrupción de bloques de datos se produce cuando los datos no están en su estado esperado. El bloque puede tener contenidos que no son consistentes internamente, o puede haber sido alterado para ser irreconocible como parte del formato de base de datos Oracle.

Algunas corrupciones de bloques de datos son relativamente menores, afectando solo a un bloque. Otros dañan una parte significativa de la base de datos, lo que la hace inutilizable y conduce a la pérdida de información crítica.

¿Por qué ocurren las corrupciones de bloques de datos?

La corrupción de bloques de datos puede ocurrir en cualquier momento en que se alteren los datos, y se puede rastrear hasta problemas de hardware y software. Los problemas con cualquiera o todos los siguientes componentes pueden provocar daños en los bloques de datos:

  • Disco duro
  • Controlador de disco
  • Sistema operativo
  • Red de área de almacenamiento (SAN)
  • Dispositivo de almacenamiento

¿Cómo puede evitar la corrupción de bloques de datos?

Las corrupciones de bloques de datos son difíciles de prevenir porque son inherentemente impredecibles. De hecho, las corrupciones son inevitables en los entornos de bases de datos altamente complejos de hoy en día.

Sin embargo, aún puede trabajar para mitigar los efectos de la corrupción de bloques de datos con una sólida estrategia de copia de seguridad y recuperación. Oracle proporciona una variedad de herramientas y soluciones para estos fines, que incluyen:

  • Oracle Data Guard: Protege las bases de datos empresariales en caso de desastre o corrupción.
  • Asesor de recuperación de datos: Diagnostica la pérdida o corrupción de datos y realiza reparaciones.
  • Oracle Flashback: Restaura las tablas o filas de la base de datos a un estado anterior.
  • Oracle Recovery Manager: Realiza copias de seguridad y recupera bases de datos Oracle.
  • Oracle Secure Backup:Realiza copias de seguridad de los datos del sistema de archivos y de los archivos de la base de datos de Oracle en cinta.

¿Cómo detecta y supervisa la corrupción de bloques de datos?

A pesar de sus mejores esfuerzos, la corrupción del bloque de datos puede ocurrir en cualquier momento. Afortunadamente, Oracle puede detectar y reparar la corrupción de bloques de datos de varias maneras:

  • Oracle Recovery Manager (RMAN)
  • DBVerify
  • Comando DE análisis
  • Parámetro DB_BLOCK_CHECKING
  • Recuperación de medios de bloque (BMR)
  • DBMS_REPAIR

Oracle Recovery Manager (RMAN)

Para comprobar la corrupción física y lógica de una base de datos, ejecute el siguiente comando en Oracle RMAN:

  • COPIA DE SEGURIDAD VALIDAR COMPROBAR REGISTRO DE ARCHIVOS DE BASE DE DATOS LÓGICA TODO;

El comando VALIDAR de Oracle RMAN se puede utilizar para validar archivos, espacios de tablas e incluso bases de datos completas. Por ejemplo:

  • VALIDAR EL ARCHIVO DE DATOS ‘/u01/oradata/ORCL / system01.dbf’;
  • VALIDAR usuarios DE ESPACIOS DE TABLA;
  • VALIDAR BASE DE DATOS;

Si Oracle RMAN detecta cualquier corrupción de bloques de datos, se mostrarán en la vista V DATAB DATABASE_BLOCK_CORRUPTION.

DBVerify

DBVerify es una utilidad de línea de comandos externa para validar bases de datos y archivos en línea y fuera de línea, incluidas las copias de seguridad. El siguiente ejemplo muestra el uso del comando dbv:

  • archivo dbv = / u01/oradata/ORACL / system01.retroalimentación dbf = 10000 tamaño de bloque=8192

Tenga en cuenta que no puede usar DBVerify para archivos de control de Oracle o registros de rehacer.

Comando ANALIZAR

Puede utilizar la construcción de la ESTRUCTURA ANALIZAR VALIDATE VALIDAR para verificar los bloques de datos de un objeto. Una vez completado el análisis, compruebe la tabla INVALID_ROWS para ver los datos dañados.

Para crear primero la tabla INVALID_ROWS, ejecute el siguiente comando dentro de SQL:

  • @$ORACLE_HOME/rdbms/admin / UTLVALID.SQL

En segundo lugar, valide la estructura de tabla e índice con el siguiente comando:

  • ANALICE LA MESA Scott.CASCADA DE ESTRUCTURA DE VALIDACIÓN DE emp;

Parámetro DB_BLOCK_CHECKING

Al establecer el parámetro DB_BLOCK_CHECKING en, puede hacer que Oracle compruebe los bloques de la base de datos para la autoconsecuencia. Tenga en cuenta que esto puede agregar hasta un 10 por ciento de sobrecarga al servidor, por lo que solo use esta opción si el rendimiento no es de gran importancia.

Recuperación de bloques de medios (BMR)

Recuperación de bloques de medios (BMR) le permite recuperar uno o más bloques de datos sin afectar al archivo en su conjunto. Como resultado, experimentará un menor tiempo medio de reparación (MTTR) y disfrutará de una mayor disponibilidad, ya que solo necesita desconectar los bloques afectados.

Esta táctica es útil cuando solo se ha dañado un número limitado de bloques de datos. Solo puede realizar BMR dentro de Oracle RMAN mediante el comando BLOCKRECOVER.

DBMS_REPAIR

El paquete DBMS_REPAIR de Oracle puede detectar y reparar daños. Para hacerlo, primero debe crear dos tablas de administración. Estas tablas contendrán una lista de bloques corruptos y las claves de índice que apuntan a esos bloques:

BEGIN

DBMS_REPAIR.admin_tables (

table_name = > ‘REPAIR_TABLE’,

table_type = > DBMS_REPAIR.repair_table,

action => DBMS_REPAIR.create_action,

tablespace = > ‘USUARIOS’);

DBMS_REPAIR.admin_tables (

table_name => ‘ORPHAN_KEY_TABLE’,

table_type => DBMS_REPAIR.orphan_table,

action = > DBMS_REPAIR.create_action,

espacio de tabla => ‘USUARIOS’);

END;

El segundo paso es utilizar la CHECK_OBJECT procedimiento para examinar la tabla de:

SET SERVEROUTPUT ON

DECLARAR

v_num_corrupt INT;

BEGIN

v_num_corrupt := 0;

DBMS_REPAIR.check_object (

schema_name => ‘SCOTT’,

nombre_objeto => ‘DEPARTAMENTO’,

repair_table_name => ‘REPAIR_TABLE’,

corrupt_count => v_num_corrupt);

DBMS_OUTPUT.put_line(‘número de corruptos:’ || TO_CHAR (v_num_corrupt));

END;

a continuación, utilizar la FIX_CORRUPT_BLOCKS procedimiento para marcar los bloques dañados:

SET SERVEROUTPUT ON

DECLARAR

v_num_fix INT;

BEGIN

v_num_fix := 0;

DBMS_REPAIR.fix_corrupt_blocks (

schema_name = > ‘SCOTT’,

object_name = > ‘DEPT’,

object_type => Dbms_Repair.table_object,

repair_table_name => ‘REPAIR_TABLE’,

fix_count => v_num_fix);

DBMS_OUTPUT.put_line(‘num revisión:’ || TO_CHAR(v_num_fix));

END;

El siguiente paso es la comprobación de esas claves, que son la clave de las entradas que apuntan a un corrupto bloque de datos:

SET SERVEROUTPUT ON

DECLARAR

v_num_orphans INT;

BEGIN

v_num_orphans := 0;

DBMS_REPAIR.dump_orphan_keys (

schema_name => ‘SCOTT’,

object_name => ‘PK_DEPT’,

object_type => DBMS_REPAIR.index_object,

repair_table_name => ‘REPAIR_TABLE’,

orphan_table_name => ‘ORPHAN_KEY_TABLE’,

key_count => v_num_orphans);

DBMS_OUTPUT.put_line (‘orphan key count:’ / / TO_CHAR(v_num_orphans));

END;

Si hay 1 o más claves huérfanas, debe reconstruir el índice de la base de datos con el procedimiento REBUILD_FREELISTS:

BEGIN

DBMS_REPAIR.rebuild_freelists (

schema_name => ‘SCOTT’,

object_name => ‘DEPT’,

object_type => DBMS_REPAIR.table_object);

END;

Finalmente, use el procedimiento SKIP_CORRUPT_BLOCKS para asegurarse de que los bloques dañados se omitan durante las consultas:

BEGIN

DBMS_REPAIR.skip_corrupt_blocks (

schema_name => ‘SCOTT’,

object_name => ‘DEPT’,

object_type => DBMS_REPAIR.objeto de tabla,

flags = > REPARACIÓN DE DBM.skip_flag);

FIN;

Conclusión

Si bien la corrupción de bloques de datos es un hecho desafortunado de la vida, Oracle tiene un conjunto maduro y amplio de herramientas para proteger y recuperar los datos de su empresa. El uso de software como Oracle Data Guard y Oracle RMAN, así como la realización de comprobaciones periódicas de corrupción, le ayudarán a contrarrestar el problema de la corrupción de bloques de datos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.