转载自 oracle误删除数据的恢复方法

今天主要以oracle数据库为例,介绍关于表中数据删除的解决办法。(不考虑全库备份和利用归档日志)
删除表中数据有三种方法:
·delete(删除一条记录)
·drop或truncate删除表格中数据

1.delete误删除的解决方法
原理:

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

*确定删除数据的时间(在删除数据之前的时间就行,不过最好是删除数据的时间点)

*用以下语句找出删除的数据:select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss')

*把删除的数据重新插入原表:

insert into 表名 (select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss'));注意要保证主键不重复。

如果表结构没有发生改变,还可以直接使用闪回整个表的方式来恢复数据。

具体步骤为:

表闪回要求用户必须要有flash any table权限

 --开启行移动功能 

·alter table 表名 enable row movement

--恢复表数据
 ·flashback table 表名 to timestamp to_timestamp(删除时间点','yyyy-mm-dd hh24:mi:ss')

--关闭行移动功能 ( 千万别忘记 )

·alter table 表名 disable row movement

2.drop误删除的解决方法

原理:由于oracle在删除表时,没有直接清空表所占的块,oracle把这些已删除的表的信息放到了一个虚拟容器“回收站”中,而只是对该表的数据块做了可以被覆写的标志,所以在块未被重新使用前还可以恢复。

具体步骤:

*查询这个“回收站”或者查询user_table视图来查找已被删除的表:

· select table_name,dropped from user_tables

· select object_name,original_name,type,droptime from user_recyclebin

在以上信息中,表名都是被重命名过的,字段table_name或者object_name就是删除后在回收站中的存放表名

*如果还能记住表名,则可以用下面语句直接恢复:

flashback table 原表名 to before drop

如果记不住了,也可以直接使用回收站的表名进行恢复,然后再重命名,参照以下语句:

flashback table "回收站中的表名(如:Bin$DSbdfd4rdfdfdfegdfsf==$0)" to before drop rename to 新表名

oracle的闪回功能除了以上基本功能外,还可以闪回整个数据库:

使用数据库闪回功能,可以使数据库回到过去某一状态, 语法如下:

SQL>alter database flashback on
SQL>flashback database to scn SCNNO;
SQL>flashback database to timestamp to_timestamp('2007-2-12 12:00:00','yyyy-mm-dd hh24:mi:ss');

总结:
oracle提供以上机制保证了安全操作,但同时也代来了另外一个问题,就是空间占用,由于以上机制的运行,使用drop一个表或者delete数据后,空间不会自

动回收,对于一些确定不使用的表,删除时要同时回收空间,可以有以下2种方式:

1、采用truncate方式进行截断。(但不能进行数据回恢复了)

2、在drop时加上purge选项:drop table 表名 purge

该选项还有以下用途:

也可以通过删除recyclebin区域来永久性删除表 ,原始删除表drop table emp cascade constraints
   purge table emp;
   删除当前用户的回收站:
    purge recyclebin;
   删除全体用户在回收站的数据:

purge dba_recyclebin

来源:原创网站北京北亚数据恢复中心,转载须注明出处。

Oracle入门(十二I)之误删除数据的恢复方法相关推荐

  1. php删除sql server 2008,MSSQL_SQL Server2008 数据库误删除数据的恢复方法分享,SQL Server中误删除数据的恢复本 - phpStudy...

    SQL Server2008 数据库误删除数据的恢复方法分享 SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可.但是,这个恢复需要有两个前提条件: 1. 至少有一个误删除之前的 ...

  2. 服务器删除了数据库 怎么恢复数据库文件夹,SQL Server2008 数据库误删除数据的恢复方法分享...

    SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可.但是,这个恢复需要有两个前提条件: 1. 至少有一个误删除之前的数据库完全备份. 2. 数据库的恢复模式(Recovery m ...

  3. SQL Server2008 数据库误删除数据的恢复方法分享[转]

    SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可.但是,这个恢复需要有两个前提条件: 1. 至少有一个误删除之前的数据库完全备份. 2. 数据库的恢复模式(Recovery m ...

  4. Oracle误删除数据的恢复方法

    Oracle误删数据的恢复,分为两种方法:SCN和时间戳两种方法恢复. 一.通过SCN恢复删除且已提交的数据 1.获得当前数据库的SCN号 select current_scn from v$data ...

  5. oracle误删除一条数据库,Oracle误删除数据的恢复方法

    Oracle误删数据的恢复,分为两种方法:SCN和时间戳两种方法恢复. 一.通过SCN恢复删除且已提交的数据 1.获得当前数据库的SCN号 select current_scn from v$data ...

  6. Oracle误删除数据的恢复方法(转)

    来源:原创网站北京北亚数据恢复中心,转载须注明出处. 学习数据库时,我们只是以学习的态度,考虑如何使用数据库命令语句,并未想过工作中,如果误操作一下,都可能导致无可挽回的损失.当我在工作中真正遇到这些 ...

  7. oracle误删了表怎么恢复数据,oracle误删除表或者表数据的恢复方法总结

    --一.误删除表的恢复方法 --查询这个"回收站"或者查询user_table视图来查找已被删除的表: select table_name,dropped from user_ta ...

  8. 网络编程懒人入门(十二):快速读懂Http/3协议,一篇就够!

    本文中文译文由作者"ably.io"发布于公众号"高可用架构",译文原题:<深入解读HTTP3的原理及应用>.英文原题:<HTTP/3 dee ...

  9. IM开发者的零基础通信技术入门(十二):上网卡顿?网络掉线?一文即懂!

    [来源申明]本文引用了微信公众号"鲜枣课堂"的<上网慢?经常掉线?这篇文章告诉你该怎么办!>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注 ...

最新文章

  1. R卡方检验(CHI-SQUARE TEST)
  2. [现代操作系统] 考前突击
  3. 九背包上的发言稿_01背包
  4. OpenGL 基于PBR的specular textured 镜面纹理的实例
  5. python requests发送websocket_Pywss - 用python实现WebSocket服务端
  6. Spring配置中的bean直接引用其它bean的属性值
  7. mysql密码加强_MySQL密码增强插件
  8. wpf window 不执行show 就不能load执行_关于机器学习中的Scikit-Learn,你不知道的10个实用功能...
  9. 电脑排行榜笔记本_热门笔记本电脑排行榜推荐_windows7教程
  10. php 二维数组 根据值 找,PHP编程根据二维数组某个字段的值查找值所在的一维数组...
  11. 苹果mac视频和字幕下载软件:Downie
  12. 一个不到300行的C语言打飞机游戏
  13. 霍纳法则(Horner Rule)--计算多项式的值
  14. anaconda3更新后,菜单栏中没有Anaconda Promt
  15. NanoPi-K2 控制GPIO
  16. 南京大学文博专业考研上岸经验分享
  17. 32个Python爬虫项目让你一次吃到撑
  18. 网络安全需要看什么书?(网安工程师)?
  19. Android常见设计模式——观察者模式 (Observer Pattern)
  20. 【汇正财经】股权结构是如何形成的?

热门文章

  1. 『软件工程13』浅谈面向对象方法,统一建模语言UML
  2. xml可以html标签吗,自定义html标签(XML)
  3. [Java基础]类和接口的关系
  4. C++ class实现邻接表存储的图(完整代码)
  5. 《C++ Primer》14.4节练习(部分)
  6. php怎么上传函数,PHP单文件上传原理及上传函数的封装操作示例
  7. Java引用类型——强引用、软引用、弱引用和虚引用
  8. MySQL中存在索引但不能索引的经典场景(笔记)
  9. P2178-[NOI2015]品酒大会【SA,并查集】
  10. jzoj4252-QYQ的图【dfs】