Oracle库恢复删除数据的方法小结

 更新时间:2023年12月14日 09:20:38   作者:奋斗中的Jack  
误删 Oracle 库中的数据,在不考虑全库备份和利用归档日志情况,如何恢复数据呢,这篇文章将给大家介绍几种方法恢复数据,文章通过代码示例给大家介绍的非常详细,需要的朋友可以参考下

误删 Oracle 库中的数据,在不考虑全库备份和利用归档日志情况,如何恢复数据呢?

下面介绍几种方法恢复数据:

1、利用 Oracle 提供的闪回方法进行数据恢复,适用于 delete 删除方式

首先获取删除数据的时间点:

select * from v$sql where sql_text like '%table_name%';

根据结果中的 sql_text 内容,找到 delete 执行语句对应的删除时间点,执行下面语句查询出删除的数据。

select * from table_name as of timestamp to_timestamp(‘删除时间点',‘yyyy-mm-dd hh24:mi:ss') 
where (删除时的条件);

检查数据无误后,执行下面操作,将数据插回原表中。注意主键不重复

insert into table_name
select * from from table_name as of timestamp to_timestamp(‘删除时间点',‘yyyy-mm-dd hh24:mi:ss')
where (删除时的条件);

2、利用 Oracle 虚拟回收站功能

原理是因为 Oracle 数据库在删除表时会将删除信息存放于某虚拟回收站中而非直接清空,在此种状态下数据库标记该表的数据库为可以复写,所以在该块未被重新使用前依然可以恢复数据。该方法多用于 drop 删除。

首先查询 user_table 视图,找到被删除的表:

select table_name,dropped from user_tables;
select object_name,original_name,type,droptime from user_recyclebin;

注意此时的,object_name 和 original_name 就是回收站存放的表名和原来删除的表名,如果表名没有被重新命名,可以通过下面语句进行恢复:

flashback table original_name to before drop;

3、用 Oracle 数据库的闪回功能可以将数据库恢复到过去某一状态

注意,此时是整库恢复,具体语法如下:

SQL>alter database flashback on
SQL>flashback database to scn SCNNO;
SQL>flashback database to timestamp to_timestamp(‘frombyte 2021-09-02 23:59:59',‘yyyy-mm-dd hh24:mi:ss');

4、彻底删除数据

如果确定需要删除的数据又不想无谓的占用空间,可以使用以下3种方式:

1)采用 truncate 方式进行截断。(不能进行数据恢复)

2)在 drop 时加上 purge 选项:

drop table table_name purge;

5. 关于清空回收站

1)删除当前用户回收站

purge recyclebin;

2)删除全体用户在回收站的数据

purge dba_recyclebin;

以上就是Oracle库恢复删除数据的方法小结的详细内容,更多关于Oracle恢复删除数据的资料请关注脚本之家其它相关文章!

相关文章

  • oracle逻辑结构分析

    oracle逻辑结构分析

    这篇文章主要介绍了oracle逻辑结构分析,逻辑清楚,具有一定参考价值,需要的朋友可以了解下。
    2017-09-09
  • oracle数据库索引失效

    oracle数据库索引失效

    这篇文章主要介绍了oracle数据库索引失效的原因及如何避免索引失效,有需要的小伙伴参考下。
    2015-02-02
  • 新Orcas语言特性-查询句法

    新Orcas语言特性-查询句法

    新Orcas语言特性-查询句法...
    2007-04-04
  • oracle通过存储过程上传list保存功能

    oracle通过存储过程上传list保存功能

    这篇文章主要介绍了oracle通过存储过程上传list保存功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • Oracle Users表空间重命名问题解决

    Oracle Users表空间重命名问题解决

    这篇文章主要介绍了Oracle Users表空间重命名问题,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Oracle中 关于数据库存储过程和存储函数的使用

    Oracle中 关于数据库存储过程和存储函数的使用

    本篇文章,小编将为大家介绍,在Oracle中 关于数据库存储过程和存储函数的使用,有需要的朋友可以参考一下
    2013-04-04
  • 深入sql oracle递归查询

    深入sql oracle递归查询

    本篇文章是对sql oracle 递归查询进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 如何把Oracle 数据库从 RAC 集群迁移到单机环境

    如何把Oracle 数据库从 RAC 集群迁移到单机环境

    这篇文章主要介绍了把 Oracle 数据库从 RAC 集群迁移到单机环境,内容包括系统环境搭建,源数据库的操作及目标数据库的操作,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • Oracle中备份表的简单sql命令语句

    Oracle中备份表的简单sql命令语句

    备份表的简单sql命令想必有黑多的新手朋友们还是会忘记的即便是老手也不例外吧,下面与大家分享下具体的sql语句,希望对你有所帮助
    2013-05-05
  • oracle数据库定时任务dbms_job的用法详解

    oracle数据库定时任务dbms_job的用法详解

    这篇文章给大家详细介绍了dbms_job的用法,用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务。有需要的朋友们可以参考借鉴。
    2016-09-09

最新评论