不小心修改了数据库,已经提交了,没有备份,还能恢复吗?碰到这个问题,你多半要哭了。
别担心,Oracle就可以。不要总抱怨Oracle占地方,这个功能关键时刻真能保命。
如果你用到这个功能,说明你之前一定脑抽或手滑了,以后小心吧。
假设你操作了表A,而且提交了。
-- 查10分钟前数据(先回想下干坏事是啥时候)
SELECT * FROM A AS OF TIMESTAMP SYSDATE - INTERVAL '10' MINUTE;
-- 查看指定时间点的数据(需要精准时间)
SELECT * FROM A AS OF TIMESTAMP TO_TIMESTAMP('2026-06-16 17:00:00', 'YYYY-MM-DD HH24:MI:SS');
先搞个备份
create table a_bak as 用上面两种方案的查询语句
直接回滚
-- 第一步:开启表的行移动功能(必须执行)
ALTER TABLE A ENABLE ROW MOVEMENT;
-- 第二步:闪回表到 10 分钟前
FLASHBACK TABLE A TO TIMESTAMP SYSDATE - INTERVAL '10' MINUTE;
-- 第三步:关闭行移动(可选)
ALTER TABLE A DISABLE ROW MOVEMENT;