热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Oracle11g新特性FlashbackDataArchive使用实例

这篇文章主要介绍了Oracle11g新特性FlashbackDataArchive使用实例,FlashbackDataArchive的主要作用是在它的有效期内将保存事务改变的信息,需要的朋友可以参考下

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


推荐阅读
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 本文详细介绍了如何使用libpq库与PostgreSQL后端建立连接。通过探讨PQconnectdb()函数的工作原理及其在实际应用中的使用方法,帮助读者理解并掌握建立高效、稳定的数据库连接的关键步骤。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • SQL中UPDATE SET FROM语句的使用方法及应用场景
    本文详细介绍了SQL中UPDATE SET FROM语句的使用方法,通过具体示例展示了如何利用该语句高效地更新多表关联数据。适合数据库管理员和开发人员参考。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了HTML中标签的使用方法和作用。通过具体示例,解释了如何利用标签为网页中的缩写和简称提供完整解释,并探讨了其在提高可读性和搜索引擎优化方面的优势。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 本文探讨了适用于Spring Boot应用程序的Web版SQL管理工具,这些工具不仅支持H2数据库,还能够处理MySQL和Oracle等主流数据库的表结构修改。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
author-avatar
手机用户2502887197
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有