Oracle数据库单表回滚

单表记录回滚到指定时间,在进行数据回滚前,也可以通过命令查看回滚时间点前的数据情况,语句如下:

select * from 表名  as of timestamp to_timestamp('2019-11-26 15:02:00', 'yyyy-mm-dd hh24:mi:ss');

接下来就是进行数据回滚操作了。
(1)开启闪回,如果不开启无法进行闪回

alter table 表名 enable row movement;

(2)闪回表数据到某个时间点

flashback table 表名 to timestamp TO_TIMESTAMP('2019-11-26 15:02:00', 'yyyy-mm-dd hh24:mi:ss');

(3)关闭闪回

alter table 表名 disable row movement;

此外还可使用一下语句恢复数据,但存在一些不足地方,当表结构修改了以后,在表修改之前的数据不可恢复在这里插入图片描述
语句如下:

MERGE INTO B_MERGE A USING (SELECT * FROM B_MERGE AS OF TIMESTAMP to_timestamp('2019-11-26 14:39:59', 'yyyy-mm-dd hh24:mi:ss') MINUS SELECT * FROM B_MERGE) C ON (A.id=C.id)

WHEN MATCHED THEN

UPDATE SET A.YEAR=C.YEAR

WHEN NOT MATCHED THEN

 INSERT(A.ID,A.NAME,A.YEAR) VALUES(C.AID,C.NAME,C.YEAR); 

commit;

‘’“查询语句A” MINUS “查询语句B”‘ :表示得到的是查询语句A查到的记录但不存在于查询语句B的记录(查询的是同一个表),当“ON (A.id=C.id)”条件满足则执行更新,不满足就执行插入。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值