orale表删除并提交后的补救措施

本文详细介绍了在Oracle数据库中不小心删除数据后的恢复步骤。首先,通过查询v$database获取当前SCN号,然后利用sysdate获取系统时间。接着,启用数据表的行移动功能,并使用数据闪回查询特定时间点的数据。最后,将查询结果导出并重新插入到表中,实现数据恢复。注意,操作需谨慎,避免数据丢失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.场景介绍

一开始啊,我也没想delete把表删了,开始的时候我项目组长还说删了表无所谓,别删了后还提交了。我还无所谓的说不会删了。结果!!
我鼠标把sql语句包起来的时候,没把where条件加上,直接执行了【恩,没错,delete了整个表】,然后我还没注意到我没把条件括进去就点了提交,wtf

2.解决方式

看到了两种,结果有一种没看懂那是什么符号还是撒名字的意思就放弃了,换另一种

2.0 一开头我就蒙了

获得当前数据库的scn号
select current_scn from v$database; (切换到sys用户或system用户查询) 

这个v$database的v $是撒哦,有没有大佬指点我下

这是原文档位置 : https://www.cnblogs.com/xielong/p/11239939.html.

2.1首先查询当前数据库时间

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual

查出来系统当前日期时间

2.2查询数据表在这个时间的数据

 select * from 表名 as of timestamp
 to_timestamp('这个时间就是你随便输一个时间','yyyy-mm-dd hh24:mi:ss')
  • 虽说随便输一个时间,但是要跟第一条sql语句查出来的时间靠近,因为这是时间段范围【你输入的时间,yyyymmd(系统当前时间)】
  • 查询这个表在这个时间段內的数据

2.2.1开启数据表闪回功能

   alter table 表名 enable  row movement;

2.2.2数据闪回

flashback table 表名 to timestamp to_timestamp('2017-07-04 11:10:00','yyyy-mm-dd hh24:mi:ss');

2.3我直接把2.2查出来的数据导出,然后插入回去了

主要我懒得在打剩下两条sql了(不同电脑,只能手打)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值