Réparer en ligne des blocs corrompus (block media recovery, RECOVER CORRUPTION LIST)
OracleRMANCommande
# 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.
Voir aussi
- Créer un catalogue de restauration RMAN et y enregistrer la base
- Créer une physical standby depuis la base active avec RMAN DUPLICATE
- Valider et nettoyer les enregistrements de sauvegarde RMAN (CROSSCHECK, EXPIRED, OBSOLETE)
- Valider la base et les sauvegardes contre la corruption (VALIDATE)
- Voir quelles sauvegardes une restauration utiliserait et les valider (PREVIEW / VALIDATE)
- Ramener un tablespace à un point dans le passé (TSPITR)