嘿,小伙伴们!今天咱们聊聊Oracle数据库里怎么找回不小心删掉的数据,说白了就是“后悔药”!
你有没有过那种,手一抖,一不小心把数据库表里重要的数据给删了,然后就慌得一批?别怕,Oracle数据库里的“后悔药”可不是一般的药,它有两种,一种叫“闪回查询”,另一种叫“闪回表”,就好像“后悔药”有两个版本,一个让你后悔的时间短点,一个让你后悔的时间长点。
咱们先来了解一下“闪回查询”。这货就像个时间机器,可以让你回到过去,看看数据在那个时间点的样子。比如,你删除数据之前,你记得数据是什么样的,就可以用“闪回查询”回到那个时间点,看看数据是不是和你记得的一样。
sql
select from AT_PP_WORKINSTRUCTION as of timestamp to_timestamp('2018-09-28 11:30:00', 'yyyy-mm-dd hh24:mi:ss')
where Inst_Name_s like 'GL6%';
再来看看“闪回表”。这货就厉害了,它可以让你把整个表恢复到之前某个时间点的状态。就像把表的时间拨回到过去,恢复到删除数据之前的样子。
sql
flashback table '需要恢复的表名' to before drop
但是,使用“闪回表”有个前提,就是你之前要开启了“闪回日志记录”。
说白了,这两兄弟的区别就是:
| 方法 | 特性 |
|---|---|
| 闪回查询 | 查询过去表版本,要求启用了闪回日志记录 |
| 闪回表 | 恢复整个表到之前时间点的状态,要求启用了闪回日志记录 |
简单来说,如果你是想看看数据在某个时间点是什么样的,用“闪回查询”就行了。如果你是想把整个表恢复到之前某个时间点的状态,就用“闪回表”。
不过,这两个“后悔药”也有一些限制。比如,如果你的数据库没有开启“闪回日志记录”,那就只能吃“后悔药”了。
还有,你得确定下删除数据的时间点,如果不确定准确的时间,也可以用你知道的数据删除之前的时间点。不过,这样的话,你使用的时间和你删除数据的时间点之间如果数据不一致,可能导致你找回的数据不全。
所以,小伙伴们,下次遇到误删数据的时候,别慌,先看看“闪回查询”和“闪回表”这两个“后悔药”哪个适合你。
当然,预防胜于治疗,平时多备份数据,就可以少吃点“后悔药”了,你说是不是?
你有没有遇到过误删数据的经历?你是怎么解决的?快来分享一下吧!
*请认真填写需求信息,我们会在24小时内与您取得联系。