Maison >base de données >Oracle >Comment récupérer après avoir accidentellement supprimé des données de table dans l'analyse de l'instance Oracle

Comment récupérer après avoir accidentellement supprimé des données de table dans l'analyse de l'instance Oracle

WBOY
WBOYavant
2022-07-25 17:42:493251parcourir

Cet article vous apporte des connaissances pertinentes sur Oracle Lors de l'utilisation de données Oracle, les données de la table ont été accidentellement supprimées et soumises. Voici une introduction à la façon de récupérer après la suppression accidentelle des données de la table par Oracle. j'espère que cela sera utile à tout le monde.

Comment récupérer après avoir accidentellement supprimé des données de table dans l'analyse de l'instance Oracle

Tutoriel recommandé : "Tutoriel vidéo Oracle"

Restauration basée sur l'heure

Cette méthode nous oblige à connaître approximativement l'heure d'exécution de l'instruction de suppression.

Interrogez l'heure actuelle du système : select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual ;select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss’) from dual;

假设在2022-04-02 16:27:11分钟,执行了删除语句
delete from demo ;

Supposons qu'il soit le 02/04/2022 à 16h27 : 11 minutes, l'instruction de suppression est exécutée
supprimer de la démo ;

À ce stade, les données ne peuvent pas être interrogées dans la table. Nous connaissons le temps d'exécution de la suppression, avancez d'1 minute (le temps d'exécution de la suppression peut être avant, plus il est petit, mieux c'est, cet exemple prend 1 minute à titre d'exemple), exécutez l'instruction suivante

select * from DEMO as of timestamp to_timestamp(‘2022-04-02 16:26:11',‘yyyy-mm-dd hh24:mi:ss');

Vous pouvez voir que même si le table de démonstration actuelle Il n'y a aucune donnée dans la table, mais vous pouvez interroger les données pour la première minute de la table de démonstration.

Récupération 1 : à ce stade, vous pouvez exporter le fichier SQL via la fonction de résultat de requête d'exportation de l'outil plsql, puis réexécuter l'instruction d'insertion dans le fichier SQL pour la récupération des données.

Récupération 2 : Exécutez le SQL suivant pour la récupération des données :

flashback table DEMO to timestamp to_timestamp(‘2022-04-02 16:26:11',‘yyyy-mm-dd hh24:mi:ss');

Si une erreur est signalée ORA-08189 : La fonction de déplacement de ligne n'est pas activée et la table ne peut pas être flashée

Ensuite, exécutez :

alter table DEMO enable row movement;

Après avoir ajouté le fonction de déplacement des lignes de la table, exécutez l'instruction flashback Restore

Si une erreur est signalée : ORA-08194 : l'opération de table Flashback n'est pas autorisée sur les vues matérialisées, puis restaurez en créant une nouvelle table temporaire comme décrit ci-dessous.

Récupération 3 (créer une nouvelle table temporaire) :

Créez une nouvelle table demo1 et insérez les données à récupérer

create table DEMO1 as select * from DEMO as of timestamp to_timestamp(‘2022-04-02 16:30:11',‘yyyy-mm-dd hh24:mi:ss');

Récupérez les données de la table demo1 dans la table demo

insert into DEMO select * from DEMO1 where not exists (select * from DEMO where DEMO.id=DEMO1.id);

Recovery 4 (récupération basée sur sur scn):

Interrogez le numéro scn actuel

select current_scn from v$database;

Réduisez le numéro scn d'un certain montant et exécutez l'instruction jusqu'à ce que nous puissions voir les données que nous avons supprimées

select * from DEMO as of scn 166937913;

Utilisez le numéro scn approprié et exécutez l'instruction SQL pour la récupération de données

flashback table DEMO to scn 166937913;
Tutoriel recommandé : " Tutoriel vidéo Oracle

》🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer