Reparar bloques corruptos en línea (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;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.
Relacionado
- Crear un recovery catalog de RMAN y registrar la base de datos
- Crear un physical standby desde la base de datos activa con RMAN DUPLICATE
- Validar y limpiar los registros de backup de RMAN (CROSSCHECK, EXPIRED, OBSOLETE)
- Validar la base de datos y los backups frente a corrupción (VALIDATE)
- Ver qué backups usaría una restauración y validarlos (PREVIEW / VALIDATE)
- Devolver un tablespace a un punto del pasado (TSPITR)