阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle 误删除表的几种恢复方法

207次阅读
没有评论

共计 1363 个字符,预计需要花费 4 分钟才能阅读完成。

在删除 Oracle 数据的时候不小心,把 delete 语句执行错了,把别的表给 delete,而且还执行了 commit!那么如何进行恢复呢,下面介绍几种恢复方法。
第一种:

1. 打开 Flash 存储的权限
ALTER TABLE tableName ENABLE row movement ;
2. 把表还原到指定时间点
flashback table tableName to timestamp to_timestamp(”2018-03-16 10:40:00”,”yyyy-mm-dd hh24:mi:ss”);
后面的参数为要还原的时间点

第二种:利用 ORacle 的快照进行查找某个时间点的数据
select * from tableName AS OF TIMESTAMP  (SYSTIMESTAMP – INTERVAL ‘100’ MINUTE)

select * from tableName as of timestamp to_timestamp(‘2018-03-16 11:40:00′,’YYYY-MM-DD HH24:MI:SS’);

这样可以查询到指定的时间段的数据,再把查询到的数据复制到原来的表中。

第三种:其他

删除表后,可以采用如下操作:在 查询表 user_recyclebin 最近操作过的表名称,然后用闪回(只能用于 10G 及以上版本)。

select * from user_recyclebin;

FLASHBACK TABLE TABLE_NAME TO BEFORE DROP;

如果是删了或修改里面的数据,可以先建立一个快表将删除修改之前状态的数据找回到这个表中:

CREATE TABLE QUICK_TABLE AS SELECT * FROM TABLE_NAME AS OF TIMESTAMP SYSTEM-1/24 (一小时前的),减去的时间可以自己定。

第四:通过 SCN 实现

SCN(系统改变号),它的英文全拼为:System Change Number,它是数据库中非常重要的一个数据结构。

SCN 提供了 Oracle 的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重要的
注释:Oracle 仅根据 SCN 执行恢复。
它定义了数据库在某个确切时刻提交的版本。在事物提交时,它被赋予一个唯一的标示事物的 SCN。一些人认为 SCN 是指,System Commit Number,而通常 SCN 在提交时才变化,所以很多情况下,这两个名词经常被交替使用。
究竟是哪个词其实对我们来说并不是最重要的,重要的是我们知道 SCN 是 Oracle 内部的时钟机制,Oracle 通过 SCN 来维护数据库的一致性,并通过 SCN 实施 Oracle 至关重要的恢复机制。
1:执行下面语句,将删除时间转换为 scn

select timestamp_to_scn(to_timestamp(‘2018-03-16 10:00:00′,’YYYY-MM-DD HH:MI:SS’)) from dual;
结果:11837812:在将 table 的 scn 点取出来。

select * from moAS OF SCN 11837813;

最后把查出来得结果 insert 到原表中

insert into mo select * from mo AS OF SCN 1183781

更多 Oracle 相关信息见Oracle 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=12

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1363字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中