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

转载自 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


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329491.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle入门(七A)之表空间配额(quota)

转载自 oracle表空间配额(quota)一、quota相关视图 1)dba_ts_quotas(查看所有用户的表空间配额) BYTES字段表示用户已经使用的空间;MAX_BYTES如果为-1表示没有限制,其他值表示限制配额 --只有用alter user user_name quota on tab…

python嵌套列表字典_python中嵌套列表转为字典

题目:# 有一组用例数据如下:cases [[case_id, case_title, url, data, excepted],[1, 用例1, www.baudi.com, 001, ok],[4, 用例4, www.baudi.com, 002, ok],[2, 用例2, www.baudi.com, 002, ok],[3, 用例3, www.baudi.com, 002, ok],[5, 用例5, www.ba…

.NET之全平台一体化的体验

一、前言 近来利用空闲时间研究了一下Xamarin的技术,想想既然提供了如此好的支持,就该尝试一切可能,来一个”大小通吃“。 何为全平台:APP包括Android、IOS、WP,WEB可在Window和Linux部署运行(进可攻,退可守…

11.cpu调度策略与schedule调度函数

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐; 2.cpu调度: 指的是 cpu从就绪队列中选择一个进程来执行;选择哪一个进程是调度算法的执行结果; 3. 相关定义&…

Oracle入门(十二)之SQL的DDL

一、数据类型 Character 数据类型Number 数据类型Date 数据类型Raw 和 Long Raw 数据类型 LOB 数据类型 注:Oracle数据类型详解二、表 (1)创建表 create table emp ( emp_id char (10) primary key, emp_name varchar2 (30), sal number (…

2016微软开发者峰会在京举办 纳德拉要来做演讲

还有不到一个月的时间,2016 微软开发者峰会就要在北京举办了。 在这场开发者的盛会上,微软 CEO、技术牛人,还有来自微软亚洲研究院、亚太研发集团、Xamarin 团队以及微软中国开发体验的专家们将对各平台的开发进行技术探讨。 据了解&#xff…

centos 卸载ffmpeg_Linux下ffmpeg的完整安装

最近在做一个企业项目, 期间需要将用户上传的视频转成flv格式或mp4格式并用flash插件在前端播放, 我决定采用ffmpeg (http://www.ffmpeg.org/ )实现. 当然以前也用过ffmpeg, 但是没有安装额外的库, 只是源代码下简单地 ./configure, 最后发现好多功能都用不了, 比如最流行的x26…

1.概率论-组合分析

【README】 本文总结自《概率论基础教程》 by M.Ross ,墙裂推荐; 【1.3】排列(考虑顺序) 1)例3d: 用6个字母 PEPPER排列,共有多少种不同的排列方式? 2)推理 对于n个元素,如果其中n1个元素相同,其他n2个元素相同,......,nr个元素也相同,一共有 种不同排列方式;…

Oracle入门(十二B)之表创建

一、创建表(1)简单表 Create Table emp (Emp_id char(10) primary key,Emp_name varchar2(30),Sal number(5),Tel varchar2(20) ); (2)带参数的表格创建 create table emp (emp_id char (10) primary key,emp_name varchar2 (30),…

我的创作纪念日:感恩、感谢、感激!

/bin/bash 机缘 感恩、感谢、感激! 第一次进入到csdn,还是当初老师傅叫我们可以借鉴一下这里的文章 所以! 一开始进入到csdn网站,还以为这里也是和某些贴吧一样,一样的灌水呢! 但是正式在这里书写文章之后&#…

python中seaborn画swarm图_Python可视化 | Seaborn5分钟入门(四)——stripplot和swarmplot

微信公众号:「Python读财」如有问题或建议,请公众号留言Seaborn是基于matplotlib的Python可视化库。 它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易&#xf…

第四篇 Entity Framework Plus 之 Batch Operations

用 Entity Framework 进行 增,删,改。都是基于Model进行的,且Model都是有状态追踪的。这样Entity Framework才能正常增,删,改。 有时候,要根据某个字段,批量更新或者删除数据,用Ent…

2.概率论-概率论公理

【README】 本文总结自《概率论基础教程》 by M.Ross ,墙裂推荐; 【2.2】样本空间和事件 1)样本空间 所有可能的结果构成的集合,称为该实验的样本空间,记为S;2)事件(一个集合,或样本空间的子集) 样本空间的任一子集E称为事件;或样本空间中选取若干个结果构成的集合…

Oracle入门(十二C)之表修改

一、列操作 (1)添加列alter table 表名 add (列名 数据类型 [default 表达式], ..);alter table tableName add temp varchar2(30);(2)修改列A.修改列类型和属性alter table 表名 modify (列名 数据类型 [default 表达式], ..)…

在ThoughtWorks工作12年的技术主管,所总结的12条技术人经验

原文: 12 years, 12 lessons working at ThoughtWorks 作者: Patrick,ThoughtWorks的技术主管兼敏捷顾问 编译: 孙薇 本文作者在ThoughtWorks工作了12年之久, 回顾了往昔工作之后,他得出了12条经验心得&…

3.条件概率与独立性

【README】 本文总结自《概率论基础教程》 by M.Ross ,墙裂推荐; 【3.2】条件概率 1)条件概率定义: 【补充】条件概率计算示例 【3.3】贝叶斯公式 1)通过第2个事件发生与否计算第1个事件的概率(非常重要…

python安装运行时提示不是内部或外部命令怎么办_如何解决cmd运行python提示不是内部命令...

python安装完成后,直接运行python.exe能够正常执行python程序。但是进入到cmd命令窗口(同时按下winr组合键后输入cmd进入),输入python命令提示“不是内部或外部命令”,遇到这种现象通常是没有将python的安装路径添加到环境变量中。在桌面上右…

Oracle入门(十二D)之表删除与删除表数据

一、删除表 drop table 表名; drop table t_userinfo;二、删除表数据 (1)DML操作deletedelete from 表名;(2)DDL操作truncatetruncate table 表名;三、恢复 (1)恢复删除的表 Oracle 10g提供恢复操作 flashb…

.NET Core VS Code 环境配置

VSCode .NET环境配置 在此之前我一直是使用notepad配置的C/C#环境来写代码,比起打开"笨重"的VS要方便很多.VSCode出来之后,本来也想折腾了一下,但是当时资料太少,配置没成功,也觉notepad就已经够了. 直到前几天在博客园看到园友LineZero分享的<<使用VS Code开发…

4.随机变量

【README】 本文总结自《概率论基础教程》 by M.Ross &#xff0c;墙裂推荐&#xff1b; 【4.1】随机变量 1&#xff09;随机变量&#xff1a; 定义在样本空间上的实值函数&#xff1b;即随机变量是一个函数&#xff08;或者一个映射&#xff0c;把事件映射到数值&#xff0…