【云原生进阶之数据库技术】第二章-Oracle-原理-4.6.3.2-闪回技术实现原理

本文介绍了Oracle数据库的闪回技术,包括基于undo的闪回(闪回查询、闪回版本查询、闪回表)、Flashback Data Archive(FDA)、基于回收站的闪回和基于闪回日志的数据库闪回。这些技术允许用户查询过去的数据状态,恢复误删对象,甚至将数据库恢复到特定时间点。
摘要由CSDN通过智能技术生成

1 闪回技术实现综述

        Oracle闪回技术主要由3类底层技术支撑,分别是基于undo的闪回,基于回收站的闪回和基于闪回日志的闪回,下面我们将分别介绍。

1.1 基于undo的闪回

        undo记录了每次数据变化中被覆盖的值,我们可以说它记录了数据变化时的前镜像值,例如一个事务将某数据从1改成了2,那么最终数据块记录的值应该是2,但是undo会记录下来更改前的值即1。undo数据是一个循环覆盖的结构,如下图:

        基于undo的闪回我们主要介绍三种:闪回查询、闪回版本查询和闪回表。

1.1.1 闪回查询

        闪回查询可以帮助我们查询一张表在过去某时间的数据状态。具体使用方法也很简单,主要就是在普通的select查询语句中多写一个“AS OF TIMESTAMP ”子句,以返回指定时间戳时的数据状态。

        在我们日常使用时,主要有以下3种常用的方式:

-- 1.闪回到某精确时间点:
SELECT * FROM <table_name> AS OF TIMESTAMP 
TO_TIMESTAMP('2020-12-21 08:45:00','yyyy-mm-dd hh24:mi:ss');


-- 2.闪回到相对时间点之前(例如:1分钟前)
SELECT * FORM <table_name AS OF TIMESTAMP SYSDATE - 1/24/60;


-- 3.闪回到指定SCN
SELECT * FROM <table_name> AS OF SCN 5572156;  

1.1.2 闪回版本查询

        使用VERSIONS子句查询某一段时间对应行的所有版本,返回结果是行的改变历史,且只返回已提交的行(包括删除和重新插入的行版本)。

SELECT
    versions_startscn,
    versions_starttime,
    versions_endscn,
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江中散人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值