Oracle 误删表后数据恢复操作
背景
使用navicat导出数据库脚本文件后,每个表的前面都是 drop 语句,直接把表删了重建。但是这个往往问题很多,在新的用户下,没有这个表执行drop语句会报错,顶多用来做数据备份脚本。
前段时间,想导出sql脚本到新的用户下执行的时候,操作错误,直接在导出sql的用户下执行语句,反应过来的时候已经有部分表被drop了,所以特地学习了一下 oracle 中 drop 语句的数据恢复方法。
oracle数据恢复的原理
oracle在删除表时,不会将全部数据从磁盘上全部去除,而是放置到回收站中
操作步骤
- 执行查看全部删除记录语句
select object_name,original_name,type,droptime from user_recyclebin;
object_name是删除表后的表名
这个语句执行之后,可以看到回收站可恢复的删除记录,仔细看被删除的表,先找到自己删除的时间节点,再做筛选操作。
- 筛选出自己的删除记录
时间可以直接复制上面的droptime的字符串
select object_name,original_name,type,droptime from user_recyclebin where droptime >= '2022-9-16 09:00:00';
- 如果记得表名,可直接通过表名来恢复
flashback table 原表名 to before drop;
- 如果不记得了,可通过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 误删表后数据恢复操作相关推荐
- oracle锁表后,系统能否自动解锁?
oracle锁表后,系统能否自动解锁?(急) [问题点数:100分] 不显示删除回复 显示所有回复 显示星级回复 显示得分回复 只显示楼主 收藏 关注 zyxgy zyxgy 本版等级: 结帖率:30 ...
- oracle删除表后又有这个表:BIN$dJ5h8mA4Lr/gQAB/AQB0oA==$0 TABLE 存在
当Oracle数据表删除之后,就会产生对应的表类似BIN$dJ5h8mA4Lr/gQAB/AQB0oA==$0 TABLE? 是何原因造成的呢?这个是开启了 flash 功能. 如 ...
- oracle建表加compress,oracle 建表后添加表注释及字段注释
oracle添加表注释和表字段注释 创建Oracle数据库表时候加上注释 CREATE TABLE t1( id varchar2(32) primary key, name VARCHAR2(8) ...
- shell脚本执行oracle删除表,shell脚本操作oracle删除表空间、创建表空间、删除用户...
oracle下表空间的导出,用户的删除,表空间删除,用户新建,表空间新建,数据导入的shell 使用非oracle用户执行该脚本 参数说名 $1:base表空间的用户名 $2:同步表空间的用户名 使用 ...
- oracle误删表空间 无法关闭,oracle 误删表空间文件启动不了数据库的解决办法
近日在搞rman备份恢复的实验,因为在虚拟机建立一个rman表空间,但是发现磁盘空间不够大,所以删除了,导致数据库启动不了了,解决办法如下: 1.误删rman表空间 SQL> ! rm -f / ...
- oracle 误删表空间文件启动不了数据库的解决办法
近日在搞rman备份恢复的实验,因为在虚拟机建立一个rman表空间,但是发现磁盘空间不够大,所以删除了,导致数据库启动不了了,解决办法如下: 1.误删rman表空间 SQL> ! rm -f / ...
- mysql 分库分表 后怎么操作,MySQL要分表分库怎么进行数据切分?
导读:关系型数据库本身比较容易成为系统瓶颈,单机存储容量.连接数.处理能力都有限.当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库.优化索引,做很多操作时性能仍下降严重.此时 ...
- Oracle表格误删,Oracle误删表空间文件
今天在清理主机空间时,将一个表空间的数据文件误以为是dump文件,直接删除了,删完后才意识到有问题,不过已经恢复不了了( LINUX),此时数据库是可以正常的,但是有些数据库视图打不开了,比如dba_ ...
- oracle建表后添加数据报错:ORA-01658:无法为表空间中的段创建INITIAL区
看到这个,是表空间不足咧. 首先呢,我看了下建表时的表空间分配大小,分的挺多了64M,不行,改掉改成64k,ok啦. 别的表也报错.纠结了,决定给表空间大小改了. 1.先看下我的表空的位置 selec ...
最新文章
- [ASP.NET]状态管理[摘自C#入门经典]
- 科大讯飞CV赛baseline:图像分类实践+0.55
- RouteHttpMap要添加的引用
- python输入两个数用逗号隔开如不是两个数报错_Python数据类型
- [转载]MIT牛人解说数学体系
- flex 各组件对应的样式属性2
- java旋转图片后边上变黑_Java旋转图像将背景的一部分变成黑色
- tb项目管理实践_项目经理与项目管理整理
- 超大图像的二值化方法
- 比赛之前的数据清零操作
- 浙江大学-西湖大学联合培养博士生
- 【翻译论文】A Progressive Morphological Filter for Removing Nonground Measurements From Airborne LIDAR Dat
- js中的引号使用不正确导致js方法传入参数类型错误
- 屏库是个很好的网站,囊括了几乎所有型号的显示屏
- 列表推导式+生成器+面向对象一(对象的结构+类的定义)2020-22-23
- 【猿说VUE】条件渲染,绝代双骄之 v-if 和v-show
- Mooc视频字幕提取
- TensorFlow实现多层感知机
- CSS 字符间距letter-spacing属性
- 【计组】二进制炸弹bomblab Phase1-6
热门文章
- 高中数学基础-1.1.1:集合的含义及其表示
- “3A大作”微信,体积终于缩小了? 退退退!!!!
- RECS高管教练课程是什么?
- 机器调度问题的转移瓶颈启发式算法
- c++11总结10——内存对齐
- upstream sent too big header while reading response header from upstream
- 帆软初级证书 第一部分 Fine Report 答案
- linux python定时任务调度,Python下定时任务框架APScheduler的使用
- 中值滤波算法的Verilog实现
- 2023 猕猴桃影视源码