Oracle数据库恢复删除数据的方法

误删oracle数据库中的数据,在不考虑全库备份和利用归档日志情况,怎样快速恢复数据呢?

下面介绍3种方法。

1. 利用oracle提供的闪回方法进行数据恢复,适用于delete删除方式

首先获取删除数据的时间点:

select * from v$sql where sql_text like '%table_name%' ;

根据结果中的sql_text内容,找到delete执行语句对应的删除时间点,执行下面语句查询出删除的数据。

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

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

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

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

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

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

select table_name,dropped from user_tables;
select object_name,original_name,type,droptime from user_recyclebin;

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

flashback table original_name to before drop;

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

flashback table object_name to before drop new_table_name;

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’);

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;

  • 17
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Oracle数据库中,有几种方法可以用来恢复数据。其中一种方法是使用闪回功能。通过使用闪回功能,可以将数据库恢复到过去的某个状态。可以使用以下语法来实现闪回功能:\[1\] ``` SQL> alter database flashback on; SQL> flashback database to scn SCNNO; SQL> flashback database to timestamp to_timestamp('2007-2-12 12:00:00','yyyy-mm-dd hh24:mi:ss'); ``` 另一种方法是使用export/import工具进行逻辑备份和恢复。这个工具适用于数据量不大、业务量不多的数据库系统。通过使用export工具进行逻辑备份,可以将数据库数据导出到一个文件中。当数据库发生意外崩溃时,可以使用import工具将备份的数据导入到数据库中,从而恢复数据。需要注意的是,如果在备份和崩溃之间有数据修改操作(包括DDL和DML),这些操作将会丢失。因此,对于那些数据相对稳定的表,可以使用import工具来恢复数据。对于经常变化的业务表,丢失的数据可能需要从其他途径进行恢复。\[2\] 此外,Oracle还提供了闪回查询(Flashback Query)功能。这个功能可以用于恢复删除或误更新并已经提交的数据。在Oracle提供闪回查询之前,恢复这种情况只能通过备份或使用logmnr挖掘日志来进行,而这些方法相对繁琐且耗时。闪回查询提供了一种简便快捷的恢复方法。\[3\] #### 引用[.reference_title] - *1* [Oracle数据库 - 数据恢复](https://blog.csdn.net/weixin_44773109/article/details/126674741)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Oracle数据库数据丢失恢复的几种方法总结](https://blog.csdn.net/weixin_33861800/article/details/92139267)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值