Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【赵渝强老师】Oracle的闪回版本查询

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

原创
作者头像
赵渝强老师
发布于 2025-03-29 01:37:10
发布于 2025-03-29 01:37:10
780
举报
文章被收录于专栏:OracleOracle

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

一、 闪回版本查询简介

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

代码语言:sql
AI代码解释
复制
select1,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用户登录数据库

代码语言:sql
AI代码解释
复制
sqlplus c##scott/tiger

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

代码语言:sql
AI代码解释
复制
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
AI代码解释
复制
SQL> select * from flashback2;

# 输出的信息如下:
TID 	TNAME
-------------- --------------------
	 1 		Tom
	 2 		Mary123
	 3 		Mike

# 由于这里的查询没有指定具体的版本信息,
# 因此在默认情况下将查询表的最新版本数据。

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

代码语言:sql
AI代码解释
复制
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
AI代码解释
复制
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。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【赵渝强老师】Oracle的闪回事务查询
Oracle数据库的闪回事务查询(Flashback Transaction Query)实际上闪回版本查询的一个扩充,通过它可以审计某个事务甚至撤销一个已经提交的事务。
赵渝强老师
2025/04/03
300
【赵渝强老师】Oracle的闪回事务查询
【赵渝强老师】Oracle数据库的闪回表
Oracle的闪回表(Flashback Table)实际上是将表中的数据快速回退到过去的一个是时间点或者系统改变号SCN上,从而达到恢复数据的目的。
赵渝强老师
2025/03/31
690
【赵渝强老师】Oracle数据库的闪回表
【赵渝强老师】Oracle的闪回删除
Oracle的闪回删除(Flashback Drop)实际上从Oracle数据库的回收站中将已删除的对象,恢复到删除之前的状态。
赵渝强老师
2025/04/02
860
【赵渝强老师】Oracle的闪回删除
【赵渝强老师】Oracle数据库的闪回查询
Oracle数据库的闪回查询(Flashback Query)是对查询语句select的扩展,它会从还原数据中提取所需要的历史数据以反映数据在历史的某个时间段上的状态。
赵渝强老师
2025/03/28
990
【赵渝强老师】Oracle数据库的闪回查询
【DB笔试面试810】在Oracle中,什么是闪回版本查询(Flashback Version Query)?
在Oracle中,什么是闪回版本查询(Flashback Version Query)?
AiDBA宝典
2020/06/04
7050
Oracle 闪回特性(Flashback Version、Flashback Transaction)
--==========================================================
Leshami
2018/08/07
1K0
【赵渝强老师】Oracle的闪回数据库
Oracle的闪回数据库(Flashback Database)类似于数据库的倒带按钮,可以在用户对数据库造成了逻辑数据损坏的情况下,将数据库恢复到正确的状态。下图说明了闪回数据库的过程。
赵渝强老师
2025/04/01
660
【赵渝强老师】Oracle的闪回数据库
Oracle配置和使用闪回
环境:RHEL 6.4 + Oracle 11.2.0.4 目录: 一、闪回查询
Alfred Zhao
2019/05/24
8350
通过闪回事务查看数据dml的情况 (r2笔记69天)
昨天有一个网友问我,怎么能够查询一个表中最后一条插入的记录,我大概回复了,可以通过闪回事务来实现,但是得看什么时候插入的数据,也需要一定的运气。 如果通过闪回事务来得到对应的undo_sql,可能多个dml语句对应一个事务,所以我们需要得到的是一个完整的事务的信息,里面包括对应的Undo_sql,这样才算得到比较完整的sql语句。 我在本地自己做了一个测试。 创建一个test表,然后插入一些记录,然后尝试修改一些数据。 SQL> DROP TABLE TEST; Table dropped. SQL>
jeanron100
2018/03/14
5230
【DB笔试面试811】在Oracle中,什么是闪回事务查询(Flashback Transaction Query)?
在Oracle中,什么是闪回事务查询(Flashback Transaction Query)?
AiDBA宝典
2020/06/04
6240
Oracle Flashback Query 闪回数据
误删除了Oracle部分重要数据,已提交,需要恢复。首先尝试Flashback Query闪回数据。
星哥玩云
2022/08/16
3780
day43_Oracle学习笔记_02
八、子查询 示例代码如下: 子查询.txt SQL> --rownum 行号 SQL> select rownum,empno,ename,sal from emp;     ROWNUM      EMPNO ENAME             SAL                                                                                                                                
黑泽君
2018/10/11
7810
day43_Oracle学习笔记_02
闪回flashback
Configuring Your Database for Oracle Flashback Technology
职场亮哥
2020/10/10
7900
闪回flashback
【赵渝强老师】Oracle数据库的闪回技术
在Oracle数据库的操作过程中,会不可避免地出现操作失误或者用户失误,例如不小心删除了一个表或者提交了一个错误的事务等。这些失误和错误可能会造成重要数据的丢失,最终导致Oracle数据库停止。
赵渝强老师
2025/03/27
830
【赵渝强老师】Oracle数据库的闪回技术
Oracle 闪回特性(Flashback Query、Flashback Table)
--==================================================
Leshami
2018/08/07
5710
Oracle 闪回特性(FLASHBACK DATABASE)
闪回技术通常用于快速简单恢复数据库中出现的认为误操作等逻辑错误,从闪回的方式可以分为基于数据库级别闪回、表级别闪回、事务
Leshami
2018/08/07
1.1K0
闪回归档的简单测试(r8笔记第68天)
11g里面的新特性闪回归档,为历史数据的定制查询提供了一种可能。抽时间学习了一下这个特性,发现还是比较清晰易用。如果使用得当还是很不错的一个特性。 我们来简单模拟一个例子来看看。 首先需要创建独立的表空间,属性需要为segment space management auto,因为默认属性就是如此,所以我们简化语句。 SQL> create tablespace fbarch datafile'/U01/app/oracle/oradata/actvdb/fbarch.dbf' size 10M ; Tabl
jeanron100
2018/03/19
6280
如何在多租户环境下使用数据库的闪回功能
编辑手记:对于数据库的闪回功能,可能大家都不陌生,那么如何在多租户环境下使用该功能,如果关闭了表空间的闪回功能,会给数据库带来哪些影响?我们一起来学习。 本文来自周四大讲堂内容整理。 我们先说一下Flashback这个单词,我们大家常称它为闪回,可能有的人称它为回闪。Flashback 是oracle 9i 版本开始提供的一项特性,利用oracle查询多版本一致的特点,实现从回滚段中读取一定的时间内在表中操作过的数据。 Flashback Database是Oracle10g的新增功能,在启动Flashba
数据和云
2018/03/07
1.1K0
如何在多租户环境下使用数据库的闪回功能
【DB笔试面试808】在Oracle中,什么是闪回?闪回有哪些分类?
Oracle闪回技术从根本上改变了数据恢复策略,利用闪回技术,可以使更正错误的时间大大缩短,而且它简单易用,使用一条短命令便可恢复整个数据库,而不必执行复杂的程序。闪回技术是Oracle数据库独有的特性,支持各级恢复,包括行、事务、表、表空间和数据库范围。采用闪回技术,可以针对行级和事务级发生过变化的数据进行恢复,减少了数据恢复的时间,而且操作简单,通过SQL语句就可以实现数据的恢复,大大提高了数据库恢复的效率。
AiDBA宝典
2020/06/01
7500
【DB笔试面试809】在Oracle中,什么是闪回查询(Flashback Query)?
闪回查询(Flashback Query)是查询过去某个时间点或某个SCN值对应的表中的数据信息。它是基于回滚(Undo)表空间中的回滚信息实现。
AiDBA宝典
2020/06/04
5100
推荐阅读
相关推荐
【赵渝强老师】Oracle的闪回事务查询
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文