【赵渝强老师】Oracle的闪回版本查询

简介: 本文介绍了Oracle数据库的闪回版本查询(Flashback Version Query)功能,通过示例详细讲解了其使用方法。闪回版本查询可获取指定时间区间内行的不同版本,利用`versions between`子句实现。文中包含视频讲解,并通过创建测试表、插入数据及执行查询等步骤,演示如何获取历史版本信息和伪列详情,帮助用户深入了解该功能的实际应用。

b234.png

Oracle数据库的闪回版本查询(Flashback Version Query)提供了一个审计行改变的查询功能,通过它可以查找到所有已经提交了的行记录。视频讲解如下:


一、 闪回版本查询简介


使用闪回版本查询可以获取在给定的时间区间中,指定的行的不同版本。当commit语句被执行时,一个新的行版本将被创建。闪回版本查询使用了select语句的versions between子句来指定时间区间。闪回版本查询的语法格式如下所示:


select 列1,列2,.....
from 表名
versions between [scn|timestamp] [表达式|minvalue]
         and [表达式|maxvalue] as of [scn|timestamp] 表达式;
# 其中:
# between...and:用于指定时间区间。
# scn|timestamp:用于指定使用SCN,还是使用时间戳。
# as of:用于恢复单个版本的数据。
# minvalue:代表SCN或者时间戳的最小值。
# maxvalue:代表SCN或者时间戳的最大值。


二、 【实战】在查询中使用闪回版本查询


在了解到了什么是Oracle数据库的闪回版本查询后,下面将通过一个具体是示例来演示如何在查询中使用闪回版本查询。


(1)使用c##scott用户登录数据库

sqlplus c##scott/tiger


(2)创建一张表用于测试闪回版本查询,并往表中插入数据。

SQL> create table flashback2(tid number,tname varchar2(20));
SQL> insert into flashback2 values(1,'Tom');
SQL> commit;
SQL> insert into flashback2 values(2,'Mary');
SQL> commit;
SQL> insert into flashback2 values(3,'Mike');
SQL> commit;
SQL> update flashback2 set tname='Mary123' where tid=2;
SQL> commit;

# 由于这里执行了四次commit语句,
# 因此在表flashback2上产生四个版本的信息。


(3)执行一个简单的查询语句。

SQL> select * from flashback2;
# 输出的信息如下:
TID   TNAME
-------------- --------------------
   1    Tom
   2    Mary123
   3    Mike
   
# 由于这里的查询没有指定具体的版本信息,
# 因此在默认情况下将查询表的最新版本数据。


(4)执行闪回版本查询获取表上所有的历史版本信息。

SQL> select * from flashback2
      versions between scn minvalue and maxvalue;
# 输出的信息如下:
TID   TNAME
------------- --------------------
   2    Mary123
   3    Mike
   2    Mary
   1    Tom
   
# 通过指定关键字versions表明将执行闪回版本查询,
# scn minvalue and maxvalue用于指定查询版本的区间范围。
# 这里的范围是从最小的SCN号查询到最大的SCN号,
# 即:查询表上面的所有版本,这里一共返回了4个版本。


(5)使用闪回版本查询的伪列获取每个版本的详细信息。

SQL> select tid,tname,
     versions_starttime,versions_endtime,versions_operation
     from flashback2
     versions between scn minvalue and maxvalue
     order by 1,3;
     
# 输出的信息如下:
TID   TNAME   VERSIONS_STARTTIME       VERSIONS_ENDTIME         VERSIONS_OPERATION
----- ------- --------------------- ----------------------- ------------------
 1    Tom                                                          I
 2    Mary    25-MAR-25 11.00.23 AM    25-MAR-25 11.00.38 AM       I
 2    Mary123 25-MAR-25 11.00.38 AM                                U
 3    Mike    25-MAR-25 11.00.32 AM                                I

# 其中的伪列:
# VERSIONS_STARTTIME:代表当前版本的起始时间。
# VERSIONS_ENDTIME:代表当前版本的结束时间。
# VERSIONS_OPERATION:代表当前版本执行的具体操作。
# 由于在第(2)步操作中执行了一条update语句将Mary改了Mary123,
# 因此可以看出Mary的生命周期是
# 从25-MAR-25 11.00.23 AM到25-MAR-25 11.00.38 AM。


相关文章
|
3月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
383 93
|
2月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】使用NetManager创建Oracle数据库的监听器
Oracle NetManager是数据库网络配置工具,用于创建监听器、配置服务命名与网络连接,支持多数据库共享监听,确保客户端与服务器通信顺畅。
220 0
|
4月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle客户端与服务器端连接建立的过程
Oracle数据库采用客户端-服务器架构,客户端通过其网络环境与服务器通信,实现数据库访问。监听程序负责建立连接,通过命令lsnrctl可启动、停止及查看监听状态。本文介绍了监听器的作用及相关基础管理操作。
247 0
|
7月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】在PostgreSQL中访问Oracle
本文介绍了如何在PostgreSQL中使用oracle_fdw扩展访问Oracle数据库数据。首先需从Oracle官网下载三个Instance Client安装包并解压,设置Oracle环境变量。接着从GitHub下载oracle_fdw扩展,配置pg_config环境变量后编译安装。之后启动PostgreSQL服务器,在数据库中创建oracle_fdw扩展及外部数据库服务,建立用户映射。最后通过创建外部表实现对Oracle数据的访问。文末附有具体操作步骤与示例代码。
263 6
【赵渝强老师】在PostgreSQL中访问Oracle
|
5月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。
152 0
|
8月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回数据库
Oracle闪回数据库功能类似于“倒带按钮”,可快速将数据库恢复至 earlier 状态,无需还原备份。本文介绍了闪回数据库的使用方法及实战案例:包括设置归档模式、开启闪回功能、记录SCN号、执行误操作后的恢复步骤等。通过具体 SQL 操作演示了如何利用闪回数据库恢复被误删的用户数据。注意,使用此功能前需确保数据库为归档模式。
268 9
|
8月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回数据归档
本文介绍了Oracle闪回数据归档(Flashback Data Archive)的功能与实现方法。闪回数据归档可将表中的历史数据进行归档,支持全面的历史数据查询,引入了“Oracle Total Recall”概念。文中通过具体实战步骤演示了如何创建和启用闪回数据归档:包括创建表空间、数据归档,设置默认归档,授予用户权限,开启表的归档功能,并展示了误操作后如何通过归档恢复数据。最后通过执行计划验证了数据来源于归档。
240 4
|
8月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回事务查询
Oracle数据库的闪回事务查询(Flashback Transaction Query)是闪回版本查询的扩充,可用于审计或撤销已提交的事务。通过`flashback_transaction_query`视图,可生成还原特定事务的SQL语句。本文介绍了其基本概念,并通过实战演示如何使用该功能:从授权、开启UNDO数据增强,到创建测试表和事务,最后利用闪回查询撤销已提交的事务,验证数据恢复效果。附带视频讲解,帮助深入理解。
236 3
|
8月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle的闪回删除
本文介绍了Oracle数据库的闪回删除(Flashback Drop)功能,该功能可从回收站恢复已删除的对象至删除前状态。文章详细讲解了回收站的工作原理及操作步骤,包括检查回收站功能是否开启、删除表、查看回收站内容以及使用闪回删除恢复数据等实战操作。通过具体示例,演示了如何恢复被删除的员工表及其数据,并处理同名表冲突问题。文末还附有视频讲解,帮助读者更直观地理解操作流程。
172 1
|
SQL 关系型数据库 数据库

推荐镜像

更多