oracle 执行错误回滚如何操作

当使用Navicat连接Oracle并误执行无WHERE条件的UPDATE语句导致大量数据被修改时,可以利用Oracle的闪回功能来恢复数据。首先,查询v$sqlarea以找出执行的更新语句,然后启用行移动功能,再执行闪回语句,指定到更新前的时间点,从而将数据恢复到更新前的状态。这种方法对于防止意外数据修改提供了有效的解决方案。
摘要由CSDN通过智能技术生成

在navicat连接oracle时,默认事务是自动提交的。如果在写update语句的忘记加上where条件,导致数据库表的数据全部都修改了,为此我总结了一下在oracle数据库中,通过SQL撤回已经commit的update操作,将数据恢复到执行update语句之前的数据。原理是oracle提供了一种闪回的方法

第一步:

执行如下语句(固定的语句),查询出自己执行的语句,查询时间会比较长:

select r.FIRST_LOAD_TIME,r.* from v$sqlarea r order by r.FIRST_LOAD_TIME desc ;

查询的结果参考:

第二步,执行下面两条语句:

alter table TW_PW_DEV_STATUS enable row movement;

闪回操作前启用行移动功能

flashback table TW_PW_DEV_STATUS to timestamp to_timestamp('2021-01-27 17:45:57', 'yyyy-mm-dd hh24:mi:ss');

其中TW_PW_DEV_STATUS是表的名称

2021-01-27 17:45:57是自己提交update事务的时间,可以将数据还原到update之前的数据。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值