Flashback Data Archive

11g的新功能,有如下特性。

1.在有效期内保存事务改变的信息。

2.FDA包含一个或多个表空间,可以创建多个FDA,以sysdba登陆时,可以指定默认的FDA.

3.FDA默认关闭,当启动后,只有Flashback Archive Admnistrator权限用户或sysdba禁用FDA.

4.创建FDA时,可以指定四个参数,即闪回归档名称,闪回归档第一个表空间名称,闪回数据量(默认是unlimited,除非在第一个表空间的配额是unlimited,否则不能默认。会出现ORA_55621错误),保留时间。

5.以sysdba登录,可以指定默认的闪回归档,如果没有指定,也可以使用alter flashback archive命令指定。

在11g之前的闪回功能中,只有Flashback Database 依赖于闪回日志,其他Flashback Query, Flashback Version Query,

Flashback Transaction Query,Flashback Table,Flashback Drop使用了undo表空间数据。

Flashback Data Archive 通过将改变的数据存储到单独创建的闪回归档区,设置单独的存储策略,就可以闪回到指定时间而不影响undo策略。

Flashback Data Archive 不记录数据库的所有变化,只对指定表进行记录。因此对于不需要用到undo,又对审计或数据安全性要求很高的数据库中,

是一个很好的选择。

闪回数据归档区可以有一个或多个,每一个归档区都可以有唯一名称,并设置单独的保留策略。

FBDA是专门为11g引入的一个后台进程,用于追踪表的变化转储到闪回归档区。

Flashback Data Archive 使用限制:

1.只能在自动段空间管理(ASSM)的表空间上创建。

2.要求使用自动的undo管理,undo_management=auto.

SQL> select name,description from v$bgprocess where name='FBDA';

NAME       DESCRIPTION

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

FBDA       Flashback Data Archiver Process

测试:

一、创建用户并授权

SQL> show user;

USER is "SYS"

SQL> create user fda identified by fda default tablespace users temporary tablespace temp01;

User created.

SQL> grant resource,connect to fda;

Grant succeeded.

SQL> grant flashback archive administer to fda;

Grant succeeded.

SQL> set linesize 800

SQL> select * from dba_sys_privs where grantee='FDA';

GRANTEE                                                      PRIVILEGE                                                                        ADMIN_

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

FDA                                                          FLASHBACK ARCHIVE ADMINISTER                                                     NO

FDA                                                          UNLIMITED TABLESPACE                                                             NO

二、查看与闪回有关的视图

SQL> select d.owner,d.view_name,d.text_length From dba_views d where d.view_name like '%FLASHBACK%';

OWNER                                                        VIEW_NAME                                                    TEXT_LENGTH

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

SYS                                                          GV_$FLASHBACK_DATABASE_LOG                                           157

SYS                                                          GV_$FLASHBACK_DATABASE_LOGFILE                                       124

SYS                                                          GV_$FLASHBACK_DATABASE_STAT                                          138

SYS                                                          V_$FLASHBACK_DATABASE_LOG                                            146

SYS                                                          V_$FLASHBACK_DATABASE_LOGFILE                                        113

SYS                                                          V_$FLASHBACK_DATABASE_STAT                                           127

SYS                                                          V_$FLASHBACK_TXN_GRAPH                                               250

SYS                                                          V_$FLASHBACK_TXN_MODS                                                260

SYS                                                          FLASHBACK_TRANSACTION_QUERY                                          276

SYS                                                          DBA_FLASHBACK_ARCHIVE                                                304

SYS                                                          DBA_FLASHBACK_ARCHIVE_TABLES                                         336

OWNER                                                        VIEW_NAME                                                    TEXT_LENGTH

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

SYS                                                          DBA_FLASHBACK_ARCHIVE_TS                                             263

SYS                                                          DBA_FLASHBACK_TXN_REPORT                                             209

SYS                                                          DBA_FLASHBACK_TXN_STATE                                              358

SYS                                                          USER_FLASHBACK_ARCHIVE                                               532

SYS                                                          USER_FLASHBACK_ARCHIVE_TABLES                                        759

SYS                                                          USER_FLASHBACK_TXN_REPORT                                            146

SYS                                                          USER_FLASHBACK_TXN_STATE                                             321

三、创建测试表空间

SQL> create tablespace fda1 datafile '/u01/app/oracle/oradata/orcl/fda1' size 100m;

Tablespace created.

SQL> create tablespace fda2 datafile '/u01/app/oracle/oradata/orcl/fda2' size 100m;

Tablespace created.

