Orcale回滚数据

本文介绍了如何在Oracle数据库中恢复误操作或脏数据。提供了两种方法:一是通过查询特定时间点的记录来恢复,二是利用Oracle的闪回技术。详细步骤包括查询历史记录、备份现有数据、启用行迁移以及执行闪回操作。提醒读者在操作前务必做好数据备份。

在开发或客户使用过程中,难免会出现误操作或脏数据,那么怎么迅速处理这个问题呢?

第一种:

记住大概的时间,获取前大概时间的数据。

1

select * from Test as of timestamp to_timestamp('2021-12-08 09:30:56','yyyy-mm-dd hh24:mi:ss');

上面的代码就可以查看你要恢复的时间点的记录,看看是不是有你想要的刚刚提交的DML相关记录。

能看到,剩下的就简单了,可以把现在表中的数据备份到一个临时表,然后把记录插进去原表就行了

不要用truncate删除,不然你就回不去了,到时候你就又要哭了。

1

2

3

4

delete from Test;

insert into Test select * from Test as of timestamp to_timestamp('2021-12-08 09:30:56','yyyy-mm-dd hh24:mi:ss');

commit;

第二种:

Oracle在9i版本的时候引入了闪回技术,在Oracle 10g已经全面提供了闪回功能,主要提供了快速简单恢复数据库误操作的数据的恢复方法,而不用从逻辑备份或物理备份中恢复过来。

oracle数据库表数据回滚到某一时间
1、查询某一时间点该表的数据
select * from 表 as of timestamp to_timestamp(‘2020-07-02 12:11:11’,‘yyyy-mm-dd hh24:mi:ss’);
2、对表进行行迁移
alter table 表 enable row movement;
3、回滚表到时间节点
flashback table 表 to timestamp to_timestamp(‘2020-07-02 12:11:11’,‘yyyy-mm-dd hh24:MI:SS’);
————————————————

这样被误操作的数据就可以“找”回来了。哈哈~

ps:回滚表数据前可先select * from 表;查看下数据量或者详细数据哦,方便回滚后再次查看是否回滚已生效,--》记得commit

方法来源于网络整理,请谨慎操作!!!修改数据前养成好习惯,手动备份下数据!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值