由于在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/
本文详细介绍 Oracle 11g 中 Flashback Data Archive (FDA) 的配置与使用过程,包括创建闪回归档区、设置闪回归档权限及通过闪回归档进行数据恢复的方法。
400

被折叠的 条评论
为什么被折叠?



