美文网首页
Oracle数据误删了怎么恢复

Oracle数据误删了怎么恢复

作者: 舟可度 | 来源:发表于2018-08-23 12:03 被阅读0次

1.最好一定要执行删除之前先备份数据,这是最安全的办法。

2.如果真的不小心误删了数据,还有最后一个办法,不过不一定能成功,下面是从网上找的方法,我是执行delete误删的,发现可以,其他方式没试过,看着也比较麻烦,所以最好不要到这种地步。

今天在操作数据库的时候,发现数据操作错误,想要恢复,但是没有用事务,按理说,设置成不默认提交事务,此时所做的各种操作都没有反应到数据库中。这时,你可以rollback事务,撤销所有未提交的修改。不过,一旦commit了的话,就真没办法撤销了。好在oracle还有时间戳方法。

第一种方法:

1.打开Flash存储的权限

ALTER TABLE tablename ENABLE row movement ;

2.把表还原到指定时间点

flashback table tablename to timestamp to_timestamp(''2011-02-28 10:40:00'',''yyyy-mm-dd hh24:mi:ss'');

后面的参数为要还原的时间点

第二种:利用ORacle的快照进行查找某个时间点的数据

select * from tablename AS OF TIMESTAMP  (SYSTIMESTAMP - INTERVAL '100' MINUTE)

or

select * from tablename as of timestamp to_timestamp(2011-05-21 11:40:00','YYYY-MM-DD HH24:MI:SS');

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

例:

如果我们在前5分钟误删除了表emp中的数据,我们可以进行如下操作:

找回原始数据

Select * from emp as of timestamp sysdate  -  6/1440

删除原来的表   删掉后创建一个备份表

Create table emp as (select * from emp as of timestamp sysdate - 6/1440);

可以做差,找到删除的记录=6分钟前的原始数据—现在表中的记录 再插入原来的表中提交

Insert into emp 

Select * From

(

select * From emp as of timestamp sysdate - 6/1440 Minus Select * from emp)

--timestamp(ags) 方法

--interval(时间间隔)类型用来存储两个时间戳之间的时间间隔

--当要回复被删除的数据的时候

--查询500分钟之前的数据

select * from emp as of timestamp(systimestamp - interval '500' minute)

--查询600秒之前的数据

select * from emp as of timestamp(systimestamp - interval '600' second)

--查询5小时之前的数据

select * from emp as of timestamp(systimestamp - interval '5' hour)

--查询一天之前的数据

select * from emp as of timestamp(systimestamp - interval '1' day)

--查询1分钟前的数据 (1天=1440分钟) date-number=date

select * from emp as of timestamp sysdate - 1/1440

--查询5小时前的数据

select * from emp as of timestamp sysdate - 5/24

--查询 5小时内数据=内前删除的5小时前表中的数据-现在表中的数据

--minus减去

select * from

(select * from emp as of timestamp sysdate -5000/1440 minus select * from emp)

从9i开始,oracle提供了闪回(flashback)功能。使用flashback table语句从撤销段中(undo segmeng)读取改表的过去映像,同时利用oracle9i中引入的回闪查询功能重建表行。Undo_retention给出了回闪支持的最小时间。也就是说flashback最少可以支持undo_retention给出的时间,如果系统比较闲,则可以回闪更长的时间。如果系统处于忙时,有可能重用还没有达到undo_retention时间吸纳是的数据空间。注意:使用闪回的一个前提是表不能进行ddl操作,不但不能对ddl操作进行回闪,而且,无法闪回到ddl操作以前的数据了。

注意:不启动行移动功能,不能闪回表

Alter table emp enable row movement;

这个命令的作用就是允许ORACLE修改分配给行的rowid。在ORACLE中,插入一行时就会为它分配一个rowid,而且这一行永远拥有这个rowid。闪回表处理时会对EMP表完成DELETE 操作,并且重新插入行,这样就会为这些行分配一个新的rowid。要支持闪回功能就必须允许ORACLE执行这个操作。

这种方式,最好误删之后的这段时间被误删的表没有再被操作过,不然就找不回来了,因为磁盘已经被覆盖了。

相关文章

  • Oracle数据误删了怎么恢复

    1.最好一定要执行删除之前先备份数据,这是最安全的办法。 2.如果真的不小心误删了数据,还有最后一个办法,不过不一...

  • 2020-11-28

    oracle误delete或update数据还原(恢复)方法记录 对于我这种大马虎,误删除数据倒不会,但是误更新数...

  • 手机小技巧,怎么恢复手机里删除的图片

    怎么恢复手机里删除的图片 相册照片不小心删了怎么恢复?怎样恢复手机删除的照片?手机照片是十分重要的数据,大家...

  • Oracle数据恢复

    测试库数据被我清空了,由于没有备份过,搞基础数据很麻烦(数据版本新于验收/生产),数据没备份真的很坑啊~ 然后看下...

  • Oracle 数据恢复

    恢复表数据 flashback与undo

  • 如果我们平时误误删了ppt怎么恢复?

    ppt是常见的办公文稿演示软件,这很多场合都可以被我们使用到。说它是一款办公软件,可以见到这个软件对于我们来说是有...

  • 2018-11-23

    短信误删了怎么恢复,超级简单的恢复方法 短信误删了怎么恢复?随着时代的发展,越来越多的人都使用上手机了,以前家里只...

  • Oracle数据库备份/恢复、UCACHE企业级云灾备

    使用UCACHE灾备云进行Oracle实时复制数据、搬迁数据功能来设计Oracle数据库备份/恢复解决方案,支持定...

  • Oracle数据误删恢复

    数据恢复 拓展 设置历史留存时间

  • oracle恢复数据

    假如自己在某个时刻删除了表的信息,下列语句可以回复都该表某个时刻的数据 alter table 表名 enable...

网友评论

      本文标题:Oracle数据误删了怎么恢复

      本文链接:https://www.haomeiwen.com/subject/pqvpiftx.html