Oracle误更新/删除 数据恢复

本文介绍了在Oracle数据库中如何利用Flashback功能恢复误更新的数据。通过查询特定时间点的历史数据,然后将这些数据更新回当前表,从而实现数据恢复。在权限允许的情况下,使用System账户进行操作可以避免权限不足的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle都带有回滚机制,在更新数据后历史数据会放在一个类似于独立的磁盘中的flashback返回区,这个返回区的容量一般是由dba设定,大多数公司都会设定在业务数据存储量的两天时间以上的容量,即可以还原两天内操作前的原数据。

 

昨天我处理业务数据的时候不小心误更新了300条数据,导致部分异常,所以本次我来检讨一下自己并写一下处理方案。

由于Oracle有flashback返回区存储更新前的数据,所以我们提交了脚本也可以在返回区存储时间范围内进行数据回滚;具体返回区原理这里不多做说明;

 

回滚操作:

首先我们先要判断回滚时间点。数据库是没有办法查看字段最后一次操作时间的,所以一般按照业务要求时间作为回滚回去的时间。如

我是昨天早上10点左右收到了邮件要求更新数据,今天早上9.30邮件告知数据更新异常并影响其他;所以此次回滚我回滚到昨天10点以前,我定在9.30.

语句:

select commodityid, provincecode
  from t_commodity_exchangescope as of timestamp sysdate - 1 
 where commodityid = '197289';
说明:查询昨天这个时间的数据情况,此次我更新了commodityid, provincecode这两个字段,所以我只查这个两个字段,查看历史时间数据关键词是 as of timestamp  查看时间范围是 sysdate- 1440/1440 这里1440是分钟,比如我要查看3分钟以前的数据 sysdate-3/1440,由于我要查看一天前的数据所以 sysdate-1;不加where条件会全表查看,为了提高处理效率我只选择查看我更新过的数据: where commodityid = '197289';

 

这里我们可以得出一个结论是:我们能够查询出操作时间前的数据,对于support来说能够快速判断修改的数据是否异常;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值