当前位置: 首页 > 编程笔记 >

Oracle 11g 新特性 Flashback Data Archive 使用实例

车诚
2023-03-14
本文向大家介绍Oracle 11g 新特性 Flashback Data Archive 使用实例,包括了Oracle 11g 新特性 Flashback Data Archive 使用实例的使用技巧和注意事项,需要的朋友参考一下

Flashback Data Archive(闪回日志归档)其实理解为长时间的保存undo数据,对于某些重要的表可以自定义它的历史记录保存期限,它的的种种行为与undo表空间十分相似,使用的时候也是完全透明的,用户不知道它的查询一致性视图数据是来自undo还是Flashback Data Archive,现来分析它与undo的几点不同:

1.Flashback Data Archive仅记录UPDATE和DELETE语句,不记录INSERT语句。

2.Flashback Data Archive中的行数据库可以保存非常长的时间,甚至是几十年,相比之下的undo数据中的对象通常只有几个小时或者几天的保留期限。

3.Flashback Data Archive和undo的本质功能是不同的,它只关注表行的历史改动,而非undo来实现数据库整体事务的读一致性,已经回滚操作等。

那么Flashback Data Archive是怎么实现的呢,设想既然是保存表中的行记录,应该是需要单独的存储区域来记载行记录的,为这个区域指定保留期限,这样其中的数据就会长久的保留下去,然后再在想要记录的表上添加跟踪标记,这样就可以实现行记录的归档保存了,实际上这便是Oracle的实现原理,这里的存储区域就是Flashback Data Archive,在使用过程中使用create flashback archive命令创建。

一、创建归档

Oracle建议使用单独的表空间来存储Flashback Data Archive,当然也可以在一个已经存在的表空间上创建一个或多个Flashback Data Archive,

–创建前需要保证执行用户具有FLASHBACK_ARCHIVE_ADMINISTRER权限,该权限包括创建和修改flashback archive,启用表跟踪,管理归档中的表空间等)


SQL> create tablespace fbda1

2  datafile '/u01/app/oracle/oradata/prod/fbda01.dbf'

3  size 5g;

Tablespace created.

接下来开始创建Flashback Data Archive:


SQL> create flashback archive fb_01

2  tablespace fbda1 quota 300m

3  retention 10 year;

Flashback archive created.

上面的命令创建了一个保存十年的Flashback Data Archive,它可以使用fbda1表空间中300m的空间(有点小了。。。),根据需要我们可以再创建一个默认的归档,使用default关键字,如


SQL> create flashback archive default fb_dflt

2  tablespace fbda1

3  retention 1 year

4  /

Flashback archive created.

查询DBA_FLASHBACK_ARCHIVE视图获取归档的信息,包括保留期限,状态等


SQL> select OWNER_NAME,FLASHBACK_ARCHIVE_NAME,

2  FLASHBACK_ARCHIVE#,RETENTION_IN_DAYS,STATUS

3  from dba_flashback_archive;

 

OWNER_NAME FLASHBACK_ARCHIVE_NAME FLASHBACK_ARCHIVE# RETENTION_IN_DAYS STATUS

---------- ---------------------- ------------------ ----------------- -------

SYS        FB_01                                   1              3650

SYS        FB_DFLT                                 2               365 DEFAULT

查询FLASHBACK_ARCHIVE_TS视图获取表空间和归档的对应关系


SQL> select * from dba_flashback_archive_ts;

FLASHBACK_ARCHIVE_NAME    FLASHBACK_ARCHIVE# TABLESPACE_NAME      QUOTA_IN_MB ------------------------- ------------------ -------------------- ------------ FB_01                                      1 FBDA1                300 FB_DFLT                                    2 FBDA1

二、跟踪表到指定的Flashback Data Archive中

将scott用户的emp表分配到fb_01归档下:


SQL> alter table scott.emp flashback archive fb_01;

Table altered.

查询DBA_FLASHBACK_ARCHIVE_TABLES视图可以获得已经归档的表:


SQL> select * from dba_flashback_archive_tables;

TABLE_NAME OWNER_NAME FLASHBACK_ARCHIVE_NA ARCHIVE_TABLE_NAME   STATUS ---------- ---------- -------------------- -------------------- -------- EMP        SCOTT      FB_01                SYS_FBA_HIST_73181   ENABLED

三、查询使用Flashback Data Archive

这里的使用和undo完全没有异样了,在查询中指定as of就可以了,这里演示查询3年前的emp表数据:


SQL> select empno,ename,hiredate

 2 from scott.emp

 3 as of timestamp (systimestamp - interval '3' year)

 4 where empno=7934;

EMPNO ENAME      HIREDATE  ---------- ---------- ---------  7934 MILLER     23-JAN-82

 类似资料:
  • 1. ENUM枚举 1.1 枚举概述 枚举是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。举例:一周只有7天,一年只有12个月等。 回想单例设计模式:单例类是一个类只有一个实例 那么多例类就是一个类有多个实例,但不是无限个数的实例,而是有限个数的实例。这才能是枚举类。 格式是:只有枚举项的枚举类 public enum 枚举类名 { 枚举项1,枚举项2,枚举项3…;

  • 本文向大家介绍MySQL 5.6 GTID新特性实践,包括了MySQL 5.6 GTID新特性实践的使用技巧和注意事项,需要的朋友参考一下 GTID简介 什么是GTID GTID(Global Transaction ID)是对于一个已提交事务的编号,并且是一个全局唯一的编号。 GTID实际上是由UUID+TID组成的。其中UUID是一个MySQL实例的唯一标识。TID代表了该实例上已经提交的事务

  • 本文向大家介绍asp.net使用H5新特性实现异步上传的示例,包括了asp.net使用H5新特性实现异步上传的示例的使用技巧和注意事项,需要的朋友参考一下 ###index.html ###index.js ###handler.ashx 以上这篇asp.net使用H5新特性实现异步上传的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 概述 Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。 简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式。 特点 不是数据结构,不会保存数据。 不会修改原来的数据源,它会将操作后的数据保存到另外一个对象中。 惰性求值,流在中间处理过程中,只是对操作进行了记录,并不会立即执行,需要等到执行

  • 本文向大家介绍Java8新特性Stream流实例详解,包括了Java8新特性Stream流实例详解的使用技巧和注意事项,需要的朋友参考一下 什么是Stream流? Stream流是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。 Stream的优点:声明性,可复合,可并行。这三个特性使得stream操作更简洁,更灵活,更高效。 Stream的操作有两个特点:可以多个操作链接起来运行,内部

  • 这个页面描述了新添加到 AutoHotkey_L 分支的功能,现在简称为“AutoHotkey 1.1”。 流程控制   Break LoopLabel 退出一个循环或任意数目的嵌套循环. Continue LoopLabel 继续循环, 即使在任意数目的嵌套循环中. For x,y in z 从头到为尾循环对象的内容. Loop Until 循环直到条件为真. 可用于任意类型的循环. Try..