Maison > Article > base de données > Comment récupérer après avoir accidentellement supprimé des données de table dans l'analyse de l'instance Oracle
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.
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 ;
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 suivanteselect * 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 RestoreSi 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!