Restaurer une table Oracle avec RMAN en version 12c

Contexte

Dans mon précédent article, je vous avais montré comment « Restaurer un schéma avec RMAN Tablespace Point-in-Time Recovery » en cas de mauvaise manipulation sur les données. Ce mécanisme de restauration nécessite de nombreuses actions et peut s’avérer difficile à imlémenter.
En version 12c, il est désormais possible de restaurer une seule table parmi toutes les tables d’un schéma de manière automatisée à condition de disposer de sauvegardes RMAN.

Démonstration

Admettons que nous ayons effectué une mauvaise manipulation (suppression de 10000 lignes) sur la table TRAITEMENT du schéma ARKZOYD en date du 29-09-2016 à 15h00.
Vous pouvez la restaurer à partir de vos sauvegardes RMAN avec la commande suivante :

RUN{
recover table ARKZOYD.TRAITEMENT until TIME "TO_DATE('2016-09-29 14:30:00','YYYY-MM-DD HH24:MI:SS')" auxiliary destination '+DATA';
}

Le paramètre auxiliary destination localise la destination de la base auxiliaire qui va être créée pour la restauration de la table, dans mon cas un groupe de disques ASM dans lequel j’ai suffisamment d’espace disponible.
Ci-dessous un schéma sur le mécanisme présent derrière la commande RECOVER TABLE :
restore_table
Cette commande reprend exactement le même principe que celui la restauration RMAN Tablespace Point-in-Time Recovery, mais de manière automatisée.
RMAN va créer, avec les sauvegardes, une base auxiliaire à la date à laquelle les données étaient encore présentes.
A partir de cette base, un export de la table en question est effectué.
Ensuite, les données sont injectées dans la base de production.
Nous retrouvons ainsi la base dans son état initial à la date souhaitée.

Conclusion

La nouvelle fonctionnalité de la version 12c fait gagner beaucoup de temps aux DBA, car la tâche s’avère beaucoup plus lourde en cas de mauvaise manipulation sur les données d’une base en version 11g.
L’automatisation permet de sécuriser également l’opération, et ainsi, éviter les erreurs.
Si vous souhaitez plus de détails sur l’opération et ses options reportez-vous à l’article « Oracle db12c : Récupérer une table via RMAN » de notre blog.