Maison > base de données > Oracle > le corps du texte

Trois méthodes pour récupérer rapidement une base de données Oracle supprimée accidentellement

WBOY
Libérer: 2022-06-01 21:16:10
avant
7355 Les gens l'ont consulté

Cet article vous apporte des connaissances pertinentes sur Oracle, qui présente principalement les problèmes liés à la suppression accidentelle de données dans la base de données Oracle et comment restaurer rapidement les données sans tenir compte de la sauvegarde complète de la base de données et de l'utilisation des journaux d'archivage. ensemble, j'espère que cela sera utile à tout le monde.

Trois méthodes pour récupérer rapidement une base de données Oracle supprimée accidentellement

Tutoriel recommandé : "Tutoriel vidéo Oracle"

Les données de la base de données Oracle sont accidentellement supprimées. Comment restaurer rapidement les données sans tenir compte de la sauvegarde complète de la base de données et de l'utilisation des journaux d'archives ?

Voici 3 méthodes.

1. Utilisez la méthode flashback fournie par Oracle pour la récupération de données, qui convient à la méthode de suppression par suppression

Obtenez d'abord le point temporel des données supprimées :

select * from v$sql where sql_text like '%table_name%' ;
1
Copier après la connexion

Selon le contenu sql_text dans le résultat, recherchez deleteExécutez le sql_text内容,找到delete执行语句对应的删除时间点,执行下面语句查询出删除的数据。

select * from table_name as of timestamp to_timestamp(‘删除时间点’,‘yyyy-mm-dd hh24:mi:ss’)
where (删除时的条件)
12
Copier après la connexion

检查数据无误后,执行下面操作,将数据插回原表中。注意主键不重复

insert into table_name
select * from from table_name as of timestamp to_timestamp(‘删除时间点’,‘yyyy-mm-dd hh24:mi:ss’)
where (删除时的条件)
123
Copier après la connexion

2. 利用oracle虚拟回收站功能

原理是因为oracle数据库在删除表时会将删除信息存放于某虚拟回收站中而非直接清空,在此种状态下数据库标记该表的数据库为可以复写,所以在该块未被重新使用前依然可以恢复数据。该方法多用于drop删除。

首先查询user_table视图,找到被删除的表:

select table_name,dropped from user_tables;
select object_name,original_name,type,droptime from user_recyclebin;
12
Copier après la connexion

注意此时的,object_nameoriginal_name就是回收站存放的表名和原来删除的表名,如果表名没有被重新命名,可以通过下面语句进行恢复:

flashback table original_name to before drop;
1
Copier après la connexion

如果不知道源表名,或者需要重新命名新的表名存放数据,则可以通过回收站中的object_name进行恢复,命令如下:

flashback table object_name to before drop new_table_name;
1
Copier après la connexion

3. 用oracle数据库的闪回功能可以将数据库恢复到过去某一状态

注意,此时是整库恢复,具体语法如下:

SQL>alter database flashback on
SQL>flashback database to scn SCNNO;
SQL>flashback database to timestamp to_timestamp(‘frombyte 2021-09-02 23:59:59’,‘yyyy-mm-dd hh24:mi:ss’);
123
Copier après la connexion

4. 彻底删除数据

如果确定需要删除的数据又不想无谓的占用空间,我们可以使用以下3种方式:

  1. 采用truncate方式进行截断。(不能进行数据回恢复)
  2. 在drop时加上purge选项:drop table table_name purge
  3. 通过删除recyclebin区域来永久性删除表 ,drop table table_name cascade constraints purge table table_name;

5. 关于清空回收站

  1. 删除当前用户回收站

    purge recyclebin;

  2. 删除全体用户在回收站的数据

    purge dba_recyclebin;point temporel de suppression

    correspondant à l'instruction et exécutez l'instruction suivante pour interroger les données supprimées.
  3. rrreee
Après avoir vérifié que les données sont correctes, effectuez les opérations suivantes pour réinsérer les données dans la table d'origine.

Faites attention au fait que la clé primaire n'est pas répétéerrreee

2. Utilisez la fonction de corbeille virtuelle Oracle🎜🎜🎜Le principe est que lorsque la base de données Oracle supprime une table, elle stockera les informations de suppression dans un fichier. 🎜corbeille🎜 virtuelle au lieu de l'effacer directement. Ici Dans cet état, la base de données marque la table comme 🎜peut être écrasée🎜, de sorte que les données peuvent toujours être récupérées avant que le bloc 🎜ne soit réutilisé. Cette méthode est principalement utilisée pour la suppression 🎜drop. 🎜🎜🎜Interrogez d'abord la vue user_table pour trouver la table supprimée : 🎜rrreee🎜Notez qu'à ce stade, object_name et original_name sont stockés dans la corbeille Le nom de la table et le nom de la table d'origine supprimée Si le nom de la table n'a pas été renommé, vous pouvez le restaurer via l'instruction suivante : 🎜rrreee🎜Si vous ne connaissez pas le nom de la table source, ou si vous devez renommer la table. nouveau nom de table pour stocker les données, vous pouvez utiliser la corbeille object_name pour restaurer, la commande est la suivante : 🎜rrreee🎜🎜3 Utilisez la fonction flashback de la base de données oracle pour restaurer la base de données. un certain état dans le passé 🎜🎜🎜Notez qu'il s'agit de 🎜la récupération complète de la base de données 🎜, la syntaxe spécifique est la suivante : 🎜rrreee🎜🎜4 Supprimez complètement les données 🎜🎜🎜Si vous êtes sûr que les données doivent être supprimées. et que vous ne voulez pas occuper de l'espace inutilement, nous pouvons utiliser les 3 méthodes suivantes : 🎜
  1. Utilisez la méthode tronquée. (La récupération des données n'est pas possible) 🎜
  2. Ajouter l'option de purge lors du dépôt : drop table table_name purge🎜
  3. Supprimer définitivement la table en supprimant la zone recyclebin, drop table table_name contraintes en cascade purge table table_name;🎜🎜🎜🎜5 À propos de vider la corbeille🎜🎜
    1. 🎜Supprimer la corbeille de l'utilisateur actuel🎜🎜purger la corbeille ; 🎜🎜<li>🎜Supprimez toutes les données utilisateur de la corbeille🎜🎜<code>purge dba_recyclebin;🎜🎜🎜🎜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!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal