重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6087|回复: 0
打印 上一主题 下一主题

Oracle 11g flashback data archive

[复制链接]
跳转到指定楼层
楼主
发表于 2012-7-21 18:20:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

Oracle 11g flashback data archive

 


1. 什么是flashback data archive

Flashback data archive是oracle 11g中引入的一个新特性。Flashback archive是一个新的数据库对象,用于存储一个或多表的历史数据。Flashback archive是一个逻辑对象,概念上类似于表空间。实际上flashback archive可以看作是存储一个或多个表的所有事务变化的逻辑空间。

 

2. flashback data archive的实现原理

从9i开始,Oracle就提供了表的flashback query功能,使用户可以查询表上过去某一时刻的数据或一段时间内数据的变化情况。flashback query实际上是利用UNDO信息来获得过去的数据。由于UNDO空间是循环使用的,事务的前映像不可能永久保存,因此flashback query只能支持过去一段时间内的数据查询,这个时间与UNDO_RETENTION相关。

Flashback data archive相比flashback query则更进了一步。Flashback data archive不再直接使用UNDO信息获得历史数据,而是把历史数据保存在一个track table里。Oracle新增加了一个后台进程fbda,此进程每隔一段时间(通常是5分钟)把UNDO中的历史数据信息加到track table里。如果表上开启了flashback archive功能,则Oracle先给事务产生的UNDO信息做标记,直到被标记的UNDO信息加到track table后,此UNDO空间才能被重用。

Flashback data archive采用压缩方式存储历史数据,以减小空间占用。同时flashback data archive采用range分区方式对track table表进行分区。track table表上没有索引,用户可根据需要对track table增加索引。

 

3. 创建flashback data archive

  3.1 创建flashback data archive需要的权限

    创建flashback data archive需要DBA权限或flashback archive administer权限
    开启表的flashback archive logging需要flashback archive对象权限

 

  3.2 创建基本步骤

    ++  创建表空间


SQL> create tablespace flash_archive datafile '/oradata/cmsdb11g/flash_archive01.dbf' size 10M autoextend on extent management local uniform size 1M segment space management auto;

Tablespace created.
 
    ++  创建flashback archive管理用户 (需要授予用户flashback archive administer权限)


SQL> create user flashadm identified by flashadm default tablespace flash_archive temporary tablespace temp quota unlimited on flash_archive;

User created.

SQL> grant create session to flashadm;

Grant succeeded.

SQL> grant flashback archive administer to flashadm;

Grant succeeded.
 
    ++  创建flashback archive


SQL> conn flashadm/flashadm
Connected.

SQL> create flashback archive flash1 tablespace flash_archive quota 2000m retention 3 day;
create flashback archive flash1 tablespace flash_archive quota 2000m retention 3 day
                                           *
ERROR at line 1:
ORA-55612: No privilege to manage Flashback Archive

如果用户没有flashback archive administer权限,则报错ORA-55612

 

 

SQL> create flashback archive flash1 tablespace flash_archive quota 2000m retention 3 day;

Flashback archive created

创建flashback archive时可以指定表空间上的quota和flashback archive的retention. 如果不指定表空间上的quota,缺省为unlimited.

 

 

SQL> select OWNER_NAME,FLASHBACK_ARCHIVE_NAME,FLASHBACK_ARCHIVE#,RETENTION_IN_DAYS,STATUS from dba_flashback_archive;

OWNER_NAME      FLASHBACK_ARCHIVE_NA FLASHBACK_ARCHIVE# RETENTION_IN_DAYS STATUS
-----------------      -------------------------------- ----------------------------  --------------------------  ----------

FLASHADM           FLASH1                            1                                  3

dba_flashback_archive存储flashback archive信息,而在dba_objects中找不到flashback archive信息。如果不是系统的default flashback archive, 则status为空。

 

 

SQL> select * from dba_flashback_archive_ts;

FLASHBACK_ARCHIVE_NA FLASHBACK_ARCHIVE# TABLESPACE_NAME      QUOTA_IN_MB
-------------------------------- ----------------------------  -----------------------       ------------------

FLASH1                             1                                  FLASH_ARCHIVE          2000

dba_flashback_archive_ts存储flashback archive与表空间对应信息。
 
    ++ 开启表的flashback archive logging (需要授予用户flashback archive对象权限)


SQL> conn scott/tiger
Connected.
SQL> alter table emp flashback archive flash1;
alter table emp flashback archive flash1
*
ERROR at line 1:
ORA-55620: No privilege to use Flashback Archive

未授权报错ORA-55620

 

 

另开一个会话进行授权:
SQL> grant flashback archive on flash1 to scott;

Grant succeeded.

回到原会话:
SQL> alter table emp flashback archive flash1;

Table altered.

 

SQL> select * from user_flashback_archive_tables;

TABLE_NAME OWNER_NAME FLASHBACK_ARCHIVE_NA ARCHIVE_TABLE_NAME STATUS
---------------- ----------------- -------------------------------- ----------------------------- ----------
EMP SCOTT FLASH1 SYS_FBA_HIST_13008 ENABLED

user/dba_flashback_archive_tables记录了表、flashback archive及track table的对应信息。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-11-25 01:53 , Processed in 0.117103 second(s), 21 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表