如何恢复被更新掉的数据

参考:Oracle误删表内数据,如何恢复

/*1.FLASHBACK QUERY*/
 
/*这里只是查出被删之前的数据,如果要恢复,则把查询出来的数据导出为sql,然后找到原表,重新导入数据即可*/
 
--闪回到15分钟前
select * from orders as of timestamp (systimestamp - interval '15' minute) where ......
--这里可以使用DAY、SECOND、MONTH替换minute,例如:
SELECT * FROM orders AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '2' DAY)
 
--闪回到某个时间点
select * from orders as of timestamp to_timestamp ('01-Sep-04 16:18:57.845993', 'DD-Mon-RR HH24:MI:SS.FF') where ...
 
--闪回到两天前
select * from orders as of timestamp (sysdate - 2) where.........
 
 
/*2.FLASHBACK DROP*/
 
1.flashback table orders to before drop;
 
--2.如果源表已经重建,可以使用rename to子句:
flashback table order to before drop rename to order_old_version;
 
/*3.FLASHBACK TABLE*/
 
--1.首先要启用行迁移:
alter table order enable row movement;
--2.闪回表到15分钟前:
flashback table order to timestamp systimestamp - interval '15' minute;
--闪回到某个时间点:
FLASHBACK TABLE order TO TIMESTAMP TO_TIMESTAMP('2007-09-12 01:15:25 PM','YYYY-MM-DD HH:MI:SS AM') 

恢复被更新掉的数据

SELECT province_dept_name,province_dept_id,province_duty_id,province_duty_name
FROM t_table_name AS OF TIMESTAMP SYSDATE-80/1440
WHERE project_cd=‘B19302327125000’

举例说明:

参考:https://xielin2008.iteye.com/blog/2006945

SELECT * FROM wl_notify_task AS OF TIMESTAMP SYSDATE – 3/1440

对SQL的解释说明:

SYSDATE :当前时间

1440 :24h*60m=1440m

3:3分钟前

通过上面的查询,我们看到了在update之前的数据情况。那么把数据恢复回去就很简单了,通过ID关联的方式更新回去即可。如下:

update wl_notify_task t1
set t1.parameter =
(select parameter
from wl_notify_task AS OF TIMESTAMP SYSDATE – 3 / 1440
where t1.id = id)

这种做法也是DBA常用的恢复数据的手段。对于删除的情况,那么就通过insert办法重新把记录插入表即可。

最后需要特别提醒大家注意的是,SQL中的 SYSDATE-3/1440 代表查询3分钟前的记录情况,由于是和当前时间SYSDATE的距离3分钟前,所以这个随着隔的时间不同及时间的推移是会变化的,一般的做法是在真正做恢复时的update前,需要先select查询一下比如3分钟前的数据是否是我们想要的数据,确认无误后立即做恢复的update。如果数据不是我们想要的,那么就需要通过调节分钟数直到找到我们想要的数据。这种办法适合小批量数据,如果是大批量数据且很重要的数据的话,建议大家新建一张结构相同的表,先把as of timestamp查询出来的数据存到新表中,再进行恢复操作,因为这样数据不再受时间差的影响,确保数据是准确的,无论你何时开始做恢复操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当NameNode挂时,为了确保数据不丢失,可以采取以下方法进行恢复: 1. NameNode高可用(HA):在生产环境中,可以配置NameNode的高可用架构,通过使用两个或多个NameNode节点来提供冗余和故障转移。在HA配置下,一个NameNode作为主节点,负责处理客户端请求和管理元数据,而其他NameNode作为备用节点,处于待命状态。当主节点故障时,备用节点可以接管主节点的工作,从而实现快速故障转移和恢复。 2. NameNode镜像:在单节点的情况下,可以定期创建NameNode的镜像文件(FsImage),该文件包含了文件系统的元数据信息。当NameNode挂时,可以使用最新的镜像文件来恢复故障节点,并重新启动NameNode服务。这种方法可能会导致一些数据更新丢失,因为镜像文件不一定是实时的。 3. 增量日志(Edit Log)的合并:在HA配置下,当主节点挂时,备用节点可以使用主节点的增量日志来合并到自己的元数据中。增量日志记录了文件系统的变更操作,包括文件的创建、删除、重命名等。通过合并增量日志,备用节点可以使自己的元数据与主节点保持一致。 无论采取哪种恢复方法,都需要进行适当的配置和操作,以确保数据不丢失和系统的可靠性。此外,为了保证数据的持久性和可靠性,建议定期进行数据备份,并确保备份数据的完整性和可恢复性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值