今天要删除表中的数据,不小心删错,而且提交了事务,这些数据要从头再来,估计今天就全耽误在这事上面了,只能在网上找资料,看了很多资料,现在自己也归纳一下

删除表中的数据由三种方法:

  • delete删除一条数据
  • drop和truncate删除表格中数据

1.delete删除的解决方法(我就是使用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(打开flash存储的权限)
  • flashback table 表名 to timestamp to_timestamp(删除时间点','yyyy-mm-dd hh24:mi:ss')(把表还原到指定时间点)
  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误删除数据之后的恢复方法相关推荐

  1. oracle修改删除数据,[Oracle 错误修改删除数据后的恢复方法

    [Oracle ERP维护人员必备] 错误修改删除数据后的恢复方法 Oracle ERP维护人员工作再小心也难免会有在正式库中误删或者误改数据并且已经commit的情况发生,那么我就要用到 - Ora ...

  2. mysql 误删除ibdata1,MySQL 误删除ibdata1之后的恢复方法

    这篇文章主要为大家详细介绍了MySQL 误删除ibdata1之后的恢复方法,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编小韵来看看吧! mysql 误删除ibd ...

  3. InfluxDB数据备份和恢复方法,支持本地和远程备份

    本文属于< InfluxDB系列教程>文章系列,该系列共包括以下 17 部分: InfluxDB学习之InfluxDB的基本概念 InfluxDB学习之InfluxDB的基本操作 Infl ...

  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. Linux 平台下 误删 oracle 数据文件的恢复方法

    1  问题描述 之前写过一篇删除oracle home目录的blog,参考: Linux 平台误删 home oracle 根目录的解决方法 http://www.cndba.cn/Dave/arti ...

  7. linux 误删除mysql表能恢复吗_linux rm误删除数据库文件的恢复方法

    1.首先测试rm 误删除数据库文件 [oracle@primary dbwdn]$ ll total 2153164 -rw-r----- 1 oracle dba 8536064 Nov 27 21 ...

  8. Oracle误删除表空间的恢复

    对于误删除表空间的恢复,本文通过基于数据库的时间点恢复和基于表空间的时间点恢复分别加以讨论 一 通过基于数据库的时间点恢复被误删除的表空间 1 需要注意的事项 a 基于数据库的时间点恢复将会回退整个数 ...

  9. oracle 数据导入 mysql_oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)...

    这篇文章主要介绍了oracle导入导出数据的二种方法,利用PL/SQL Developer工具导出和利用cmd的操作命令导出的出方法,大家参考使用吧 方法一:利用PL/SQL Developer工具导 ...

  10. oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)

    这篇文章主要介绍了oracle导入导出数据的二种方法,利用PL/SQL Developer工具导出和利用cmd的操作命令导出的出方法,大家参考使用吧 方法一:利用PL/SQL Developer工具导 ...

最新文章

  1. withRouter组件
  2. ES6_入门(2)_const命令
  3. 机房系统(三)——【充值 退卡 】
  4. 合并两个有序数组(双/三指针)
  5. 有ul没有字html,HTML ul 标签
  6. 教机器写代码:增强拓扑进化网络(NEAT)
  7. 2的负x次幂图像_数学| NO.2,3函数 T51
  8. 阿里云 磁盘脱机处理
  9. Windows核心编程_窗口启动效果
  10. 中limit怎末用_Nginx配置——关于limit_conn_zone和limit_conn
  11. 获取HG526超级密码
  12. 力软下拉框多选_[力软7.0.6]力软敏捷开发框架敏捷框架前端API
  13. 零件测绘与计算机作图理论试题,浅谈《零部件测绘与cad成图技术》技能竞赛对中职机械制图和cad制图课程整合的影响...
  14. JDY-24M蓝牙应用探索
  15. pip安装第三方库 报错:You should consider upgrading
  16. Mac OS X TextMate 运行 OCaml代码提示出错
  17. 个人家用nas_希捷个人云评测:家用NAS中的佼佼者
  18. javaSe查漏补缺
  19. android数据库三个方法有哪些,如何将Android数据库操作通用化(二)
  20. linux 内核 屏幕 驱动,Linux液晶显示屏驱动设计

热门文章

  1. 第二章 ARM体系结构与指令集——ARM
  2. 医院计算机网络系统的现状,医院信息系统应用的现状与发展
  3. 数据仓库中的慢变化维度和快变化维度
  4. R 语言 中的条件推理树
  5. 北斗导航 | 北斗高精度定位在智能驾驶汽车领域的应用
  6. 软件工程概论 课堂练习【用例图——门诊挂号】
  7. 统计自然语言处理(第2版)目录
  8. 全面的SWOT分析的技巧和策略
  9. 【网络安全】加解密算法最详解
  10. 导入数据库时报错的解决办法汇总