SQL> create tablespace fda3 datafile '/u01/app/oracle/oradata/orcl/fda3' size 100m;

Tablespace created.

SQL> create tablespace fda4 datafile '/u01/app/oracle/oradata/orcl/fda4' size 100m;

Tablespace created.

四、创建一个Flashback Archive,配额20M,有效期一年。

SQL> create flashback archive default archive1 tablespace fda1 quota 20m retention 1 year;

Flashback archive created.

默认的闪回归档只有一个。

SQL> create flashback archive default archive2 tablespace fda2 quota 20m retention 1 year;

create flashback archive default archive2 tablespace fda2 quota 20m retention 1 year

*

ERROR at line 1:

ORA-55609: Attempt to create duplicate default Flashback Archive

五、创建一个非默认归档

SQL> create flashback archive archive2 tablespace fda2 quota 20m retention 3 year;

Flashback archive created.

SQL> revoke unlimited tablespace from fda;

Revoke succeeded.

SQL> alter user fda quota 10m on fda3;

User altered.

SQL> conn fda/fda

Connected.

SQL> create flashback archive archive3 tablespace fda3 quota 20m retention 3 year;

create flashback archive archive3 tablespace fda3 quota 20m retention 3 year

*

ERROR at line 1:

ORA-55621: User quota on tablespace "FDA3" is not enough for Flashback Archive

此种情况下,用户配额必须大于等于归档空间大小,否则会报ORA-55621

SQL> conn / as sysdba;

Connected.

SQL> grant unlimited tablespace to fda;

Grant succeeded.

SQL> conn fda/fda

Connected.

SQL> create flashback archive archive3 tablespace fda3 quota 20m retention 3 year;

Flashback archive created.

SQL> DROP FLASHBACK ARCHIVE archive3;

Flashback archive dropped.

SQL> conn / as sysdba;

Connected.

SQL> show user;

USER is "SYS"

SQL> alter user fda quota 10m on fda3;

User altered.

SQL> create flashback archive archive3 tablespace fda3  quota 20m retention 3 year;

create flashback archive archive3 tablespace fda3  quota 20m retention 3 year

*

ERROR at line 1:

ORA-55621: User quota on tablespace "FDA3" is not enough for Flashback Archive

SQL> create flashback archive archive3 tablespace fda3  quota 10m retention 3 year;

Flashback archive created.

可以使用alter flashback archive 修改如下内容:

1.改变归档有效期

2.清空部分或全部数据

3.增加,修改,移除表空间

不能移除Flashback Data Archive里面所有的表空间。

只能使用sysdba修改默认表空间,只能有一个默认表空间

SQL> show user;

USER is "FDA"

SQL> alter flashback archive archive3 set default;

alter flashback archive archive3 set default

*

ERROR at line 1:

ORA-55611: No privilege to manage default Flashback Archive

SQL> conn / as sysdba;

Connected.

SQL> alter flashback archive archive3 set default;

Flashback archive altered.

SQL> select t.owner_name,t.flashback_archive_name,t.status from dba_flashback_archive t ;

OWNER_NAME                                                   FLASHBACK_ARCHIVE_NAME                                                           STATUS

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

SYS                                                          DATAARCHIVE

SYS                                                          ARCHIVE2

SYS                                                          ARCHIVE1

FDA                                                          ARCHIVE3                                                                         DEFAULT

SQL> alter flashback archive archive2 set default;

Flashback archive altered.

SQL> select t.owner_name,t.flashback_archive_name,t.status from dba_flashback_archive t ;

OWNER_NAME                                                   FLASHBACK_ARCHIVE_NAME                                                           STATUS

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

SYS                                                          DATAARCHIVE

SYS                                                          ARCHIVE2                                                                         DEFAULT

SYS                                                          ARCHIVE1

FDA                                                          ARCHIVE3

六、操作

6.1为存在的Flashback Archive 添加表空间,分配限额(如果不分配quota,则表示无限使用)

SQL> alter flashback archive archive1 add tablespace fda4 quota 20m;

Flashback archive altered.

SQL> select * from DBA_FLASHBACK_ARCHIVE_TS;

FLASHBACK_ARCHIVE_NAME                                       FLASHBACK_ARCHIVE# TABLESPACE_NAME                                              QUOTA_IN_MB

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

DATAARCHIVE                                                                   1 FBRA

ARCHIVE1                                                                      2 FDA1                                                         20

ARCHIVE1                                                                      2 FDA4                                                         20

ARCHIVE2                                                                      3 FDA2                                                         20

