Oracle update commit 后恢复
今天碰到写了个update sql 忘了加条件,然后点了commit ,整个表数据都被改变了,惊!!!心里想:准备删库跑路,时间还没到啊…
还好网上查资料才知道,Oracle有备份表的旧数据,所以一会功夫就搞定了,如下:
1.备份的旧表数据查询:
select * from table_name as of timestamp to_timestamp('2020-07-11 09:36:53','yyyy-mm-dd hh24:mi:ss');
table_name : 表名称
2020-07-11 09:36:53 : 查询旧数据的时间点
2.稍微包装下sql,多层嵌套,达到将旧数据set到表里:
以恢复 name 字段为例子:
update table_name n set n.name =
(
select
a.name
from
(
select
name ,id
from table_name as of timestamp to_timestamp('2020-07-11 09:36:53','yyyy-mm-dd hh24:mi:ss')
)
a
where a.id=n.id
);
本文分享了在Oracle数据库中因未添加条件导致全表数据误更新后,如何利用Oracle的闪回特性快速恢复至指定时间点的旧数据。通过查询备份的旧表数据并使用多层嵌套SQL,可以将旧数据重新设置到表中,恢复特定字段如name。但需要注意的是,对于LOB类型数据的处理需更加谨慎。

被折叠的 条评论
为什么被折叠?



