服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Oracle - oracle delete误删除表数据后如何恢复

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

2022-09-21 15:49weisian151 Oracle

最近在使用oracle数据时,一不小心把table中的数据delete掉并且已经提交了,下面这篇文章主要给大家介绍了关于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 ;

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

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

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

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

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

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

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

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

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

则执行:

?
1
alter table DEMO enable row movement;

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

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

恢复3(新建临时表):

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

?
1
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表中

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

恢复4(根据scn恢复):

查询当前的scn号

?
1
select current_scn from v$database;

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

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

?
1
select * from DEMO as of scn 166937913;

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

?
1
flashback table DEMO to scn 166937913;

总结

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

原文链接:https://blog.csdn.net/qq_34207422/article/details/123924927

延伸 · 阅读

精彩推荐
  • OracleOracle case函数使用介绍

    Oracle case函数使用介绍

    这篇文章主要通过实例简要介绍case函数的用法,学习oracle的朋友可以参考下 ...

    Oracle教程网6182019-12-01
  • OracleDBA_2PC_PENDING 介绍

    DBA_2PC_PENDING 介绍

    DBA_2PC_PENDING Oracle会自动处理分布事务,保证分布事务的一致性,所有站点全部提交或全部回滚。一般情况下,处理过程在很短的时间内完成,根本无法察觉...

    Oracle教程网5892019-10-29
  • Oracleoracle 多个字符替换实现

    oracle 多个字符替换实现

    CSDN上的一个网友,需要一个sql语句的解决方案需求是这样的求写oracle多个字符替换(有测试数据) ...

    oracle教程网3632019-11-08
  • Oraclerman配置及rman常用命令操作

    rman配置及rman常用命令操作

    这篇文章主要介绍了rman配置及rman常用命令操作,包括校验备份信息、查看备份、删除备份等,需要的朋友可以参考下 ...

    Oracle教程网4472019-12-07
  • Oraclesql查询给表起别名要点小结(涉及嵌套查询)

    sql查询给表起别名要点小结(涉及嵌套查询)

    通过使用 SQL,可以为表名称或列名称指定别名,下面这篇文章主要给大家介绍了关于sql查询给表起别名要点(涉及嵌套查询)的相关资料,文中通过实例代码介绍...

    foas9we6492022-09-07
  • Oracleoracle删除表字段和oracle表增加字段

    oracle删除表字段和oracle表增加字段

    这篇文章主要介绍了oracle表增加字段、删除表字段修改表字段的使用方法,大家参考使用吧 ...

    oracle教程网3222019-12-06
  • OracleOracle约束管理脚本

    Oracle约束管理脚本

    作为一个 Oracle 数据库管理员,会碰到这样的数据库管理需求,停止或者打开当前用户(模式)下所有表的约束条件和触发器。这在数据库的合并以及对数据库...

    Oracle教程网2302019-10-25
  • OracleOracle 存储过程发送邮件实例学习

    Oracle 存储过程发送邮件实例学习

    接下来将介绍下如何使用存储过程发送邮件这一案例实现,感兴趣的你可以参考下本文或许对你有所帮助 ...

    Oracle教程网1942019-11-20