Oracle数据库中对误删数据的快速恢复「建议收藏」

Oracle数据库中对误删数据的快速恢复「建议收藏」采用闪回技术对误删除的数据进行恢复。

大家好,又见面了,我是你们的朋友全栈君。

如果一不小心对Oracle数据库中的数据进行了误删除操作,那么如何进行数据恢复呢(不考虑全库备份和利用归档日志)?如果使用的是9i以及之后的版本,那么我们可以采用闪回技术对误删除的数据进行恢复。方式有两种。

原理:
利用oracle提供的闪回方法,如果在删除数据后还没做大量的操作(只要保证被删除数据的块没被覆写),就可以利用闪回方式直接找回删除的数据。

*确定删除数据的时间(在删除数据之前的时间就行,不过最好是删除数据的时间点)。
*用语句找出删除的数据。
*把删除的数据重新插入原表。

方式1:基于时间戳的数据恢复 as of timestamp

1、首先要查询到系统的当前时间,必须以系统时间的时间戳为基准。

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

2、查询当前系统时间20分钟前的数据。SYSDATE是系统函数,用来取得当前的系统时间(以天为单位),SYSDATE-20/1440,得出的就是距当前时间20分钟前的记录了(60*24=1440)。

select * from 表名 as of timestamp sysdate-20/1440;

3、将20分钟前的数据重新插回表中(注意不要存在相同的主键)。由于在时间上的不准确,可能会导致恢复的数据中包括了一些已经在表中的数据。这就会引起主键不唯一的冲突,为了避免这样冲突,建议将步骤2的数据恢复到新表中。

**恢复到原来的表**
insert into 表名 (select * from 表名 as of timestamp sysdate-20/1440 );

**恢复到新表**
create table 新表名
as select * from 误操作的表
as of timestamp sysdate-20/1440 ;时间点

注意:
AS OF TIMESTAMP方式的使用非常方便,但是在某些情况下,我们建议使用AS OF SCN的方式执行Flashback Query。如需要对多个相互有主外键约束的表进行恢复时,如果使用AS OF TIMESTAMP的方式,可能会由于时间点不统一的缘故造成数据选择或插入失败,通过AS OF SCN方式则能够确保记录处理的时间点一致。

方式2:基于SCN的数据恢复 as of scn

1、获得当前数据库的scn号,查询到的scn号为:1499223

 select current_scn from v$database; (切换到sys用户或system用户查询) 

2、查询当前scn号之前的scn

select * from 表名 as of scn 1499220; (确定删除的数据是否存在,如果存在,则恢复数据;如果不是,则继续缩小scn号)

3、恢复删除且已提交的数据

flashback table 表名 to scn 1499220;

参考链接

  • http://www.cnblogs.com/kangxuebin/archive/2013/05/29/3106183.html
  • http://www.cnblogs.com/hqbhonker/p/3977200.html
  • http://blog.csdn.net/itdada/article/details/52746392
  • http://blog.csdn.net/zhouwubin123/article/details/6617837
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160793.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月17日 上午11:16
下一篇 2022年7月17日 上午11:36


相关推荐

  • discrete

    discrete

    2022年3月12日
    59
  • 分析谷歌收购摩托罗拉无线对移动产业带来的影响

    分析谷歌收购摩托罗拉无线对移动产业带来的影响小记 收购第二天和范凯同学的对谈 整理成文字分享给大家 Google 为何收购摩托罗拉移动 蒋涛 最主要的是购买专利 在北电专利拍卖竞购中 Google 曾经出价 31 4 亿美元 而 Google 收购摩托罗拉的专利数现在披露出来的有 17000 个 还有 7500 个专利在审批中 所以通过这次

    2026年3月26日
    3
  • BEC translation exercise 7

    BEC translation exercise 7

    2022年3月12日
    39
  • navicat12注册机生成相应注册码

    navicat12注册机生成相应注册码转自:http://blog.sina.com.cn/s/blog_1885d23df0102yjw9.html navicat注册机是针对nacicat公司开发的软件而制作的一款激活工具,能够生成相对应的注册码和激活码,不仅能够支持激活nacicat11系列软件,同时可以激活nacicat12系列软件,具体可以激活navicat12formysql、navicat12fo…

    2022年10月13日
    7
  • 25.构造ICMP数据包

    25.构造ICMP数据包ICMP 协议可以用来对目标主机发送 ICMP 数据包 判断目标主机是否启用 正常情况下 ICMP 请求包报文中的类型值为 8 代码值为 0 ICMP 响应包报文中的类型值为 0 代码值为 0 用户可以使用 netwox 工具的编号 65 的模块构造 ICMP 数据包 并对目标主机进行扫描 实例 在主机 192 168 59 132 上 构造 ICMP 数据包 判断目标主机 192 168 59 135 是否启用 1 构造 ICMP 扫描 执行命令如下 root daxueba net

    2026年3月19日
    2
  • 郎凤娥:山西蓝天开启清洁用煤的方式

    郎凤娥:山西蓝天开启清洁用煤的方式郎凤娥 山西蓝天开启新的用煤方式在煤炭资源丰富的山西省 发展新型煤粉锅炉对于加强对资源的集约 持续利用 以及经济增长方式的转变 都有着典型的意义 虽然煤炭资源丰富 但在对这一资源展开利用时 山西省也面临着随之而来的环境问题 有统计数据显示 目前山西省煤炭用能污染物排放量处于全省工业行业第二位 仅次于电站锅炉 这一问题与燃煤工业锅炉的使用不无关联 燃煤工业锅炉以链条层燃炉为主 目前主要用于

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号