Como identificar corrompe blocos de banco de dados Oracle e corrigi-lo

Existem dois tipos de corrupção.

A. corrupção física: isso acontece geralmente devido à corrupção da mídia. Nesse caso, o bloco tem inválido checksum.it maio contém zero. Isso geralmente é o resultado de problemas de infraestrutura como mídia,rede ,memória.

RMAN Block recover pode ser usado para remover a corrupção física

vemos o erro ORA-01578: O ORACLE data block foi corrompido no log de alertas quando o oracle detecta corrupção física. O Oracle detecta corrupção verificando o cabeçalho do bloco e o rodapé do bloco.

B. corrupção lógica: isso acontece quando o oracle encontra o cabeçalho e o rodapé do bloco bem, mas encontra consistência interna no bloco. Geralmente isso acontece devido a algum bug no Software Oracle. Quando o oracle o detecta, ele gera o erro no log de alertas.

ORA – 08103-este erro é um erro de corrupção lógica para um determinado bloco de dados.
ORA-00600-este erro está relacionado ao bloqueio de corrupção e ocorre devido a um SCN mais alto do que o SCN do banco de dados.

Como verificar a corrupção de banco de dados

corrupção de Banco de dados podem ser encontrados usando o método abaixo

um. RMAN

c. Verificação de log de alerta para a possível ocorrência

c. dbverify

d. Exportação

e. Analisar comando

RMAN

Execute o comando abaixo

RMAN> backup validate check logical database;

“VERIFIQUE LÓGICA” opção é usada para identificar tanto Físico e Lógico Bloco de Corrupções.

podemos usar o comando abaixo caso desejemos verificar seletivamente

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;

selecione a visualização para identificar os blocos corrompidos detectados pelo 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; 

observe que, depois que um bloco corrompido é reparado, a linha que identifica o bloco é excluída da visualização.

verificar o registro de alerta para possível ocorrência

verificar alerta. arquivo de log para blocos corrompidos, lista de arquivos de dados.

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

dbverify

você também pode usar o utilitário dbverify para identificar corrupções Intra-Bloco físicas e lógicas.

dbv file=datafile_name blocksize=datafile_block_size

Você pode usar o comando abaixo para gerar o dbv comando para todos os datafiles

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

No caso de MATÉRIAS de dispositivo

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

Em caso de AGO de armazenamento

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

Usando a exportação de tabela ou esquema encontrará também a corrupção na tabela ou esquema

Mas a grande limitação com a exportação é que Ele falha imediatamente após encontrar o primeiro corrupção., então a imagem completa será perdida.

ANALYZE command

ANALYZE foi referido como o melhor utilitário que executa verificações máximas.

este é o utilitário fácil para verificar as corrupções associadas ao índice em qualquer meio.

Para verificar a corrupção com uma tabela faça o seguinte:

ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE;

Para verificar a corrupção, com um índice de fazer o seguinte:

ANALYZE INDEX <OWNER.INDEX_NAME> VALIDATE STRUCTURE;

Para verificar a corrupção com a tabela e seu índice(s) para executar a referência cruzada de verificações faça o seguinte:

ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE CASCADE;

Para tabelas de partição, precisamos usar ANALISAR comando com INVALID_ROWS opção, semelhante à seguinte:

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

Como corrigir a Corrupção

um. Usando blockrecover RMAN comando

Com o Bloco de recuperar, apenas os blocos estão sendo recuperados não estão disponíveis ,o resto arquivo de dados não está disponível

RMAN >blockrecover de dados de 10 blocos de 1688

RMAN > BLOCKRECOVER CORRUPÇÃO LISTA de RESTAURAR ATÉ o TEMPO ‘SYSDATE– 7’;

b. Usando o arquivo de dados de recuperação de cópia de segurança ou no modo de espera (se você tiver)

c. Completa recuperação do banco de dados

d. No caso, é o índice de corrupção, apenas podemos descartar o índice e recriá-lo

e. Podemos usar DBMS_REPAIR. Ele não corrigirá o bloco corrompido, mas marcará esse bloco como skip e você não verificará esse bloco agora em diante

Deixe uma resposta

O seu endereço de email não será publicado.