ARCHIVE3                                                                      4 FDA3                                                         10

6.2 修改配额

SQL> alter flashback archive archive1 modify tablespace fda4 quota 15m;

Flashback archive altered.

SQL> select * from DBA_FLASHBACK_ARCHIVE_TS;

FLASHBACK_ARCHIVE_NAME                                       FLASHBACK_ARCHIVE# TABLESPACE_NAME                                              QUOTA_IN_MB

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

DATAARCHIVE                                                                   1 FBRA

ARCHIVE1                                                                      2 FDA1                                                         20

ARCHIVE1                                                                      2 FDA4                                                         15

ARCHIVE2                                                                      3 FDA2                                                         20

ARCHIVE3                                                                      4 FDA3                                                         10

6.3 修改配额,不限。

SQL> alter flashback archive archive1 modify tablespace fda4 ;

Flashback archive altered.

SQL> select * from DBA_FLASHBACK_ARCHIVE_TS;

FLASHBACK_ARCHIVE_NAME                                       FLASHBACK_ARCHIVE# TABLESPACE_NAME                                              QUOTA_IN_MB

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

DATAARCHIVE                                                                   1 FBRA

ARCHIVE1                                                                      2 FDA1                                                         20

ARCHIVE1                                                                      2 FDA4

ARCHIVE2                                                                      3 FDA2                                                         20

ARCHIVE3                                                                      4 FDA3                                                         10

6.4 修改有效期

SQL> alter flashback archive archive1 modify retention 5 year;

Flashback archive altered.

SQL> select t.owner_name,t.flashback_archive_name,t.retention_in_days,t.status from DBA_FLASHBACK_ARCHIVE t ;

OWNER_NAME                                                   FLASHBACK_ARCHIVE_NAME                                       RETENTION_IN_DAYS STATUS

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

SYS                                                          DATAARCHIVE                                                                 30

SYS                                                          ARCHIVE2                                                                  1095 DEFAULT

SYS                                                          ARCHIVE1                                                                  1825

FDA                                                          ARCHIVE3                                                                  1095

6.5 将表空间移除

SQL> alter flashback archive archive1 remove tablespace fda4;

Flashback archive altered.

SQL> select * from DBA_FLASHBACK_ARCHIVE_TS;

FLASHBACK_ARCHIVE_NAME                                       FLASHBACK_ARCHIVE# TABLESPACE_NAME                                              QUOTA_IN_MB

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

DATAARCHIVE                                                                   1 FBRA

ARCHIVE1                                                                      2 FDA1                                                         20

ARCHIVE2                                                                      3 FDA2                                                         20

ARCHIVE3                                                                      4 FDA3

仅移除Flashback Archive中的信息,表空间不会删除。

6.6 清空所有的记录数据

SQL> alter flashback archive archive1 purge all;

Flashback archive altered.

6.6 清空超过3天的数据

SQL> alter flashback archive archive1 purge before timestamp(systimestamp - interval'2'day);

Flashback archive altered.

6.7清除指定SCN之前的数据

SQL> select current_scn from v$database;

CURRENT_SCN

-----------

9831847

SQL> alter flashback archive archive1 purge before scn 9831847;

Flashback archive altered.

6.8 删除Flashback Archive,即使是默认的,也可以删除。

SQL> drop flashback archive archive2;

Flashback archive dropped.

SQL> select t.owner_name,t.flashback_archive_name,t.status from dba_flashback_archive t ;

OWNER_NAME                                                   FLASHBACK_ARCHIVE_NAME                                       STATUS

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

SYS                                                          DATAARCHIVE

SYS                                                          ARCHIVE1

FDA                                                          ARCHIVE3

七、使用示例

SQL> create table fdatest(id number) flashback archive;

create table fdatest(id number) flashback archive

*

ERROR at line 1:

ORA-55608: Default Flashback Archive does not exist

SQL> alter flashback archive archive3 set default;

Flashback archive altered.

SQL> create table fdatest(id number) flashback archive;

Table created.

7.2 对表启用或禁用flashback archive.

SQL> alter table fdatest no flashback archive;

Table altered.

SQL> alter table fdatest flashback archive;

Table altered.

7.3 启用并指定闪回区

SQL> alter table fdatest flashback archive

2  archive1;

alter table fdatest flashback archive

*

ERROR at line 1:

ORA-55600: The table "SYS"."FDATEST" is already enabled for Flashback Archive

SQL> alter table fdatest no flashback archive;

Table altered.

SQL> alter table fdatest flashback archive archive1;

Table altered.

