oracle delete误删除表数据后如何恢复

1、根据时间进行恢复

此种方式需要我们大致知道执行delete语句的时间。

查询系统当前时间:select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss’) from dual;

假设在2022-04-02 16:27:11分钟,执行了删除语句
delete from demo ;

此时已经表中不能查询到数据了。我们知道delete执行的时间,往前推1分钟(delete执行时间之前都可以,越小越好,本例以1分钟为例),执行如下语句

select * from DEMO as of timestamp to_timestamp(‘2022-04-02 16:26:11',‘yyyy-mm-dd hh24:mi:ss');

可以看到虽然当前demo表中没有数据,但是可以查询到demo表前1分钟时候的数据。

恢复1:此时可以通过plsql工具的导出查询结果功能导出sql文件,然后在重新执行sql文件中的insert语句进行数据恢复。

恢复2:执行以下sql进行数据恢复:

flashback table DEMO to timestamp to_timestamp(‘2022-04-02 16:26:11',‘yyyy-mm-dd hh24:mi:ss');

如果报错ORA-08189:未启用行移动功能,不能闪回表

则执行:

alter table DEMO enable row movement;

添加表行移动功能后,在进行flashback语句进行恢复

如果报错: ORA-08194: 在实体化视图上不允许闪回表操作;则通过下面介绍的新建临时表的方式进行恢复。

恢复3(新建临时表):

新建demo1表,插入需要恢复的数据

create table DEMO1 as select * from DEMO as of timestamp to_timestamp(‘2022-04-02 16:30:11',‘yyyy-mm-dd hh24:mi:ss');

将demo1表的数据恢复到demo表中

insert into DEMO select * from DEMO1 where not exists (select * from DEMO where DEMO.id=DEMO1.id);

恢复4(根据scn恢复):

查询当前的scn号

select current_scn from v$database;

将scn号减少若干,执行下语句,直到能查看到我们delete的数据为止

select * from DEMO as of scn 166937913;

通过合适的scn号,执行下sql语句进行数据恢复

flashback table DEMO to scn 166937913;

总结

到此这篇关于oracle delete误删除表数据后如何恢复的文章就介绍到这了,更多相关oracle delete误删表数据恢复内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • oracle数据库删除数据Delete语句和Truncate语句的使用比较

    当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中的数据可以使用Delete语句或者Truncate语句,下面分别介绍. 一.delete语句 (1)有条件删除 语法格式:delete [from] table_name [where condition]; 如:删除users表中的userid为'001'的数据:delete from users where userid='001'; (2)无条件删除整个表数据 语法格式:delete table_name; 如:删除user

  • oracle delete误删除表数据后如何恢复

    1.根据时间进行恢复 此种方式需要我们大致知道执行delete语句的时间. 查询系统当前时间:select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss’) from dual; 假设在2022-04-02 16:27:11分钟,执行了删除语句delete from demo ; 此时已经表中不能查询到数据了.我们知道delete执行的时间,往前推1分钟(delete执行时间之前都可以,越小越好,本例以1分钟为例),执行如下语句 select * from DEM

  • Oracle误删除表数据后的数据恢复详解

    Oracle误删除表数据后的恢复详解   测试环境: SYSTEM:IBM AIX 5L                         Oracle Version:10gR2 1. undo_retention参数的查询与修改 使用show parameter undo命令查看当前的数据库参数undo_retention设置. 显示如下: SQL> show parameter undo NAME                                 TYPE        VAL

  • oracle 批量删除表数据的几种方法

    1.情景展示 情景一: 删除PRIMARY_INDEX_TEST表中,MINDEX_ID字段为空的数据 情景二: 删除VIRTUAL_CARD_TEST表中的脏数据 2.解决方案 情景一的解决方案: DELETE FROM PRIMARY_INDEX_TEST WHERE MINDEX_ID IS NULL 情景二的解决方案: 方案1:使用快速游标法(删除一次提交一次): --快速游标法 BEGIN FOR TEMP_CURSOR IN (SELECT ID FROM VIRTUAL_CARD3

  • oracle中误删除表后恢复语句(FLASHBACK)

    复制代码 代码如下: select * from dba_recyclebin; select * from user_recyclebin; FLASHBACK TABLE CF_IMPORT_RULE TO BEFORE DROP; FLASHBACK COMPLETE

  • sql清空表数据后重新添加数据存储过程的示例

    复制代码 代码如下: ALTER PROCEDURE [dbo].[sp_add_Jurisdiction]@CTableName varchar(20), --当前要删除.新增的表@filedkeyValue varchar(20), --要删除的字段值@filedName varchar(20), --要删除的字段名@filedNameAdd1 varchar(20), --要新增的字段名1@filedNameAdd2 varchar(20), --要新增的字段名2@sql varchar(

  • oracle清空所有表数据

    方法: 1. 删除所有外键约束 2. drop表 3. 添加外键约束 代码使用powerdesign生成 /*==============================================================*/ /* DBMS name: ORACLE Version 10g */ /* Created on: 2013/8/16 14:30:03 */ /*=======================================================

  • 如何将Oracle的一个大数据表快速迁移到 Sqlserver2008数据库(图文教程)

    oracle 服务器  版本  11.2.0.1.0 Sqlserver2008  R2 前提条件是 SQLSERVER服务器上安装了Oracle客户端并且进行了配置 不会配置的请参照 这个链接 1  登录MSSM 工具 2 选中其中一个数据库  右键⇒任务⇒导入数据 3   打开窗口 Sqlserver导入和导出向导   点击下一步 4 进入选择数据源画面 a: 数据源 选择  Microsoft OLE DB Provider for Oracle  然后 点击 右侧的 属性 按钮 5  数

  • MongoDB单表数据的导出和恢复实例讲解

    MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便. MongoDB 工作在收集和文件的概念. 数据库 数据库是一个物理容器集合.每个数据库都有自己的一套文件系统上的文件.一个单一的MongoDB服务器通常有多个数据库. 集合 集合是一组MongoDB的文档.它相当于一个RDBMS表.收集存在于一个单一的数据库.集合不执行模式.集合内的文档可以有不同的领域.通常情况下,一个集合中的所有文件是相同或相关的目的. 文档 文档是一组键 - 值对.文件动态模式.动态模式

  • MySQL Delete 删数据后磁盘空间未释放的原因

    问题描述 在 MySQL 中使用 delete 语句删除数据之后,监控视图中可用的磁盘空间没有增加,磁盘使用率没有下降等等. 解决方案 delete 不释放空间是 MySQL 自身机制的原因,需要重建表才可以释放磁盘空间,可以参考的操作: 执行 optimize table ${table_name}. 如果是 InnoDB 的表,执行 alter table ${table_name} engine = innodb. 需要注意以下两个问题: 这两个命令都会重建表,尽量不要在磁盘空间紧张(>9

  • MySQL delete删除数据后释放磁盘空间的操作方法

    目录 一.删除表|清空数据表 二.删除表数据 三.优化表空间 当 MySQL 数据库服务删除部分数据后:有些情况下这些数据占用的存储空间会释放掉,有些情况这些存储空间则不会释放.以下是对这种情况的简单说明: 一.删除表|清空数据表 当执行删除数据表或者清空数据表的全部数据操作时,都会释放掉相应的磁盘存储空间. drop table table_name; truncate table table_name; 在MyISAM和InnoDB(innodb_file_per_table)存储引擎中,数

随机推荐