MENU

ORACLE 闪回功能学习备忘

January 9, 2026 • 学习

Oracle 闪回技术可将恢复时间从数小时缩短至数分钟。

任何预防措施都无法避免人为失误的发生。Oracle数据库闪回技术是一组独特而丰富的数据恢复解决方案,能够有选择性地高效撤销一个错误的影响,从人为错误中恢复。在采用闪回技术之前,损坏数据库只需数分钟,而要恢复它则需要数小时。有了闪回技术,纠正错误只需要数分钟的时间。此外,从错误中恢复所需的时间与数据库大小无关,这是Oracle 数据库独有的功能。闪回技术支持在所有层面上进行恢复,包括行、事务、表和整个数据库。

闪回功能的前提

打开闪回功能

-- 需要先把数据库切到Mount模式
SHUTDOWN IMMEDIATE
STARTUP MOUNT
ALTER DATABASE ARCHIVELOG
ALTER DATABASE FLASHBACK ON
ALTER DATABASE OPEN

-- 对于多租户PDB,打开数据库操作
SHOW PDBS
ALTER PLUGGABLE DATABASE ALL OPEN;
ALTER PLUGGABLE DATABASE ORCLPDB1 OPEN;


-- 闪回功能状态查询
SELECT flashback_on FROM v$database;

开启表回收站

ALTER SYSTEM SET RECYCLEBIN = ON SCOPE=BOTH;
-- SCOPE 指定操作的配置文件的类型,可以是MEMORY、SPFILE、BOTH。

-- 查看当前回收站配置
SHOW PARAMETER recyclebin;

-- 查看回收站中的对象
SELECT * FROM DBA_RECYCLEBIN;

-- 类似的,用户回收站视图
SELECT * FROM USER_RECYCLEBIN

-- 恢复回收站中的对象
FLASHBACK TABLE table_name TO BEFORE DROP;

-- 清空回收站
PURGE DBA_RECYCLEBIN;
-- 类似的
PURGE RECYCLEBIN;

-- 删除回收站中的特定对象
PURGE TABLE table_name;
  • 特别注意,该功能对 SYS 用户和 SYSTEM 表空间无效。

闪回操作选择与常见场景

闪回查询

核对历史数据,想看看误删前的数据长什么样。或审计需要。

-- 查询 1 小时前的数据
SELECT * FROM schema.表名 AS OF TIMESTAMP (SYSDATE - 1/24);

-- 或者查询两个 SCN 之间的版本变化
SELECT * FROM schema.表名 VERSIONS BETWEEN SCN 1000 AND 2000;

闪回删除

就像 Windows 的回收站功能。当执行 DROP TABLE 时,Oracle 默认会将其重命名放入回收站。

-- 1. 查看回收站里的表(原表名已变更为BIN$开头)
SHOW RECYCLEBIN;
-- 2. 执行闪回(恢复原名)
FLASHBACK TABLE schema.表名 TO BEFORE DROP;
-- 3. 如果有重名冲突,恢复并重命名
FLASHBACK TABLE schema.表名 TO BEFORE DROP RENAME TO 表名_old;

闪回表

针对错误的 DELETE/UPDATE,由于数据库原理原因,需要打开行移动功能。

-- 0. 开启行移动(必须步骤)
ALTER TABLE schema.表名 ENABLE ROW MOVEMENT;

-- 1. 闪回到 10 分钟前
FLASHBACK TABLE schema.表名 TO TIMESTAMP (SYSDATE - 10/1440);

-- 2. 或者闪回到具体的 SCN
FLASHBACK TABLE schema.表名 TO SCN 12345678;

-- 3. 恢复完成后,建议关闭行移动(除非业务需要)
ALTER TABLE schema.表名 DISABLE ROW MOVEMENT;

闪回数据库

针对一些无法挽回的重大错误,需要关闭数据库

-- 1. 关闭数据库
SHUTDOWN IMMEDIATE;

-- 2. 启动到 Mount 状态(不要 Open)
STARTUP MOUNT;

-- 3. 执行闪回(例如闪回到昨天 10:00)
FLASHBACK DATABASE TO TIMESTAMP TO_DATE('2023-10-01 10:00:00', 'YYYY-MM-DD HH24:MI:SS');

-- 4. 打开数据库(必须使用 resetlogs,这会重置日志序列)
ALTER DATABASE OPEN RESETLOGS;

常见错误

  • ORA-08189:需要启动行移动
  • ORA-38754:需要启用闪回功能

即日起视情况关闭全站评论区,您可以通过关于页面的电邮地址和我取得联系,谢谢

Last Modified: January 12, 2026
Archives QR Code
QR Code for this page
Tipping QR Code