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
);