图文深入理解Oracle Total Recall
- List item
题记:本文图文深入理解Oracle Total Recall技术。
1. Oracle Total Recall 概述
Oracle Total Recall(也称为 Flashback Data Archive - 闪回数据归档)提供了一种用于跟踪数据库更改的机制,可自动跟踪数据库历史更改:
• 在表级别启用设置 UNDO 数据保留期限,不会出现快照太旧的错误。
• 启用后,所有数据更改的存储都是对应用程序透明的、并能够防止篡改。在表的整个生命期内跟踪并存储对该表的所有事务处理更改,无需将此功能内置到应用程序中。
• 超出归档保留期限的记录会被自动删除。
• 可使用闪回查询检索数据表的历史记录
SELECT … AS OF TIMESTAMP…
SELECT … VERSIONS BETWEEN TIMESTAMP and TIMESTAMP…

2. Oracle Total Recall 工作原理
以下图片是来自官方文档的解释:

- 工作原理
Oracle Total Recall是Oracle数据库中一种强大的数据历史记录功能。,Oracle Total Recall利用数据库中的undo日志和历史表功能,实现对数据历史记录的跟踪和存储。当数据库中的数据发生变化时,Total Recall会捕获这些变化,并将它们存储在指定的历史表空间中,以便后续进行闪回查询。 - 核心组件
Undo日志:Oracle数据库中的undo日志用于记录数据的更改历史。当数据发生变化时,undo日志会记录更改前的数据状态,以便在需要时进行回滚。
历史表空间:用于存储Total Recall捕获的数据更改历史。这些表空间可以包含一个或多个闪回数据归档(Flashback Data Archive),每个归档都有其特定的保留时间和空间配额。
闪回数据归档(FDA):是Oracle Total Recall的核心组件,用于跟踪和存储数据库表的更改历史。通过为表启用闪回归档,可以自动捕获并存储对该表的所有事务处理更改。
3. Oracle Total Recall的工作流程

默认情况下,闪回归档对任何表都处于关闭状态。
- 启用闪回归档:首先,需要为数据库表启用闪回归档。这可以通过ALTER TABLE语句指定FLASHBACK ARCHIVE子句来完成。启用后,该表的所有后续更改都会被自动捕获并存储在指定的闪回数据归档中。
- 捕获数据更改:当表中的数据发生变化时,Oracle Total Recall会利用undo日志捕获这些更改。捕获的更改包括插入、更新和删除操作。
- 存储历史记录:捕获的数据更改会被存储在启用了闪回归档的表的历史表空间中。这些更改以事务为单位进行存储,并保留了更改的时间戳和SCN(System Change Number)信息。
- 闪回查询:用户可以通过闪回查询来检索数据库表在过去某个时间点的状态。这可以通过SELECT语句的AS OF TIMESTAMP子句或VERSIONS BETWEEN TIMESTAMP AND TIMESTAMP子句来完成。查询结果将显示指定时间点或时间段内的数据状态。
4. Oracle Total Recall 的使用场合:
1. Oracle Total Recall 常用于以下场合:
• 审计支持:查找自去年以来重复的保险索赔。
• 合规性支持:监视平静期的股票交易情况。
• 信息生命周期管理 (ILM - Information Lifecycle Management):确保能对病人病历的连续跟踪访问。
• 执行保留策略:自动清除五年以前的记录。
• 历史报告:检索客户的信用及付款历史记录。
• 错误恢复:还原被错误地删除或更新的记录。
2. racle Total Recall 设置:
- 默认情况下,系统没有闪回数据归档。可以使用以下两种方式之一设置默认的数据归档:
-- create the Flashback Data Archive
CREATE FLASHBACK ARCHIVE DEFAULT fla1
TABLESPACE tbs1 QUOTA 10G RETENTION 5 YEAR;
-- Specify the default Flashback Data Archive
ALTER FLASHBACK ARCHIVE fla1 SET DEFAULT;
- 数据表启用闪回数据归档。如果自动还原管理处于禁用状态,则在修改表时会出现ORA-55614 错误。
-- Enable/Disable Flashback Data Archive(使用默认归档)
ALTER TABLE inventory FLASHBACK ARCHIVE;
ALTER TABLE inventory NO FLASHBACK ARCHIVE;
- 使用闪回查询访问已归档的历史数据
SELECT product_number, product_name, count FROM inventory
AS OF TIMESTAMP TO_TIMESTAMP ('2007-01-01 00:00:00','YYYYMM-DD HH24:MI:SS');
- 增加归档的空间:
ALTER FLASHBACK ARCHIVE fla1 ADD TABLESPACE tbs3 QUOTA 5G;
- 更改保留时间:
ALTER FLASHBACK ARCHIVE fla1 MODIFY RETENTION 2 YEAR;
- 清除数据:
ALTER FLASHBACK ARCHIVE fla1 PURGE BEFORE TIMESTAMP(SYSTIMESTAMP-INTERVAL '1' day);
- 删除闪回数据归档(直接删除闪回数据归档的全部表空间会引发错误)
DROP FLASHBACK ARCHIVE fla1;
5. 调整Oracle Total Recall
使用 DBMS_FLASHBACK_ARCHIVE 程序包中的取消关联或关联过程,可执行不被自动支持的所有 DDL 更改。
• 可以使用 DISASSOCIATE_FBA 和 REASSOCIATE_FBA 过程从闪回数据归档取消关联和重新关联给定的表。
• 取消关联是对指定的表禁用数据归档,以执行更复杂的 DDL 操作(如:升级、拆分表,等等)。
• 重新关联时将执行方案完整性检查,验证基表和历史记录表必须在相同的Schema 中。
注:应谨慎使用此项功能,因为在取消关联期间,历史记录也可能会更改。

