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

Oracle数据库恢复删除数据的方法误删oracle数据库中的数据,在不考虑全库备份和利用归档日志情况,怎样快速恢复数据呢?下面介绍3种方法。1.利用oracle提供的闪回方法进行数据恢复,适用于delete删除方式首先获取删除数据的时间点:select*fromv$sqlwheresql_textlike’%table_name%’;根据结果中的sql_text内容,找到delete执行语句对应的删除时间点,执行下面语句查询出删除的数据。select*fromtable_nameasoftime

大家好,又见面了,我是你们的朋友全栈君。

误删oracle数据库中的数据,在不考虑全库备份和利用归档日志情况,怎样快速恢复数据呢?

下面介绍3种方法。

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_nameoriginal_name就是回收站存放的表名和原来删除的表名,如果表名没有被重新命名,可以通过下面语句进行恢复:

flashback table original_name to before drop;

如果不知道源表名,或者需要重新命名新的表名存放数据,则可以通过回收站中的object_name进行恢复,命令如下:

flashback table object_name to before drop new_table_name;

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
  3. 通过删除recyclebin区域来永久性删除表 ,drop table table_name cascade constraints purge table table_name;

5. 关于清空回收站

  1. 删除当前用户回收站

    purge recyclebin;

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

    purge dba_recyclebin;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160777.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月17日 下午12:16
下一篇 2022年7月17日 下午12:16


相关推荐

  • 神经网络激活函数汇总(Sigmoid、tanh、ReLU、LeakyReLU、pReLU、ELU、maxout)

    神经网络激活函数汇总(Sigmoid、tanh、ReLU、LeakyReLU、pReLU、ELU、maxout)神经网络激活函数汇总(Sigmoid、tanh、ReLU、LeakyReLU、pReLU、ELU、maxout)常规sigmoid和tanhsigmoid特点:可以解释,比如将0-1之间的取值解释成一个神经元的激活率(firingrate)缺陷:有饱和区域,是软饱和,在大的正数和负数作为输入的时候,梯度就会变成零,使得神经元基本不能更新。只有…

    2025年5月25日
    5
  • WIN7系统安装MySQL5.6

    WIN7系统安装MySQL5.6

    2021年5月30日
    109
  • 韩顺平Utility工具类(java房屋出租项目)

    韩顺平Utility工具类(java房屋出租项目)大家可以复制 我看大家看视频都找不到这个工具类 直接放 csdn 了 需要的自己复制 packageProje houserent utils 工具类的作用 处理各种情况的用户输入 并且能够按照程序员的需求 得到用户的控制台输入 importjava util publicclassU 静态属性 privatestati newScanner System in

    2026年3月18日
    2
  • 公司拿到了量化交易模型, 交易员和策略师就可滚蛋了?[通俗易懂]

    公司拿到了量化交易模型, 交易员和策略师就可滚蛋了?[通俗易懂]作者:天启大烁哥源自:天启量投(ID:QDLG001)在知乎上看到了一个很有趣的问题。在这个问题下面,提问者留了一些自己的看法:有种感觉,资本一直试图用电脑代替人,把人的工作用电脑替代,这样资本就可以拿走人的技术,拿走技术的费用是低廉的,这么做貌似很划算。炒了两年期货了,琢磨用程序来替代自己,但是发现很困难,我是搞电脑的没有技术障碍,算法不难,难就难在我自己的不确定…

    2022年6月26日
    27
  • 怎么检查计算机和打印机是否连接网络,检查电脑是否正确连接网络打印机

    怎么检查计算机和打印机是否连接网络,检查电脑是否正确连接网络打印机我们有时候会在电脑中连接网络打印机来进行打印工作。可是有用户会遇到文件无法打印的问题。那么这个时候应该怎么检查电脑中是否已成功连接网络打印机?对此,我们可以参考以下方法来进行操作。1、如果文件打印不了,按Crtl+P打开打印对话框,在打印机名称中看看有没有网络打印机的名称,如果没有则说明打印机驱动有问题,需要重新安装网络打印机的驱动程序;2、如果有显示打印机名称,那么问题有可能是网络连接错误或者打…

    2022年5月10日
    232
  • golang2022.1 激活吗(注册激活)

    (golang2022.1 激活吗)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~B…

    2022年3月31日
    970

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号