背景

使用navicat导出数据库脚本文件后,每个表的前面都是 drop 语句,直接把表删了重建。但是这个往往问题很多,在新的用户下,没有这个表执行drop语句会报错,顶多用来做数据备份脚本。
前段时间,想导出sql脚本到新的用户下执行的时候,操作错误,直接在导出sql的用户下执行语句,反应过来的时候已经有部分表被drop了,所以特地学习了一下 oracle 中 drop 语句的数据恢复方法。

oracle数据恢复的原理

oracle在删除表时,不会将全部数据从磁盘上全部去除,而是放置到回收站中

操作步骤

  1. 执行查看全部删除记录语句
select object_name,original_name,type,droptime from user_recyclebin;

object_name是删除表后的表名

这个语句执行之后,可以看到回收站可恢复的删除记录,仔细看被删除的表,先找到自己删除的时间节点,再做筛选操作。

  1. 筛选出自己的删除记录
    时间可以直接复制上面的droptime的字符串
select object_name,original_name,type,droptime from user_recyclebin where droptime >= '2022-9-16 09:00:00';
  1. 如果记得表名,可直接通过表名来恢复
flashback table 原表名 to before drop;
  1. 如果不记得了,可通过object_name来恢复
flashback table "这里是object_name" to before drop rename to 新表名;

直接flashback数据库到某一个时间点

通过上面的操作步骤可以一个表一个表地恢复数据,其实也有直接将数据库闪回到某一时间点的。但是这个执行语句,开发人员不一定有权限。

alter database flashback on;
flashback database to scn tmp_db1;
flashback database to timestamp to_timestamp('2017-6-28 11:30','yyyy-mm-dd hh24:mi:ss');

注意事项

闪回数据时,千万不能新建同名的表然后删除!回收站的记录会被覆盖的!
举例子说明:原先有个名字叫A的表,里面有大量的数据,你突然手抖了,把这个表drop了。你当时没看到这篇文章时,不知道数据可以恢复,自己又建了一个同名的A表。你看到这篇文章后知道可以恢复了,但是前面你在恢复操作时,提示你已经有名称为A的表了,然后这个时候你去把现有的空记录的A表一删,他会把回收站的A表的数据覆盖掉了!你再去恢复的时候,就是你刚删的空记录的A表,你的数据彻底丢失了!

参考文章

链接直达:https://www.cnblogs.com/yfdfj/p/15157224.html

Oracle 误删表后数据恢复操作相关推荐

  1. oracle锁表后,系统能否自动解锁?

    oracle锁表后,系统能否自动解锁?(急) [问题点数:100分] 不显示删除回复 显示所有回复 显示星级回复 显示得分回复 只显示楼主 收藏 关注 zyxgy zyxgy 本版等级: 结帖率:30 ...

  2. oracle删除表后又有这个表:BIN$dJ5h8mA4Lr/gQAB/AQB0oA==$0 TABLE 存在

      当Oracle数据表删除之后,就会产生对应的表类似BIN$dJ5h8mA4Lr/gQAB/AQB0oA==$0 TABLE?      是何原因造成的呢?这个是开启了 flash 功能.    如 ...

  3. oracle建表加compress,oracle 建表后添加表注释及字段注释

    oracle添加表注释和表字段注释 创建Oracle数据库表时候加上注释 CREATE TABLE t1( id  varchar2(32) primary key, name VARCHAR2(8) ...

  4. shell脚本执行oracle删除表,shell脚本操作oracle删除表空间、创建表空间、删除用户...

    oracle下表空间的导出,用户的删除,表空间删除,用户新建,表空间新建,数据导入的shell 使用非oracle用户执行该脚本 参数说名 $1:base表空间的用户名 $2:同步表空间的用户名 使用 ...

  5. oracle误删表空间 无法关闭,oracle 误删表空间文件启动不了数据库的解决办法

    近日在搞rman备份恢复的实验,因为在虚拟机建立一个rman表空间,但是发现磁盘空间不够大,所以删除了,导致数据库启动不了了,解决办法如下: 1.误删rman表空间 SQL> ! rm -f / ...

  6. oracle 误删表空间文件启动不了数据库的解决办法

    近日在搞rman备份恢复的实验,因为在虚拟机建立一个rman表空间,但是发现磁盘空间不够大,所以删除了,导致数据库启动不了了,解决办法如下: 1.误删rman表空间 SQL> ! rm -f / ...

  7. mysql 分库分表 后怎么操作,MySQL要分表分库怎么进行数据切分?

    导读:关系型数据库本身比较容易成为系统瓶颈,单机存储容量.连接数.处理能力都有限.当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库.优化索引,做很多操作时性能仍下降严重.此时 ...

  8. Oracle表格误删,Oracle误删表空间文件

    今天在清理主机空间时,将一个表空间的数据文件误以为是dump文件,直接删除了,删完后才意识到有问题,不过已经恢复不了了( LINUX),此时数据库是可以正常的,但是有些数据库视图打不开了,比如dba_ ...

  9. oracle建表后添加数据报错:ORA-01658:无法为表空间中的段创建INITIAL区

    看到这个,是表空间不足咧. 首先呢,我看了下建表时的表空间分配大小,分的挺多了64M,不行,改掉改成64k,ok啦. 别的表也报错.纠结了,决定给表空间大小改了. 1.先看下我的表空的位置 selec ...

最新文章

  1. [ASP.NET]状态管理[摘自C#入门经典]
  2. 科大讯飞CV赛baseline:图像分类实践+0.55
  3. RouteHttpMap要添加的引用
  4. python输入两个数用逗号隔开如不是两个数报错_Python数据类型
  5. [转载]MIT牛人解说数学体系
  6. flex 各组件对应的样式属性2
  7. java旋转图片后边上变黑_Java旋转图像将背景的一部分变成黑色
  8. tb项目管理实践_项目经理与项目管理整理
  9. 超大图像的二值化方法
  10. 比赛之前的数据清零操作
  11. 浙江大学-西湖大学联合培养博士生
  12. 【翻译论文】A Progressive Morphological Filter for Removing Nonground Measurements From Airborne LIDAR Dat
  13. js中的引号使用不正确导致js方法传入参数类型错误
  14. 屏库是个很好的网站,囊括了几乎所有型号的显示屏
  15. 列表推导式+生成器+面向对象一(对象的结构+类的定义)2020-22-23
  16. 【猿说VUE】条件渲染,绝代双骄之 v-if 和v-show
  17. Mooc视频字幕提取
  18. TensorFlow实现多层感知机
  19. CSS 字符间距letter-spacing属性
  20. 【计组】二进制炸弹bomblab Phase1-6

热门文章

  1. 高中数学基础-1.1.1:集合的含义及其表示
  2. “3A大作”微信,体积终于缩小了? 退退退!!!!
  3. RECS高管教练课程是什么?
  4. 机器调度问题的转移瓶颈启发式算法
  5. c++11总结10——内存对齐
  6. upstream sent too big header while reading response header from upstream
  7. 帆软初级证书 第一部分 Fine Report 答案
  8. linux python定时任务调度,Python下定时任务框架APScheduler的使用
  9. 中值滤波算法的Verilog实现
  10. 2023 猕猴桃影视源码