在启用了闪回数据归档的表中使用某些 DDL 语句会导致 ORA-55610 错误。例如:
–ALTER TABLE 语句,其中包含 UPGRADE TABLE 子句;
–ALTER TABLE 语句,用于移动或交换分区或子分区操作;
–DROP TABLE 语句;
• 如果基表使用 Hybrid Columnar 压缩,则对基表不能启用 Total Recall。
• 如果使用取消关联,则不能保证历史记录的固定不变(但可以清除之前的历史记录)。
• 历史记录表没有可移植性。
6. 使用Oracle Total Recall的准则
•使用 SCN 进行精确时间查询。如果使用时间戳,查询的实际时间可能会比指定的时间提前 3 秒钟。Oracle DB 在内部使用 SCN,并以 3 秒钟的粒度级别将它们映射到时间戳。
• 获取 SCN:可以使用函数DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER
• 获取时间戳:可将 SYSTIMESTAMP 函数的值加上或减去一个 INTERVAL 值。
• 所有闪回处理过程都使用当前会话设置(如国家/地区语言和字符集),而不是在所查询的时间有效的设置。
• 在查询过去的数据之前,先执行 COMMIT 或 ROLLBACK 操作,确保数据库的一致性。
• 不能从动态性能(V$) 视图检索过去的数据,此类视图只返回当前的数据。
• 但是,可以在静态数据字典视图(如*_TABLES)中执行对过去数据的查询。
7. 查看闪回数据归档