7.4 启用flashback archive的表支持以下操作:

1.添加,删除,重新命名或修改一列。

2.添加,删除,重命名约束。

3.drop 或 truncate一个分区或子分区。

4.truncate table操作。

5.rename table;

可能引发错误的操作:

1.alter table statement that includes an ungrade table clause,with or without an including data clause.

2.alter table 移动或交换分区或子分区。

3.drop table 命令。

7.5 DBA_FLASHBACK_ARCHIVE_TABLES表记录着启动flashback archive的操作。

SQL> select * from DBA_FLASHBACK_ARCHIVE_TABLES;

TABLE_NAME                     OWNER_NAME                     FLASHBACK_ARCHIVE_NAME         ARCHIVE_TABLE_NAME             STATUS

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

FDATEST                        SYS                            ARCHIVE1                       SYS_FBA_HIST_78792             ENABLED

7.6 删除启用了flashback archive的表报错

SQL> drop table fdatest;

drop table fdatest

*

ERROR at line 1:

ORA-55610: Invalid DDL statement on history-tracked table

SQL> exec dbms_flashback_archive.disassociate_fba('SYS','FDATEST');

PL/SQL procedure successfully completed.

SQL> drop table FDATEST;

drop table FDATEST

*

ERROR at line 1:

ORA-55610: Invalid DDL statement on history-tracked table

SQL> exec dbms_flashback_archive.reassociate_fba('SYS','FDATEST');

PL/SQL procedure successfully completed.

SQL> exec dbms_flashback_archive.disassociate_fba('SYS','FDATEST');

PL/SQL procedure successfully completed.

SQL> drop table FDATEST;

drop table FDATEST

*

ERROR at line 1:

ORA-55610: Invalid DDL statement on history-tracked table

SQL> alter table FDATEST no flashback archive;

alter table FDATEST no flashback archive

*

ERROR at line 1:

ORA-55602: The table "SYS"."FDATEST" is not enabled for Flashback Archive

SQL> show user;

USER is "SYS"

SQL> alter table FDATEST flashback archive;

alter table FDATEST flashback archive

*

ERROR at line 1:

ORA-55624: The table "SYS"."FDATEST" cannot be enabled for Flashback Archive at this point

SQL> exec dbms_flashback_archive.disassociate_fba('SYS','FDATEST');

BEGIN dbms_flashback_archive.disassociate_fba('SYS','FDATEST'); END;

*

ERROR at line 1:

ORA-55633: Cannot do DDL on Flashback Data Archive enabled table

ORA-06512: at "SYS.DBMS_FLASHBACK_ARCHIVE", line 3

ORA-06512: at "SYS.DBMS_FLASHBACK_ARCHIVE", line 30

ORA-06512: at line 1

QL> alter table fdatest flashback archive

2  ;

alter table fdatest flashback archive

*

ERROR at line 1:

ORA-55624: The table "SYS"."FDATEST" cannot be enabled for Flashback Archive at this point

纠结。。。。

八、用flashback data archive 恢复数据

8.1创建测试表

SQL> create table fa(id number) flashback archive;

Table created.

8.2插入数据

SQL> begin

2     for i in 1..100 loop

3             insert into fa values(i);

4     end loop;

5  end;

6  /

PL/SQL procedure successfully completed.

SQL> commit;

Commit complete.

8.3更新操作

SQL> update fa set id=150 where  id <50

2  ;

49 rows updated.

SQL> commit;

Commit complete.

