Oracle数据库 数据表DELETE删除数据并提交,如何处理
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了(不同电脑,只能手打)