本篇完结
码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者,后续不定期分享DB核心知识和排障案例及经验、性能调优等。
相关文章:
图文深入理解Oracle Total Recall
List item 题记:本文图文深入理解Oracle Total Recall技术。 1. Oracle Total Recall 概述 Oracle Total Recall(也称为 Flashback Data Archive - 闪回数据归档)提供了一种用于跟踪数据库更改的机制,可自动跟踪数据库历史更改…...
腾讯云控制台URL刷新URL预热 使用接口刷新
如图所示的俩个控制台功能,调用腾讯云的接口执行这俩个动作 (代码可以优化)nodejs框架是express, 这里粘贴调用成功的代码示例,做个记录。 app.get(/PurgeUrlsCache, async function (req, res, next) {// Depends on tencentclo…...
构建后端为etcd的CoreDNS的容器集群(二)、下载最新的etcd容器镜像
在尝试获取etcd的容器的最新版本镜像时,使用latest作为tag取到的并非最新版本,本文尝试用实际最新版本的版本号进行pull,从而取到想的最新版etcd容器镜像。 一、用latest作为tag尝试下载最新etcd的镜像 1、下载镜像 [rootlocalhost opt]# …...
libaom-all-intra参数说明
part_sf.less_rectangular_check_level 1; 这个设置可能控制编码器在分割画面时使用非矩形分区的检查级别。part_sf.ml_prune_partition 1; 这个设置可能用于基于机器学习(ML)的分区修剪,以减少不必要的计算。part_sf.prune_ext_partition_…...
应用假死?
有个客户10月18日应用接口都访问慢,nginx层面error显示连接拒绝,当时实施同学重启了java应用运行正常,但今天又卡死了,后台登录也登录不上去,看日志没异常,最终找到了数据库层面。 查看数据库相关日志&…...
SAP MM+FI - 物料管理模块与财务会计模块的集成配置
01 采购费用过账配置表 为了方便项目实施过程中采购费用过账配置,迪森资深专家根据丰富经验总结得出采购费用过账配置表,以供大家参考: 02 材料采购订单入库及结算 2.1采购订单入库 假设:入库数量1000PC,价格 10 元…...
初阶数据结构【3】--单链表(比顺序表还好的一种数据结构!!!)
本章概述 前情回顾单链表实现单链表彩蛋时刻!!! 前情回顾 咱们在上一章博客点击:《顺序表》的末尾,提出了一个问题,讲出了顺序表的缺点——有点浪费空间。所以,为了解决这个问题,我…...
mysql迁移到达梦的修改点
字段是达梦关键字的,达梦会给转成大写,如果不要转则需要使用双引号引起来。关键字参考:D:\dmdbms\doc\DM8_SQL语言使用手册.pdf 例如:RowCount Level Content Password Locked 中文乱码问题,需要在应用程序所在服务器的…...
Go小技巧易错点100例(十八)
正文: 使用下划线增加数字可读性 有时候我们代码里会定义很长的数字,虽然计算机程序能支持很大的数据的计算,但是对我们来说,可读性是一个需要考虑的点,特别是1后面全是0的时候。 但是这个问题在Go语言中是可以通过…...
【python】极简教程8-字符串
第八章:字符串 8.1 字符串即序列 字符串是一系列字符的有序集合,可以使用索引访问字符串中的各个字符,索引从 0 开始。 示例代码: fruit = banana letter = fruit[1] print(letter) # 输出: a8.2 len 函数 len 函数返回字符串的长度(字符数)。...
UEFI EDK2框架学习 (四)——UEFI图形化
一、修改protocol.c #include <Uefi.h> #include <Library/UefiLib.h> #include <Library/UefiBootServicesTableLib.h> #include <stdio.h>EFI_STATUS EFIAPI UefiMain(IN EFI_HANDLE ImageHandle,IN EFI_SYSTEM_TABLE *SystemTable ) {EFI_STATUS S…...
【C++】— 一篇文章让你认识STL
文章目录 🌵1.什么是STL?🌵2.STL的版本🌵3.STL的六大组件🌵4.STL的重要性🌵5. 如何学习STL🌵6. 学习STL的三种境界 🌵1.什么是STL? STL是Standard Template Library的简称…...
mysql--索引
目录 1、长什么样 2、硬件理解 3、软件理解 4、进一步认识 5、索引的理解 6、为什么不选择其他数据结果? 7、聚簇索引和非聚簇索引 8、索引操作 (1)主键索引创建 第一种方式 第二种方式 第三种方式 主键索引的特点 (…...
【linux】线程 (三)
13. 常见锁概念 (一)了解死锁 死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程占有的,且不释放的资源,而处于的一种永久等待状态 (二)死锁四个必要条件 互斥条件…...
c++日常积累
在 C 中,可以直接将 int 类型的值赋值给 bool 类型。C 会自动进行类型转换,任何非零的 int 值都会被转换为 true,而 0 会被转换为 false。 QDialog 有一个 finished(int) 信号,该信号在对话框关闭时发出,并传递一个整…...
字节流写入文件
一、创建输出流对象表示的文件三种方式 方法一: FileOutputStream fos new FileOutputStream("fos.txt",true);//最简便方法二: FileOutputStream fos new FileOutputStream(new File("fos.txt"));方法三; File f ne…...
Torch模型导入
冻结param的3种方式 for param in net.lstm.parameters():param.requires_grad Truenet.lstm.requires_grad True # 无效net.lstm.state_dict()[weight_ih_l0].requires_gradFalsenet.lstm.weight_ih_l0.requires_grad False# dir(net.lstm) to validate attributes …...
博弈论:博弈类型空间集合;三层博弈拓展式;
目录 博弈论:博弈类型空间集合 θ(Dss-1=1 )就是博弈类型空间集合; 一、博弈的基本要素 二、博弈的主要类型 三、博弈类型空间集合的构建 三层博弈拓展式: 博弈论:博弈类型空间集合 这的博弈类型空间集合:指一方选择的策略,用符号进行表达:SDss-2(θDss-1=1) = …...
数据库表的关联、集合操作
数据库表的关联、集合操作 join、MySQL、Oracle什么left right的老是忘,归根到底还是不熟练,记录下来,以后就不用再搜了。 设表A、表B分别包含员工信息和部门信息。 表A包含员工的ID、姓名和部门ID, 表B包含部门ID和部门名称。 …...
word怎么清除格式,Word一键清除所有格式教程
你是否曾在编辑Word文档时遇到过复制内容时格式混乱的情况?别担心,这只需要清除一下格式就可以了,很多朋友还不知道word怎么清除格式,下面小编就来给大家讲一讲word一键清除所有格式的方法教程,操作非常简单,有需要的…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
