目录
[1. 闪回查询 / 闪回版本查询 / 闪回事务查询](#1. 闪回查询 / 闪回版本查询 / 闪回事务查询)
[2. 闪回表](#2. 闪回表)
[3. 闪回数据库](#3. 闪回数据库)
[4. 闪回删除](#4. 闪回删除)
一、无固定时长,由三大因素决定
Oracle 闪回的历史数据查看能力没有统一默认值,核心受「功能类型」「参数配置」「系统状态」三重约束,不同闪回功能的查看窗口差异显著,且实际时长可能短于理论配置(因资源限制)。
二、查看时长及关键控制因素
Oracle 闪回包含 7 类核心功能(如闪回查询、闪回数据库等),各类功能的查看时长逻辑不同,具体如下:
1. 闪回查询 / 闪回版本查询 / 闪回事务查询
- 依赖基础:UNDO 表空间(存储数据修改前的历史版本)
- 控制参数:UNDO_RETENTION(单位:秒)
-
- 默认值:900 秒(15 分钟)
-
- 可手动调整(如设置为 1 天:ALTER SYSTEM SET UNDO_RETENTION = 86400;)
- 实际查看时长:
-
- 最小保障:至少支持UNDO_RETENTION设定的时间(系统空闲时可能更长)
-
- 上限限制:若 UNDO 表空间不足,或数据库事务量大,旧数据会被覆盖,实际时长可能短于配置值
- 适用场景:查询表级历史数据(如误删 / 误改后的数据追溯),支持通过时间戳(AS OF TIMESTAMP)或 SCN(AS OF SCN)查询
2. 闪回表
- 依赖基础:同闪回查询(UNDO 表空间 +UNDO_RETENTION参数)
- 默认查看时长:部分文档提及默认 14400 分钟(1 天),本质仍受UNDO_RETENTION和 UNDO 表空间大小约束
- 特殊限制:若表执行过 DDL 操作(如修改字段、重建索引),无法闪回到 DDL 操作之前的时间点
- 前提条件:需启用表的行移动功能(ALTER TABLE 表名 ENABLE ROW MOVEMENT;)
3. 闪回数据库
- 依赖基础:闪回恢复区(FRA)+ 闪回日志(记录数据块变更前镜像)
- 控制参数:DB_FLASHBACK_RETENTION_TARGET(单位:分钟)
-
- 默认值:1440 分钟(1 天)
-
- 可手动调整(如设置为 3 天:ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET = 4320;)
- 实际查看时长:
-
- 核心约束:闪回恢复区大小(DB_RECOVERY_FILE_DEST_SIZE参数),若空间不足,旧闪回日志会被删除,导致查看时长缩短
-
- 前提条件:数据库需处于归档模式,且已配置闪回恢复区(DB_RECOVERY_FILE_DEST参数指定路径)
- 适用场景:全库逻辑错误恢复(如批量更新错误),支持回退到指定时间点或 SCN
4. 闪回删除
- 依赖基础:回收站(Recycle Bin)机制(误删表不会立即物理删除,而是逻辑重命名后存入回收站)
- 查看时长:无固定参数控制,取决于:
-
- 回收站未被手动清理(PURGE RECYCLEBIN;会永久删除回收站对象)
-
- 表空间剩余空间:若表空间不足,Oracle 可能自动清理回收站中最早的对象
- 恢复限制:若表被删除后,其所属表空间被删除或重命名,可能无法恢复
三、影响查看时长的关键补充因素
- 存储资源大小:
-
- UNDO 表空间越大,能保留的历史数据版本越多,闪回查询 / 闪回表的查看时长越长
-
- 闪回恢复区(FRA)越大,可存储的闪回日志越多,闪回数据库的查看窗口越宽
- 数据库负载:
-
- 事务量越大,UNDO 数据和闪回日志生成越快,旧数据被覆盖的速度也越快,实际查看时长会缩短
-
- 系统空闲时,UNDO 数据可能保留超过UNDO_RETENTION设定的时间,查看时长可能延长
- 功能兼容性:
-
- 动态性能视图(如V、X系列)不支持闪回查询,仅对DBA_、ALL_、USER_类视图有效
-
- 闪回数据库无法恢复物理损坏(如数据文件丢失),仅适用于逻辑错误
四、实用查询:确认当前数据库的闪回查看能力
-
查看闪回查询的可用时长(基于 UNDO 配置):
SELECT
NAME, VALUE/60 AS "默认保留分钟", VALUE/3600 AS "默认保留小时"
FROM V$PARAMETER
WHERE NAME = 'undo_retention';
-
查看闪回数据库的配置时长:
SELECT
NAME, VALUE AS "默认保留分钟", VALUE/60 AS "默认保留小时"
FROM V$PARAMETER
WHERE NAME = 'db_flashback_retention_target';
-
查看闪回数据库的实际可用时间范围:
SELECT
OLDEST_FLASHBACK_SCN,
TO_CHAR(OLDEST_FLASHBACK_TIME, 'YYYY-MM-DD HH24:MI:SS') AS "最早可闪回时间"
FROM V$FLASHBACK_DATABASE_LOG;
下期的内容更精彩,期待一下吧!!
* Thanks you *
如果觉得文章内容不错,随手帮忙点个赞 、在看 、转发一下,如果想第一时间收到推送,也可以给我个星标⭐~谢谢你看我的文章。
*Spring 系列 - 往期推荐 *
如何快速起 Spring Ai Alibaba 的智能记忆会话的业务项目(零基础学习Ai-第一期)(推荐)****
利用Reids记忆存储(高并发),持久化记忆会话的基础业务功能(零基础学习Ai-第二期)
构建 Tools 达成智能化的会话的基础业务功能(零基础学习Ai-第三期)
SpringBoot整合Openfeign接入Kimi Ai!!超简单,居然没多少行代码??(附加兜底教程)
Spring Ai | 极简代码从零带你一起走进AI项目(中英)
Swagger | 手把手带你写自动生成接口文档的爽感(零基础亲测实用)
Mongodb | 基于Springboot开发综合社交网络应用的项目案例(中英)
MongoDB | 零基础学习与Springboot整合ODM实现增删改查(附源码)(推荐)********
Openfeign | 只传递城市代码,即可获取该地域实时的天气数据(免费的天气API)
*前后端 系列 - 往期推荐 *
彻底解决不同架构前后端分离项目的跨域问题(强烈推荐)
Maven | 站在初学者的角度配置与项目创建(新手必学会)
*其他 系列 - 往期推荐 *
实现如何利用 Kafka 延时删除 用户邮箱的验证码(如何发送邮箱+源码) - 第一期
Docker小白入门教程一篇领你入门(CRUD全命令+无废话版+问题集)
想要高效处理,那不妨看看 Python的 异步 Asyncio 保证效率翻多倍
银河麒麟 | ubuntu 安装国产达梦DM8数据库(安装+外网通+IDEA连接)
国产操作系统-银河麒麟本地化部署Ollama国产开源的AI大模型Qwen3
感谢阅读 | 更多内容尽在公棕号 WMCode | CSDN**@小Mie不吃饭**
©著作权归作者所有,转载或内容合作请联系作者,谢谢支持与配合