SQL> select to_char(sysdate,'yyyymmdd hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YYYYMMDDHH24:MI:S

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

20140208 11:16:38

8.4查询刚才数据

SQL> select count(*) from fa as of timestamp(systimestamp-interval '1' minute);

COUNT(*)

----------

100

SQL> select count(*) from fa as of timestamp(systimestamp-interval '10' minute);

select count(*) from fa as of timestamp(systimestamp-interval '10' minute)

*

ERROR at line 1:

ORA-01466: unable to read data - table definition has changed

说明那时还没有建表。

8.5删除操作

SQL> delete from fa;

100 rows deleted.

SQL> commit;

Commit complete.

SQL> select t.archive_table_name from DBA_FLASHBACK_ARCHIVE_TABLES t where t.table_name='FA';

ARCHIVE_TABLE_NAME

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

SYS_FBA_HIST_78804

SQL> select count(*) from SYS_FBA_HIST_78804;

COUNT(*)

----------

49

说明只记录了更新的那些记录。

阅读(973) | 评论(0) | 转发(0) |

oracle flashback archive,ORACLE Flashback Data Archive相关推荐

  1. oracle flashback6,【oracle】闪回flashback-11g-flashback data Archive

    Flashback data Archive 1.说明 Flashback data archive在它的有效期内将保存事物改变的信息. FDA包含一个或者多个表空间,我们可以创建多个FDA,当以sy ...

  2. oracle 11g Flashback Data Archive(闪回数据归档)

    Flashback Data Archive(闪回数据归档) UNDO表空间记录的回滚信息虽然可以提供回闪查询,但时间久了,这些信息会被覆盖掉,其实只要事务一提交,他们就变成可覆盖的对象了,所以经常在 ...

  3. oracle flashback 功能,Oracle 11g 新特性 Flashback Data Archive 使用实例

    Flashback Data Archive(闪回日志归档)其实理解为长时间的保存undo数据,对于某些重要的表可以自定义它的历史记录保存期限,它的的种种行为与undo表空间十分相似,使用的时候也是完 ...

  4. oracle闪回数据归档,oracle 11g Flashback Data Archive(闪回数据归档)

    Oracle 11G提供了丰富的回闪查询功能,对于人为的错误操作,历史数据订正,操作流程记录等有非常大的帮助,下面就来详细介绍下这个特性 回闪查询的原理: Oracle中有UNDO表空间,用来存放数据 ...

  5. Oracle Study学习之--Flashback Archive

    Oracle Study学习之--Flashback Archive CREATE FLASHBACK ARCHIVE Purpose Use the CREATE FLASHBACK ARCHIVE ...

  6. oracle flashback archive,ORACLE 11G flashback archive

    ORACLE 11G flashback archive 闪回数据存档,它是由一个或多个表空间存储对指定表进行的更改,也可对数据库级别做闪回数据存档 create flashback archive的 ...

  7. oracle flashback与归档关系,Oracle Flashback Archive——Oracle闪回归档(下)

    Flashback Archive是Oracle 11g推出的具有针对性和强制性的数据透明归档技术.本篇我们集中介绍与该特性相关的权限和DDL操作问题. 9.Flashback Archive相关权限 ...

  8. [每日一题] 11gOCP 1z0-053 :2013-09-29 Flashback Data Archive ...................................6...

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/12205299 正确答案:A 具体请参考:http://blog.csdn.net/guoy ...

  9. 闪回之 Flashback Data Archive

    背景: Oracle 11g 中 Flashback Data Archive 特性.将变化数据另外存储到创建的闪回归档区(Flashback Archive)中,以和 undo 区别开来,这样就可以 ...

最新文章

  1. pandas创建时间序列仿真数据并过滤(filter)时间数据:头尾数据、某年的数据、某年某月的数据、某年某月某日的数据、某个时间范围内的数据、truncate函数查看特定时间之前护着之后的数据
  2. Parallel小记
  3. linux 运维shell习题
  4. .. 相对目录php,php 计算两个目录的相对路径
  5. WinPcap笔记(1):VisualStudio2015配置WinCap
  6. 系统部署时的Could not load file or assembly 'Microsoft.VisualStudio.Enterprise.ASPNetHelper问题...
  7. KL散度的通俗易懂理解
  8. 单片机c语言数码显示实验报告,单片机c语言版数码动态显示实验报告.doc
  9. Shadow Map 原理和改进 【转】
  10. iview 按需引入解决加载慢的问题
  11. Maven:浅析依赖(dependency)关系中 scope 的含义(转)
  12. Laravel多用户博客系统
  13. 基于Python图书馆座位预约系统设计与实现 开题报告
  14. 139邮箱注册收费吗,什么VIP的邮箱安全又好用呢
  15. 一文讲透商业智能BI 到底是什么[转]
  16. python获取b站视频封面及弹幕
  17. python前戏之量
  18. Asp.net MVC WebApi Response AOP_se7en3_新浪博客
  19. java kafka consumer不消费,报错marking the coordinator (id rack null) dead for group
  20. 基于Highcharts箱线图实现k线图

热门文章

  1. 【前端 - CSS】第 18 课 - 背景属性
  2. 爱上一个叫史今的男人
  3. 杭州挂号网址及相关注意点
  4. 《微服务 架构与实践》王磊 摘要
  5. 港科夜闻|香港科大与香港科大(广州)管理层联席会议顺利召开
  6. 固态硬盘装完无法启动备忘
  7. 基于若依框架搭建商业项目
  8. 如何提升团队开发效率
  9. POJ 1127 跨立实验和快速排斥实验
  10. 黑人专用浏览器?爆强!!!