Oracle闪回
Oracle数据库作为企业级数据库系统之一,在数据安全和故障恢复方面都拥有优异的表现。其中,闪回技术作为一项备受追捧的恢复能力,能够在不停止数据库的情况下,撤销数据库中的误操作,并快速回滚到先前的状态。
本文主要介绍使用Oracle闪回对数据表进行回滚。
适用场景:插入、更新、删除等误操作
例如使用insert、update、delete等语句对数据表进行错误操作,需要将数据表回滚到操作前。
语法
FLASHBACK TABLE 表名 TO TIMESTAMP TO_TIMESTAMP(闪回的时间, 'YYYY-MM-DD HH24:MI:SS');
示例
-- 闪回 sys_user表 到 2023年7月14号 0点
FLASHBACK TABLE sys_user TO TIMESTAMP TO_TIMESTAMP('2023-07-14 00:00:00', 'YYYY-MM-DD HH24:MI:SS');
如果运行闪回语句出现错误:ORA-08189: cannot flashback the table because row movement is not enabled
,运行下面语句开启表的行迁移,再次运行闪回语句即可:
-- 开启sys_user表的行迁移
alter table sys_user enable row movement;
注意
在生产数据库操作数据时,最好进行备份、事务等操作,不要过度依赖于闪回。
他并不是最好的解决方案:
- 如果闪回的时间点有产生业务数据,那么这个时间段的业务数据会丢失。
- 如果闪回的指定时间到当前时间修改了表结构则无法成功闪回。