在Oracle的数据库中,如果不小心删除数据,该如何恢复数据呢?

有两种方法 :scn 方法和时间戳方法

一、恢复删除数据的SQL语法(建议用时间戳)

1、通过scn恢复删除且已提交的数据

1)获得当前数据库的scn号

    select current_scn from v$database; (切换到sys用户或system用户查询)

    查询到的scn号为:1499223

2)查询当前scn号之前的scn

    select * from 表名 as of scn 1499220; (确定删除的数据是否存在,如果存在,则恢复数据;如果不是,则继续缩小scn号)

3)恢复删除且已提交的数据

    flashback table 表名 to scn 1499220;

2、通过时间恢复删除且已提交的数据

1)查询当前系统时间

 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

2)查询删除数据的时间点的数据

 select * from 表名 as of timestamp to_timestamp('2018-10-09 15:29:00','yyyy-mm-dd hh24:mi:ss');  (如果不是,则继续缩小范围)

3)恢复删除且已提交的数据

--开启行移动功能(解决执行以下语句报错问题)

alter table 表名 enable row movement;

--恢复某个时间点的数据

flashback table 表名 to timestamp to_timestamp('2018-10-09 15:29:00','yyyy-mm-dd hh24:mi:ss');

--关闭行移动功能

alter table 表名 disable row movement;

二、恢复删除数据的实例(方法)

1、查询删除数据前表数据

--查询删除前表的数据---
select * from Dxc_Goods;

2、执行删除数据操作(132,133),并查看

--执行删除操作:132,133--
delete from Dxc_GOODS where MID in(132,133);
--提交(模拟误删操作)
commit;

查看结果

3、恢复删除并提交的数据 (指定删除时间点,保证这个是执行删除之前的时间)

  --开启行移动功能(解决执行以下语句报错问题)
alter table Dxc_Goods enable row movement;
--恢复某个时间点的数据
flashback table Dxc_Goods to timestamp to_timestamp('2019-07-24 18:00:00','yyyy-mm-dd hh24:mi:ss');
--关闭行移动功能
alter table Dxc_Goods disable row movement;

执行后,查询数据(132,133数据已恢复)

PS:

参考网址:https://blog.csdn.net/qq_36460189/article/details/82983732

Oracle 如何恢复删除并提交的表数据的更多相关文章

  1. ORACLE+PYTHON实战:复制A表数据到B表

    最近在学习python ,看到了pythod的oracle,不仅可以一次fetch多条,也可以一次insert多条,想写一个复制A表数据到B表的程序来看看实际效率能不能提高.写完发现,非常惊艳!效率提 ...

  2. Oracle误操作--被提交后的数据回退(闪回)

    由于一时的粗心,在做update操作时,忘记了加where条件,导致全表数据被修改.此类错误实属不该!!特此记录一下!! 网上搜索Oracle数据回退操作,介绍如下: 闪回级别 闪回场景 闪回技术 对 ...

  3. form 向java控制类 提交多表数据 、提交list数组数据

    案例:form中有三个表的数据,一个主表,两个子表 1.在主表model类添加 对应子表数据集 2.界面上主表定义 3.控制类接收,直接用主表对象接收即可

  4. miniui处理多重子表级联,一次性提交多表数据的ui要点

    在一个ui界面上 有a,b,c三个表 a表只有一条记录,b表有多条记录,c表有多条记录 b是a的子表,c是b的子表 都是一对多关系 一次性下载相关联的c表记录 然后mini-datagrid采用cli ...

  5. Oracle库Delete删除千万以上普通堆表数据的方法

    需求:Oracle数据库delete删除普通堆表千万条历史记录. 直接删除的影响: 1.可能由于undo表空间不足从而导致最终删除失败的问题: 2.可能导致undo表空间过度使用,影响到其他用户正常操 ...

  6. Oracle误删除表数据后的恢复具体解释

    Oracle误删除表数据后的恢复具体解释 測试环境: SYSTEM:IBM AIX 5L                         Oracle Version:10gR2 1. undo_re ...

  7. oracle 批量删除表数据的4种方式

      1.情景展示 情景一: 删除PRIMARY_INDEX_TEST表中,MINDEX_ID字段为空的数据 情景二: 删除VIRTUAL_CARD_TEST表中的脏数据 2.解决方案 情景一的解决方案 ...

  8. 【Oracle】PLSQL如何更新、提交数据库中数据

    转至:https://blog.csdn.net/Bee_AI/article/details/89279612 Oracle更新单表数据时,一般使用SELECT--FOR UPDATE语句,这条语句 ...

  9. Oracle数据库验证IMP导入元数据是否会覆盖历史表数据

    场景:imp导入数据时,最终触发器报错退出,并未导入存储过程.触发器.函数. 现在exp单独导出元数据,然后imp导入元数据,验证是否会影响已导入的表数据. 测试环境:CentOS 6.7 + Ora ...

