DBAtlas · Atlas d'exploitation des bases de données

Réparer en ligne des blocs corrompus (block media recovery, RECOVER CORRUPTION LIST)

OracleRMAN

Commande

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

Ce que fait la commande

Restaure uniquement les blocs corrompus depuis une sauvegarde (ou depuis les flashback logs / une standby Active Data Guard) et les fait avancer avec le redo ; le datafile et le tablespace restent en ligne, et l'application ne reçoit d'erreurs que lorsqu'elle accède à ces blocs.

Quand l'utiliser

Lorsqu'une corruption de blocs isolée apparaît avec ORA-01578 / ORA-01110 ; lorsque restaurer tout le datafile provoquerait une interruption inutile.

Attention

Exige une sauvegarde saine contenant le bloc et tous les archivelogs de ce moment à maintenant ; une corruption causée par une opération NOLOGGING (ORA-26040) ne peut pas être réparée ainsi, l'objet doit être reconstruit. Il s'agit d'une fonctionnalité Enterprise Edition. Si vous ne trouvez pas la source de la corruption (stockage, HBA, firmware), elle se reproduira.

Ouvrir dans DBAtlas →

Voir aussi