Reparar blocos corrompidos online (block media recovery, RECOVER CORRUPTION LIST)
OracleRMANComando
# 1) Detect corrupt blocks (populates v$database_block_corruption):
VALIDATE CHECK LOGICAL DATABASE;
# 2) Repair all blocks in the list (the datafile stays online):
RECOVER CORRUPTION LIST;
# or the file/block from the error message (ORA-01578: file# 7, block# 233):
RECOVER DATAFILE 7 BLOCK 233;
RECOVER DATAFILE 7 BLOCK 233 DATAFILE 9 BLOCK 1001;
# 3) Verify:
VALIDATE DATAFILE 7;
SELECT * FROM v$database_block_corruption;O que faz
Restaura apenas os blocos corrompidos a partir de um backup (ou de flashback logs / de um standby Active Data Guard) e os avança com redo; o datafile e o tablespace permanecem online, e a aplicação só recebe erros ao acessar esses blocos.
Quando usar
Quando surge corrupção isolada de blocos com ORA-01578 / ORA-01110; quando restaurar o datafile inteiro causaria indisponibilidade desnecessária.
Atenção
Exige um backup íntegro que contenha o bloco e todos os archivelogs desde então até agora; a corrupção causada por uma operação NOLOGGING (ORA-26040) não pode ser reparada assim, o objeto precisa ser recriado. É um recurso do Enterprise Edition. Se você não encontrar a origem da corrupção (storage, HBA, firmware), ela vai se repetir.
Relacionados
- Criar um recovery catalog do RMAN e registrar o banco de dados
- Criar um physical standby a partir do banco ativo com RMAN DUPLICATE
- Validar e limpar registros de backup do RMAN (CROSSCHECK, EXPIRED, OBSOLETE)
- Validar o banco de dados e os backups contra corrupção (VALIDATE)
- Ver quais backups um restore usaria e validá-los (PREVIEW / VALIDATE)
- Retornar um tablespace a um ponto no passado (TSPITR)