Oracle中恢复drop掉的表中的数据

今天同事不小心把生产上的一张表直接drop掉了,没有做备份,哥们慌的一匹,来找我这个小白来帮忙解决,于是心血来潮简单总结一下。

其实在oralce中,用drop删掉一张表,其实不会真正的删除,只是把表放到了回收站中,可以通过flashback命令来恢复drop掉的表。

例如:

1.创建一张表,删除;再创建一张同名表,字段不同,再删除

在 select original_name,dropscn from recyclebin时候,两个表的dropscn是不同的,在利用闪回恢复时 flashback table test to before drop;只能恢复dropscn大的那张表。

2.drop时使用了purge选项,这时drop掉的表不会放入回收站,无法闪回数据

3.基于上面两种情况,会出现下面这种情况

create table 先创建表,插入100数据;

drop table purge 再drop掉表;

create table 同名表;不插入数据

drop table 再删除该表

在这种情况下flashback闪回的表会是第二次建的表,即便第一个表的dropscn大,但是第一个表使用了purge选项,没有放入回收站

select original_name,dropscn from recyclebin;--查看哪些表被删除后放在回收站

flashback table test to before drop;--闪回恢复表和表内数据

注:flashback无法恢复索引

原文地址:https://www.cnblogs.com/WineMan/p/12056377.html

时间: 2024-09-30 06:24:16

Oracle中恢复drop掉的表中的数据的相关文章

恢复oracle中误删除drop掉的表

查看回收站中表 select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recyclebin; 恢复表 SQL>flashback table test_drop to before drop;或SQL>flashback table "BIN$b+XkkO1RS5K10uKo9BfmuA==$0" to before drop; 注:必须9i或10g以上版本

mssql字符串分割后的值,把表中不存在的插入表中

字符串分割后的值,把表中不存在的插入表中 --供大家参考 使用场景,自行思考…… --创建表tb1 Create table tb1 ( cola int, colb varchar(50) ) --插入数据 insert into tb1(cola,colb) select 1, 'A' union all select 2, 'B' union all select 3, 'C'; --存储过程 Create proc sp_tbTest @sid int,--ID @str varchar

Oracle恢复drop误删除的表

一.表的恢复 对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的.一般步骤有: 1.从flash back里查询被删除的表 select * from recyclebin 2.执行表的恢复 flashback table tbName to before drop; 这里的tbName代表你要恢复的表的名称.二.表数据恢复 对误删的表记录,只要没有truncate语句,就可以根据事务的提交时间进行选择恢复,一般步骤有: 1.先从flashback_

RMAN恢复drop purge的表

@ORA12C>  alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; Session altered. [email protected]> create table  t_0920 as select * from dba_objects; Table created. [email protected]> select count(*) from t_0920;   COUNT(*) ----------------

mysql 从相同类型的多张表中提取到一张表中

蜗牛背着沉重的壳,贴着地面一步步艰难地向前爬行,不回头,也不左顾右盼,只是朝着自己想到达的地方行进. 有时候需要从多张相同类型的表中提取数据,这些表有一些相同的列或者表结构完全相同,同时表名存在一定的规律,如果表数量少还好,如果表数量多的话则会比较繁琐.可以通过存储过程将多张表的数据提取到一张表的方法来降低工作量. 先创建测试表并生成测试数据.以下存储过程创建10张测试表,每张表生成10条测试数据.drop PROCEDURE if EXISTS create10tables;create PR

使用Eclipse在Excel中找出两张表中相同证件号而姓名或工号却出现不同的的项

1:首先把Excel中的文本复制到txt中,复制如下: A表: 证件号                           工号  姓名 310110xxxx220130004 101 傅家宜310110xxxx220130005 102 顾音琪310110xxxx220130006 103 郭加峤310110xxxx220130007 104 胡奕蕾310110xxxx220130010 105 凌家蔚310110xxxx220130011 106 卢彦菁 B表: 证件号          

SQL语句中使用 with 递归实现表中数据树状显示

在开发过程中会遇到很多实现树状的功能,之前为了实现数据的树状显示一般都是通过程序里面的递归实现,今天试了一下通过sql语句实现具体如下: 表名:DeptInfo 字段:DeptId(部门编号),DeptName(部门名称),DeptUpId(部门上级ID),DeptPath(部门层级) 从DeptUpId和DeptPath中可看出表数据可能很乱: 为了实现表中数据树状显示,条例清晰具体代码实现如下: with dept as(select DeptId,DeptUpId from DeptInf

从pb文件中恢复计算图并在tensorboard中展示

因为训练的时候偷懒没有定义output node,所以在模型转换这一步就遇到了麻烦.因为不知道output node name,又不想重新训练,只能从tensorboard中寻找节点的名字.因为我保存的方式是SavedModel(tensorflow servicing),所以没有tfevents文件,只能重新恢复计算图,再生成. 简单记录一下: 1.从pb文件中恢复计算图,之后在/home/aldy/log路径下生成文件 import tensorflow as tf path = '/hom

MYSQL查询A表中不存在于B表中的所有符合条件的数据

在开发过程中,总有一些需求是需要查看在A表中ID不存在于B表中的ID的情况: 下面有三种方法可以实现这一需求: 第一种:使用Not in 方法通过子查询的结果集来做过滤: select * from A where 1=1 AND A.ID not in (select ID from B ) 这种情况最常见也是最容易理解的逻辑SQL代码,但是会有很多问题出现. 首先,这种情况是针对数据量比较小的情况使用的,原因在于IN 和 NOT IN并不是针对索引进行查询的,操作效率相对较慢.可以通过使用N