随机推荐

  1. Python 数学运算的函数

    不需要导入模块(内置函数) 函数 返回值 ( 描述 ) abs(x) 返回绝对值 max(x1, x2,...) 最大值,参数可以为序列. min(x1, x2,...) 最小值,参数可以为序列. p ...

  2. Apache Kafka是数据库吗?

    最近思路有些枯竭,找些务虚的话题来凑.本文内容完全来自于Martin Kelppmann在2019年Kafka伦敦峰会上的演讲.顺便提一句,Kelppmann是<Designing Data-I ...

  3. “GIS DICTIONARY A-Z” 查询页面开发(1)——bs4与词典数据处理

    第一天的工作:找到数据源,数据下载,数据处理. 数据源:"http://webhelp.esri.com/arcgisserver/9.3/java/geodatabases/definit ...

  4. Nginx Location指令URI匹配规则详解

    server { listen 80; server_name ss.test *.ss.test; root "D:/Project/PHP/admin-h5/dist/"; s ...

  5. Python 关于列表字典的键值修改

    list (修改列表的索引值) 循环一个列表时,最好不要对原列表有改变大小的操作,这样会影响你的最终结果. #使用负索引进行修改列表 print('First') lis = [11, 22, 33, ...

  6. maven nexus 私服搭建 Linux版

    准备工作 已安装jdk 已安装maven 下载Nexus Repository OSS:https://www.sonatype.com/download-oss-sonatype 如果无法下载成功, ...

  7. Python与设计模式--工厂模式

    快餐点餐系统 想必大家一定见过类似于麦当劳自助点餐台一类的点餐系统吧.在一个大的触摸显示屏上,有3类可以选择的上餐品:汉堡等主餐.小食.饮料.当我们选择好自己需要的食物,支付完成后,订单就生成了.下面 ...

  8. python笔记43-加解密AES/CBC/pkcs7padding

    前言 有些公司对接口的安全要求比较高,传参数的时候,不会明文的传输,先对接口加密,返回的数据也加密返回. 目前比较常见的加密方式是AES/CBC/pkcs7padding. AES五种加密模式 在AE ...

  9. 第三篇 -- XML Schema

    验证XML文档是否符合议定的XML结构有两种方法,分别是DTD模式与XML Schema.本文主要介绍XML Schema. 一.XML Schema的优点 XML Schema基于XML,没有专门的 ...

  10. (待做例子)问题描述: el-tab 下有2个路由,其中第1个路由设置了 beforeRouteLeave,点击 el-tab 第2个tab时,样式直接跟过去了(预期结果是:样式不到第二个tab上,beforeRouteLeave允许跳转后才到第二个tab上)

    解决: 经过以上分析,强制赋值应该在前次赋值而且DOM已经刷新完毕之后进行.可以使用$nextTick,以下是代码: handleTabClick (tab) { let name = this.fi ...