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

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,
    ver

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-08 12:58:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-08 12:58:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-08 12:58:06       82 阅读
  4. Python语言-面向对象

    2024-06-08 12:58:06       91 阅读

热门阅读

  1. 【微信小程序】uni-app 配置网络请求

    2024-06-08 12:58:06       28 阅读
  2. clickhouse学习笔记(三)常见表引擎

    2024-06-08 12:58:06       25 阅读
  3. ffmpeg视频,音频,图片支持的格式转换

    2024-06-08 12:58:06       27 阅读
  4. Redis集群搭建(Linux)

    2024-06-08 12:58:06       25 阅读
  5. Dart语言的泛型

    2024-06-08 12:58:06       31 阅读
  6. sql运行环境搭建与sqlite插件安装指南

    2024-06-08 12:58:06       33 阅读
  7. 吃星星(1.5)

    2024-06-08 12:58:06       25 阅读
  8. electron调用dll时应用程序闪退

    2024-06-08 12:58:06       31 阅读