DBAtlas · Atlas de operaciones de bases de datos

Reparar bloques corruptos en línea (block media recovery, RECOVER CORRUPTION LIST)

OracleRMAN

Comando

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

Qué hace

Restaura solo los bloques corruptos desde un backup (o desde los flashback logs / un standby de Active Data Guard) y los pone al día con redo; el datafile y el tablespace permanecen online, y la aplicación solo recibe errores al tocar esos bloques.

Cuándo usarlo

Cuando aparece corrupción de bloques aislada con ORA-01578 / ORA-01110; cuando restaurar todo el datafile causaría un tiempo de inactividad innecesario.

Precaución

Requiere un backup limpio que contenga el bloque y todos los archivelogs desde entonces hasta ahora; la corrupción causada por una operación NOLOGGING (ORA-26040) no se puede reparar así, el objeto debe reconstruirse. Es una función de Enterprise Edition. Si no encuentra el origen de la corrupción (almacenamiento, HBA, firmware), volverá a ocurrir.

Abrir en DBAtlas →

Relacionado