由于在Oracle中有好几种闪回技术都需要使用到undo表空间来实现其技术。但是受到UNDO_RETENTION和undo表空间的大小的限制,数据不可能一直存在于undo表空间当中。所以若是通过闪回想要恢复到之前的状态,可是undo表空间中已经不存在这些数据了,便会报
ORA-01555错误。
但是,在oracle 11g的版本中,有添加了Flashback Data Archive(FDA)闪回归档区技术。它能够将指定的对象中的数据从undo表空间归档下来,所以即使那些数据被 undo表空 间清除出去了,我们也可以利用该归档进行闪回。
以下便是 FDA技术实现流程图:

下面我们便来做个实验:
一、创建一个表空间
二、
解锁
fda_admin,并赋予
FLASHBACK ARCHIVE权限,使其能够建立闪回归档
为了让其能够登录并且应用表空间,赋予 connect , resource 权 限
三、使用fda_admin用户登录,并且建立闪回归档区
四、查询已经建立的闪回归档区
除了下面的 DBA_FLASHBACK_ARCHIVE以外,FLASHBACK_ARCHIVE_TS和FLASHBACK_ARCHIVE_TABLES都能查到闪回归档区的信息
为了让这些数据在undo中被覆盖
继续创建一个表,然后插入两百行
八、查看scn为1008004时候text的的行统计信息
很清楚地看到在闪回查询的过程中,用到了闪回归档表SYS_FBA_TCRV_76862。
但是,在oracle 11g的版本中,有添加了Flashback Data Archive(FDA)闪回归档区技术。它能够将指定的对象中的数据从undo表空间归档下来,所以即使那些数据被 undo表空 间清除出去了,我们也可以利用该归档进行闪回。
以下便是 FDA技术实现流程图:

下面我们便来做个实验:
一、创建一个表空间
- SYS> create tablespace myfda datafile '/u01/app/oracle/oradata/orcl/myfda01.dbf' size 300m;
-
-
- Tablespace created.
为了让其能够登录并且应用表空间,赋予 connect , resource 权 限
- SYS> CREATE USER fda_admin IDENTIFIED BY fda_admin DEFAULT TABLESPACE myfda ACCOUNT UNLOCK;
-
-
- User created.
-
-
- SYS> GRANT FLASHBACK ARCHIVE ADMINISTER TO fda_admin;
-
-
- Grant succeeded.
-
-
- SYS> grant connect,resource to fda_admin;
-
-
- Grant succeeded.
三、使用fda_admin用户登录,并且建立闪回归档区
- SYS> conn fda_admin/fda_admin
- Connected.
- SYS> create flashback archive fda tablespace myfda quota 30m retention 1 year;
-
-
- Flashback archive created.
四、查询已经建立的闪回归档区
除了下面的 DBA_FLASHBACK_ARCHIVE以外,FLASHBACK_ARCHIVE_TS和FLASHBACK_ARCHIVE_TABLES都能查到闪回归档区的信息
- SYS> SELECT * FROM DBA_FLASHBACK_ARCHIVE;
-
-
- OWNER_NAME FLASHBACK_ARCHIVE_NA FLASHBACK_ARCHIVE# RETENTION_IN_DAYS
- ---------- -------------------- ------------------ -----------------
- CREATE_TIME LAST_PURGE_TIME STATUS
- -------------------- -------------------- -------
- FDA_ADMIN FDA 1 365
- 23-DEC-16 04.58.23.0 23-DEC-16 04.58.23.0
- 00000000 PM 00000000 PM
五、为了让数据快速从undo表空间进入闪回归档区,所以我们建立一个比较小的undo表空间
并且指定其为默认undo表空间
六、FDA_ADMIN用户,建立一个表,并让其能够使用闪回归档区。
查询当前的SCN号
七、往该表插入两百行
并且指定其为默认undo表空间
- SYS> create undo tablespace UNDOTBS2 datafile '/u01/app/oracle/oradata/orcl/UNDOTBS201.dbf' size 15M autoextend off;
-
-
- Tablespace created.
-
-
- SYS> alter system set undo_tablespace= UNDOTBS2;
-
-
- System altered.
-
-
- SYS> show parameter undo
-
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- undo_management string AUTO
- undo_retention integer 900
- undo_tablespace string UNDOTBS2
六、FDA_ADMIN用户,建立一个表,并让其能够使用闪回归档区。
- FDA_ADMIN> create table text(id int,name varchar(10));
-
- Table created.
-
- FDA_ADMIN> alter table text flashback archive fda;
-
- Table altered.
查询当前的SCN号
- SYS> alter table text flashback archive fda;
-
-
- Table altered.GET_SYSTEM_CHANGE_NUMBER
- ------------------------
- 1008004
- FDA_ADMIN> begin
- for i in 1 .. 200 loop
- insert into text values(i,'zhangsan');
- commit;
- end loop;
- end;
- / 2 3 4 5 6 7
继续创建一个表,然后插入两百行
点击(此处)折叠或打开
- FDA_ADMIN> create table text2(name varchar2(10),id int);
-
- Table created.
-
- FDA_ADMIN> begin
- for i in 1 .. 200 loop
- insert into text2 values('lisi',i);
- commit;
- end loop;
- end;
- / 2 3 4 5 6 7
八、查看scn为1008004时候text的的行统计信息
- SYS> set autotrace on
-
- SYS> select count(*) from FDA_ADMIN.text as of scn 1008004;
-
- COUNT(*)
- ----------
- 0
-
-
- Execution Plan
- ----------------------------------------------------------
- Plan hash value: 20763998
-
- --------------------------------------------------------------------------------
- ----------------------------------------
-
- | Id | Operation | Name | Rows | Bytes |TempSpc|
- Cost (%CPU)| Time | Pstart| Pstop |
-
- --------------------------------------------------------------------------------
- ----------------------------------------
-
- | 0 | SELECT STATEMENT | | 1 | | |
- 96 (3)| 00:00:02 | | |
-
- | 1 | SORT AGGREGATE | | 1 | | |
- | | | |
-
- | 2 | VIEW | | 5 | | |
- 96 (3)| 00:00:02 | | |
-
- | 3 | UNION-ALL | | | | |
- | | | |
-
- | 4 | PARTITION RANGE SINGLE| | 1 | 28 | |
- 2 (0)| 00:00:01 | 1 | 1 |
-
- |* 5 | TABLE ACCESS FULL | SYS_FBA_HIST_76862 | 1 | 28 | |
- 2 (0)| 00:00:01 | 1 | 1 |
-
- |* 6 | FILTER | | | | |
- | | | |
-
- | 7 | MERGE JOIN OUTER | | 4 | 8160 | |
- 94 (3)| 00:00:02 | | |
-
- | 8 | SORT JOIN | | 4 | 48 | |
- 3 (34)| 00:00:01 | | |
-
- |* 9 | TABLE ACCESS FULL | TEXT | 4 | 48 | |
- 2 (0)| 00:00:01 | | |
-
- |* 10 | SORT JOIN | | 200 | 396K| 808K|
- 91 (2)| 00:00:02 | | |
-
- |* 11 | TABLE ACCESS FULL | SYS_FBA_TCRV_76862 | 200 | 396K| |
- 3 (0)| 00:00:01 | | |
-
- --------------------------------------------------------------------------------
很清楚地看到在闪回查询的过程中,用到了闪回归档表SYS_FBA_TCRV_76862。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31386161/viewspace-2131300/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31386161/viewspace-2131300/