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.
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.
Obtenez d'abord le point temporel des données supprimées :
select * from v$sql where sql_text like '%table_name%' ; 1
Selon le contenu sql_text
dans le résultat, recherchez delete
Exécutez le sql_text
内容,找到delete
执行语句对应的删除时间点,执行下面语句查询出删除的数据。
select * from table_name as of timestamp to_timestamp(‘删除时间点’,‘yyyy-mm-dd hh24:mi:ss’) where (删除时的条件) 12
检查数据无误后,执行下面操作,将数据插回原表中。注意主键不重复
insert into table_name select * from from table_name as of timestamp to_timestamp(‘删除时间点’,‘yyyy-mm-dd hh24:mi:ss’) where (删除时的条件) 123
原理是因为oracle数据库在删除表时会将删除信息存放于某虚拟回收站中而非直接清空,在此种状态下数据库标记该表的数据库为可以复写,所以在该块未被重新使用前依然可以恢复数据。该方法多用于drop删除。
首先查询user_table
视图,找到被删除的表:
select table_name,dropped from user_tables; select object_name,original_name,type,droptime from user_recyclebin; 12
注意此时的,object_name
和original_name
就是回收站存放的表名和原来删除的表名,如果表名没有被重新命名,可以通过下面语句进行恢复:
flashback table original_name to before drop; 1
如果不知道源表名,或者需要重新命名新的表名存放数据,则可以通过回收站中的object_name
进行恢复,命令如下:
flashback table object_name to before drop new_table_name; 1
注意,此时是整库恢复,具体语法如下:
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
如果确定需要删除的数据又不想无谓的占用空间,我们可以使用以下3种方式:
drop table table_name purge
recyclebin
区域来永久性删除表 ,drop table table_name cascade constraints purge table table_name;
删除当前用户回收站
purge recyclebin;
删除全体用户在回收站的数据
purge dba_recyclebin;
point temporel de suppression
Faites attention au fait que la clé primaire n'est pas répétéerrreee
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 : 🎜drop table table_name purge
🎜recyclebin
, drop table table_name contraintes en cascade purge table table_name;
🎜🎜🎜🎜5 À propos de vider la corbeille🎜🎜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!