快一个月没写东西了,最近确实有点忙。偶尔一次加班头有点晕居然被我误删了数据,还好只是测试数据,但是也要恢复啊,不然之前的测试不就白费了吗,哈哈。然后就去找了一些相关的恢复误操作的方法,在下面记录下来,以便将来可能会用到。

一、Delete 误删除行记录的解决方法

首先将某张表的记录删除:

delete from T_GDKZMJ

方法一:使用SCN

SCN(System Change Number 简称 SCN)是当Oracle数据库更新后,由DBMS自动维护去累积递增的一个数字。在Oracle中,有四种SCN,分别为:系统检查点SCN、数据文件检查点SCN、启动SCN、终止SCN。

1、获得当前数据库的SCN号
    select current_scn from v$database; 
    查询到的SCN号为:14438681
2、查询当前SCN号之前的SCN
    select * from 表名 as of scn 14438081; (确定删除的数据是否存在,如果存在,则恢复数据;如果不是,则继续缩小scn号)
3、恢复删除且已提交的数据(需要启用行移动功能)
   flashback table 表名 to scn 14438081;

方法二:使用时间戳

Oracle的闪回功能,用以下语句找回某个时间点的表记录:

select * from T_GDKZMJ as of timestamp to_timestamp('2019-08-24 15:13:11','yyyy-mm-dd hh24:mi:ss') where id=1

把查询到的数据插入原表:

insert into T_GDKZMJ (select * from T_GDKZMJ as of timestamp to_timestamp('2019-08-24 15:13:11','yyyy-mm-dd hh24:mi:ss'));

也可以闪回整个表,需要开启行移动

--开启行移动功能
alter table T_GDKZMJ enable row movement--闪回表到固定时间
flashback table T_GDKZMJ to timestamp to_timestamp('2019-08-24 15:13:11','yyyy-mm-dd hh24:mi:ss')--关闭行移动功能
alter table T_GDKZMJ disable row movement

二、Drop误删除的解决方法

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

drop table T_GDKZMJ

具体步骤:
*查询这个“回收站”或者查询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('2019-8-24 12:00:00','yyyy-mm-dd hh24:mi:ss');

oracle提供以上机制保证了安全操作,但同时也代来了另外一个问题,就是空间占用,由于以上机制的运行,使用drop一个表或者delete数据后,空间不会自动回收,对于一些确定不使用的表,删除时要同时回收空间,可以有以下2种方式:
  1、采用truncate方式进行截断。(但不能进行数据回恢复了)
  2、在drop时加上purge选项:drop table 表名 purge
该选项还有以下用途:
   也可以通过删除recyclebin区域来永久性删除表 ,原始删除表drop table T_GDKZMJ cascade constraints purge
   删除当前用户的回收站:
    purge recyclebin;
   删除全体用户在回收站的数据:
   purge dba_recyclebin

结尾语:活在当下,不念过往,不惧将来。

Oracle中误删数据找回方法相关推荐

  1. oracle 删除后恢复,Oracle快速恢复误删数据的方法

    日常工作中,我们经常会出现误删Oracle数据的情况,当delete和drop(未加purge)表时,我们可以通过如下进行快速恢复: (1) delete 误删数据时: 我们可以通过构造一致性读的方式 ...

  2. oracle 两表去除重复的数据,Oracle数据库删除两表中相同数据的方法

    在Oracle数据库中删除两表中相同数据的方法是用到in语句,本文通过实例来讲解删除两表中相同数据的方法. 软件环境: 1.Windows NT4.0+ORACLE 8.0.4. 2.Oracle安装 ...

  3. oracle怎么把数据跑进视图里,在Oracle中向视图中插入数据的方法

    在Oracle中向视图中插入数据的方法 插入视图的条件: 1.如果视图是基于一个基础表产生的,那么这就称为非连接视图,所有的非连接视图都是可以更新的,也就是说可以在该视图上进行,INSERT,UPDA ...

  4. oracle怎么将一列挪到另一列,详细讲解Oracle数据库的数据迁移方法

    <详细讲解Oracle数据库的数据迁移方法>由会员分享,可在线阅读,更多相关<详细讲解Oracle数据库的数据迁移方法(4页珍藏版)>请在人人文库网上搜索. 1.详细讲解 Or ...

  5. MyBatis在Oracle中插入数据并返回主键的问题解决

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 前言:我早期用过这个方法,但是返回的依旧是影响行数,不是主键. 只是这种写法可以达到我要的效果: 用 ...

  6. Oracle数据库迁移测试数据,Oracle数据库的数据迁移方法

    Oracle数据库的数据迁移方法 发表于:2008-04-14来源:作者:点击数: 随着数据库管理系统和操作系统平台的更新换代的速度的加快,数据库管理员经常需要在两个不同的数据库之间或在两种不同的系统 ...

  7. oracle数据库中spool的作用,Oracle中Spool命令如何使用 Oracle中Spool命令使用方法

    Oracle中Spool命令如何使用?本篇文章小编给大家分享一下Oracle中Spool命令使用方法,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 方法/步骤 首先需要明白 ...

  8. oracle匹配excel数据,如何用Excel直接查询Oracle中的数据

    如何用Excel直接查询Oracle中的数据 关注:275  答案:2  mip版 解决时间 2021-01-11 08:35 提问者╬═掵中注定 2021-01-10 16:43 如何用Excel直 ...

  9. SQLServer数据库误删数据找回

    记一次SQLServer数据库误删数据找回 昨天 同事在本机清理数据库表时,连接到了生产机,误删了二十几张表,幸好是晚上加班的时候删除的,生产机上当时是一天一备份,还原备份是最后的策略,最关键的还是要 ...

最新文章

  1. Clojure世界:单元测试
  2. 美工自我培养的几点经验总结
  3. [Spring cloud 一步步实现广告系统] 22. 广告系统回顾总结
  4. php对象里面存对象,PHP:在$ _SESSION中存储'对象'
  5. 最新Kernel 2.6.29正式版发布啦
  6. 收集程序员语录70则
  7. 基于TableStore的数据采集分析系统介绍 1
  8. springboot2.0 redis EnableCaching的配置和使用
  9. 【Flink】Flink 报错 exited with a non-zero exit code 1
  10. doris历程_Doris简史-为分析而生的11年
  11. 存储基础知识(八):备份技术(上)
  12. 阵列信号处理——求根MUSIC算法(Root MUSIC)
  13. why elmlang:最简最安全的full ola stack的终身webappdev语言选型
  14. Steel of Heart
  15. iCal及iCalendar说明
  16. 【1】谷歌2021模型量化白皮书《A White Paper on Neural Network Quantization》
  17. php养老院管理系统百度网盘_养老院信息管理系统源码老人管理系统
  18. 【python小白】抖音无水印视频下载小工具(windows)
  19. Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment
  20. python爬去易车网某地市经销商信息

热门文章

  1. oracle数据库总结(四)--表空间扩容
  2. Python学习-数据异常检测
  3. 异步时钟引起的亚稳态问题和跨时钟域电路设计
  4. 写好结构化论文的10条规则
  5. 如何在Dart中创建一个单例?
  6. 如何成为一名优秀的软件测试工程师
  7. GPS卫星定位测量基础-卫星多普勒定位技术
  8. 【机器学习】优化器之Adam
  9. MSE改变了杀毒软件界
  10. html编写程序员计算器,程序员计算器