【赵渝强老师】Oracle的闪回数据归档

本文涉及的产品
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 本文介绍了Oracle闪回数据归档(Flashback Data Archive)的功能与实现方法。闪回数据归档可将表中的历史数据进行归档,支持全面的历史数据查询,引入了“Oracle Total Recall”概念。文中通过具体实战步骤演示了如何创建和启用闪回数据归档:包括创建表空间、数据归档,设置默认归档,授予用户权限,开启表的归档功能,并展示了误操作后如何通过归档恢复数据。最后通过执行计划验证了数据来源于归档。

b239.png

Oracle的闪回数据归档(Flashback Data Archive)的本质就是给表创建一个快照,便于用于保护重要表中的数据。视频讲解如下:


一、 闪回数据归档简介


闪回数据归档可以将表中的还原数据进行归档,从而提供全面的历史数据查询。因此这便引入一个新的概念:Oracle Total Recall,即Oracle全面回忆。闪回数据归档与归档日志是两个不同的概念。闪回数据归档是将还原数据的历史记录进行归档,可以用于对数据进行闪回和追溯查询;而归档日志是将重做日志的历史记录进行归档,可以用于保证恢复的连续性。


二、 【实战】启用闪回数据归档


在了解到了什么是Oracle数据库的闪回数据归档后,下面将通过一个具体是示例来演示如何使用闪回数据归档生成表的归档数据。


(1)使用数据库管理员登录数据,并创建新的表空间用于保存还原数据归档。

SQL> conn / as sysdba
SQL> create tablespace fda datafile '/home/oracle/fda01.dbf' size 100M;


(2)在新创建的表空间上创建数据归档。

SQL> create flashback archive fda1 tablespace fda retention 1 year;
# 这里的retention 1 year表示创建的数据归档将保留1年。


(3)将新创建的数据归档设置系统默认的数据归档。

SQL> alter flashback archive fda1 set default;
# 设置系统默认的数据归档这一步不是必须的。


(4)授予c##scott用户访问数据归档的权限。

SQL> grant flashback archive on fda1 to c##scott;


(5)切换到c##scott用户,并确定表c##scott.emp中的记录数。

SQL> conn c##scott/tiger
SQL> select count(*) from emp;
# 输出的信息如下:
COUNT(*)
----------
  14


(6)开启表c##scott.emp的数据归档。

SQL> alter table emp flashback archive fda1;


(7)记录当前的时间和SCN号。

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') "current time",
    timestamp_to_scn(sysdate) SCN from dual;
# 输出的信息如下:
current time       SCN
------------------- -------------------
2025-03-28 14:30:52    2769089


(8)执行一个误操作,不小心清空了表c##scott.emp中的数据。

SQL> truncate table emp;


(9)查看生成的数据归档。

SQL> select * from USER_FLASHBACK_ARCHIVE_TABLES;
# 开启表的数据归档后会在当前用户下自动生成一张表SYS_FBA_HIST_76659
# 该表用于保存表的数据归档信息。输出的信息的信息如下图所示。

image.png


(10)查看表SYS_FBA_HIST_76659的结构。

SQL> desc SYS_FBA_HIST_76659;
# 输出的信息如下:
 Name         Null?   Type
 --------------------- -------  -------------- 
 RID              VARCHAR2(4000)
 STARTSCN           NUMBER
 ENDSCN             NUMBER
 XID              RAW(8)
 OPERATION            VARCHAR2(1)
 EMPNO              NUMBER(4)
 ENAME              VARCHAR2(10)
 JOB              VARCHAR2(9)
 MGR              NUMBER(4)
 HIREDATE           DATE
 SAL              NUMBER(7,2)
 COMM             NUMBER(7,2)
 DEPTNO             NUMBER(2)


(11)查看表SYS_FBA_HIST_76659中的数据如下图所示。

image.png


(12)在员工表上执行一个简单的闪回查询。

SQL> select * from emp as of scn 2769089;
# 此时将从生成的数据归档中返回历史数据。这里的scn 2769089是在第(7)步中得到的。


(13)为确定数据来至数据归档,可以将第(12)步的SQL执行计划输出。执行下面的语句:

SQL> set pagesize 40
SQL> explain plan for select * from emp as of scn 2769089;
SQL> select * from table(dbms_xplan.display);
# 输出的信息如下图所示。


image.png

从上图可以看出,当查询员工表的数据时,对数据归档SYS_FBA_HIST_76659执行了全表扫描(TABLE ACCESS FULL)。

相关文章
|
12天前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
185 93
|
1月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle客户端与服务器端连接建立的过程
Oracle数据库采用客户端-服务器架构,客户端通过其网络环境与服务器通信,实现数据库访问。监听程序负责建立连接,通过命令lsnrctl可启动、停止及查看监听状态。本文介绍了监听器的作用及相关基础管理操作。
|
4月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】在PostgreSQL中访问Oracle
本文介绍了如何在PostgreSQL中使用oracle_fdw扩展访问Oracle数据库数据。首先需从Oracle官网下载三个Instance Client安装包并解压,设置Oracle环境变量。接着从GitHub下载oracle_fdw扩展,配置pg_config环境变量后编译安装。之后启动PostgreSQL服务器,在数据库中创建oracle_fdw扩展及外部数据库服务,建立用户映射。最后通过创建外部表实现对Oracle数据的访问。文末附有具体操作步骤与示例代码。
166 6
【赵渝强老师】在PostgreSQL中访问Oracle
|
2月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。
|
5月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回数据库
Oracle闪回数据库功能类似于“倒带按钮”,可快速将数据库恢复至 earlier 状态,无需还原备份。本文介绍了闪回数据库的使用方法及实战案例:包括设置归档模式、开启闪回功能、记录SCN号、执行误操作后的恢复步骤等。通过具体 SQL 操作演示了如何利用闪回数据库恢复被误删的用户数据。注意,使用此功能前需确保数据库为归档模式。
164 9
|
5月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回事务查询
Oracle数据库的闪回事务查询(Flashback Transaction Query)是闪回版本查询的扩充,可用于审计或撤销已提交的事务。通过`flashback_transaction_query`视图,可生成还原特定事务的SQL语句。本文介绍了其基本概念,并通过实战演示如何使用该功能:从授权、开启UNDO数据增强,到创建测试表和事务,最后利用闪回查询撤销已提交的事务,验证数据恢复效果。附带视频讲解,帮助深入理解。
139 3
|
5月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle的闪回删除
本文介绍了Oracle数据库的闪回删除(Flashback Drop)功能,该功能可从回收站恢复已删除的对象至删除前状态。文章详细讲解了回收站的工作原理及操作步骤,包括检查回收站功能是否开启、删除表、查看回收站内容以及使用闪回删除恢复数据等实战操作。通过具体示例,演示了如何恢复被删除的员工表及其数据,并处理同名表冲突问题。文末还附有视频讲解,帮助读者更直观地理解操作流程。
104 1
|
2月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
5月前
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
1173 28
|
3月前
|
存储 Oracle 关系型数据库
oracle数据恢复—oracle数据库执行错误truncate命令的数据恢复案例
oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原报错等。下面和大家分享一例oracle数据库误执行truncate命令导致数据丢失的数据库数据恢复过程。

推荐镜像

更多