Cómo identificar corrompe bloques en la base de datos de Oracle y corregirlo

Hay dos tipos de corrupción.

a. Corrupción física: Esto ocurre generalmente debido a la corrupción de los medios de comunicación. En este caso,el bloque no tiene validez checksum.it may contiene cero. Esto es generalmente el resultado de problemas de infraestructura como medios, red, memoria.

La recuperación de bloques RMAN se puede usar para eliminar la corrupción física

Vemos el error ORA-01578: Bloque de datos de ORACLE dañado en el registro de alertas cuando oracle detecta daños físicos. Oracle detecta la corrupción comprobando el encabezado y el pie de página del bloque.

b. Corrupción lógica: Esto sucede cuando oracle encuentra un encabezado y pie de página de bloque buenos, pero encuentra consistencia interna en el bloque. Generalmente sucede debido a algún error en el software Oracle. Cuando Oracle lo detecta, lanza el error en el registro de alertas.

ORA-08103 – Este error es un error de corrupción lógica para un bloque de datos en particular.
ORA-00600 – Este error está relacionado con la corrupción de bloques y se produce debido a un SCN mayor que el de la base de datos.

Cómo comprobar la corrupción de la base de datos

La corrupción de la base de datos se puede encontrar utilizando el siguiente método

a. RMAN

c. Comprobación del registro de alertas para posibles ocurrencias

c. dbverify

d. Export

e. Comando Analizar

RMAN

Ejecutar el comando debajo

RMAN> backup validate check logical database;

«La opción» CHECK LOGICAL » se utiliza para identificar las Corrupciones de bloques Físicos y Lógicos.

Podemos usar el siguiente comando en caso de que queramos hacer una comprobación selectiva

BACKUP VALIDATE DATAFILE 1;BACKUP VALIDATE check logical DATAFILE 1;BACKUP VALIDATE TABLESPACE TOOLS;BACKUP VALIDATE check logical TABLESPACE TOOLS;BACKUP VALIDATE BACKUPSET 1;BACKUP VALIDATE CURRENT CONTROLFILE;

Seleccione la vista para identificar los bloques dañados detectados por RMAN.

SQL> select * from v$database_block_corruption;For each row, find the segment impactedSQL> SELECT TABLESPACE_NAME, SEGMENT_NAME, PARTITION_NAME, SEGMENT_TYPE FROM DBA_EXTENTS WHERE FILE_ID=&FILE_ID AND &BLOCK_ID BETWEEN BLOCK_ID AND BLOCK_ID + BLOCKS - 1; 

Tenga en cuenta que, Después de reparar un bloque dañado, la fila que identifica el bloque se elimina de la vista.

Comprobación del registro de alertas para detectar posibles ocurrencias

Comprobación de alertas. archivo de registro de bloques dañados, lista de archivos de datos.

For ex:- ORA-01578: ORACLE data block corrupted (file # 11, block # 45)ORA-01110: data file 5: '/xyz/db01.dbf'

dbverify

También puede usar la utilidad dbverify para identificar las Corrupciones Físicas y lógicas Dentro del bloque.

dbv file=datafile_name blocksize=datafile_block_size

Puede utilizar el siguiente comando para generar el comando dbv para todos los archivos de datos

sqlplus /nologconnect / as sysdbaset feedback offset head offset echo offset linesize 200set pagesize 2500spool /tmp/dbvlogs/dbvchk.shselect 'dbv file=' || name || ' blocksize='|| block_size || ' logfile=' ||substr(name, instr(name, '/', -1, 1) +1) ||'.' || file# || '.log' from v$datafile/spool off

En el caso del dispositivo RAW

select 'dbv file='||name||' blocksize='||block_size||' end='||(bytes/block_size)||' logfile='||substr (name, instr (name, '/', -1, 1) + 1)||'.'||file#||'.log'from v$datafile;

En el caso del almacenamiento ASM

select 'dbv file=' || name || ' blocksize='|| block_size || ' USERID=sys/&SYS_PASSWORD logfile=' ||substr(name, instr(name, '/', -1, 1) +1) ||'.' || file# || '.log' from v$datafile/

Exportar

Utilizando la exportación de tabla o esquema también encontrará la corrupción en la tabla o esquema

Pero la gran limitación con la exportación es que falla inmediatamente después de encontrar la primera corrupción., así que la imagen completa se perderá.

El comando ANALIZAR

ANALIZAR se ha referido como la mejor utilidad que realiza comprobaciones máximas.

Esta es la utilidad fácil para verificar las corrupciones asociadas con index en cualquier medio.

Para comprobar la corrupción con una tabla, haga lo siguiente:

ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE;

Para comprobar la corrupción con un índice, haga lo siguiente:

ANALYZE INDEX <OWNER.INDEX_NAME> VALIDATE STRUCTURE;

Para verificar la corrupción con la tabla y su índice(s) para realizar las comprobaciones de referencia cruzada, haga lo siguiente:

ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE CASCADE;

Para tablas de particiones, necesitamos usar el comando ANALIZAR con la opción INTO INVALID_ROWS, similar a la siguiente:

ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE CASCADE INTO INVALID_ROWS;

Cómo corregir la corrupción

a. Usando el comando RMAN de blockrecover

Con recuperación de bloques, solo los bloques que se están recuperando no están disponibles, el archivo de datos rest está disponible

RMAN >archivo de datos de blockrecover 10 bloque 1688

RMAN > RESTAURAR LA LISTA DE CORRUPCIÓN DE BLOCKRECOVER HASTA EL– 7′;

b. Usando la recuperación de archivos de datos de copia de seguridad o en espera (si tiene)

c. Recuperación completa de la base de datos

d. En caso de que solo esté dañado el índice, podemos eliminar el índice y recrearlo

e. Podemos usar DBMS_REPAIR. No corregirá el bloque corrupto, pero marcará ese bloque como skip y no comprobará ese bloque ahora en adelante

Deja una respuesta

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