oracle的闪回归档区(FDA)

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





下面我们便来做个实验:
一、创建一个表空间
  1. SYS> create tablespace myfda datafile '/u01/app/oracle/oradata/orcl/myfda01.dbf' size 300m;


  2. Tablespace created.
二、 解锁 fda_admin,并赋予 FLASHBACK ARCHIVE权限,使其能够建立闪回归档
  为了让其能够登录并且应用表空间,赋予
 connect , resource
  1. SYS> CREATE USER fda_admin IDENTIFIED BY fda_admin DEFAULT TABLESPACE myfda ACCOUNT UNLOCK;


  2. User created.


  3. SYS> GRANT FLASHBACK ARCHIVE ADMINISTER TO fda_admin;


  4. Grant succeeded.


  5. SYS> grant connect,resource to fda_admin;


  6. Grant succeeded.

三、使用fda_admin用户登录,并且建立闪回归档区
  1. SYS> conn fda_admin/fda_admin
  2. Connected.
  3. SYS> create flashback archive fda tablespace myfda quota 30m retention 1 year;


  4. Flashback archive created.




四、查询已经建立的闪回归档区
除了下面的 DBA_FLASHBACK_ARCHIVE以外,FLASHBACK_ARCHIVE_TS和FLASHBACK_ARCHIVE_TABLES都能查到闪回归档区的信息
  1. SYS> SELECT * FROM DBA_FLASHBACK_ARCHIVE;


  2. OWNER_NAME FLASHBACK_ARCHIVE_NA FLASHBACK_ARCHIVE# RETENTION_IN_DAYS
  3. ---------- -------------------- ------------------ -----------------
  4. CREATE_TIME LAST_PURGE_TIME STATUS
  5. -------------------- -------------------- -------
  6. FDA_ADMIN FDA 1 365
  7. 23-DEC-16 04.58.23.0 23-DEC-16 04.58.23.0
  8. 00000000 PM 00000000 PM

五、为了让数据快速从undo表空间进入闪回归档区,所以我们建立一个比较小的undo表空间
    并且指定其为默认undo表空间
  1. SYS> create undo tablespace UNDOTBS2 datafile '/u01/app/oracle/oradata/orcl/UNDOTBS201.dbf' size 15M autoextend off;


  2. Tablespace created.


  3. SYS> alter system set undo_tablespace= UNDOTBS2;


  4. System altered.


  5. SYS> show parameter undo


  6. NAME TYPE VALUE
  7. ------------------------------------ ----------- ------------------------------
  8. undo_management string AUTO
  9. undo_retention integer 900
  10. undo_tablespace string UNDOTBS2


六、FDA_ADMIN用户,建立一个表,并让其能够使用闪回归档区。

  1. FDA_ADMIN> create table text(id int,name varchar(10));

  2. Table created.

  3. FDA_ADMIN> alter table text flashback archive fda;

  4. Table altered.

      查询当前的SCN号
  1. SYS> alter table text flashback archive fda;


  2. Table altered.GET_SYSTEM_CHANGE_NUMBER
  3. ------------------------
  4.                  1008004


七、往该表插入两百行

  1. FDA_ADMIN> begin
  2.     for i in 1 .. 200 loop
  3.      insert into text values(i,'zhangsan');
  4.      commit;
  5.   end loop;
  6.   end;
  7.   / 2 3 4 5 6 7
   为了让这些数据在undo中被覆盖
  继续创建一个表,然后插入两百行

点击(此处)折叠或打开

  1. FDA_ADMIN> create table text2(name varchar2(10),id int);

  2. Table created.

  3. FDA_ADMIN> begin
  4.     for i in 1 .. 200 loop
  5.      insert into text2 values('lisi',i);
  6.      commit;
  7.   end loop;
  8.   end;
  9.   / 2 3 4 5 6 7

八、查看scn为1008004时候text的的行统计信息

  1. SYS> set autotrace on

  2. SYS> select count(*) from FDA_ADMIN.text as of scn 1008004;

  3.   COUNT(*)
  4. ----------
  5.          0


  6. Execution Plan
  7. ----------------------------------------------------------
  8. Plan hash value: 20763998

  9. --------------------------------------------------------------------------------
  10. ----------------------------------------

  11. | Id | Operation | Name | Rows | Bytes |TempSpc|
  12.  Cost (%CPU)| Time | Pstart| Pstop |

  13. --------------------------------------------------------------------------------
  14. ----------------------------------------

  15. | 0 | SELECT STATEMENT | | 1 | | |
  16.     96 (3)| 00:00:02 | | |

  17. | 1 | SORT AGGREGATE | | 1 | | |
  18.             | | | |

  19. | 2 | VIEW | | 5 | | |
  20.     96 (3)| 00:00:02 | | |

  21. | 3 | UNION-ALL | | | | |
  22.             | | | |

  23. | 4 | PARTITION RANGE SINGLE| | 1 | 28 | |
  24.      2 (0)| 00:00:01 | 1 | 1 |

  25. |* 5 | TABLE ACCESS FULL | SYS_FBA_HIST_76862 | 1 | 28 | |
  26.      2 (0)| 00:00:01 | 1 | 1 |

  27. |* 6 | FILTER | | | | |
  28.             | | | |

  29. | 7 | MERGE JOIN OUTER | | 4 | 8160 | |
  30.     94 (3)| 00:00:02 | | |

  31. | 8 | SORT JOIN | | 4 | 48 | |
  32.      3 (34)| 00:00:01 | | |

  33. |* 9 | TABLE ACCESS FULL | TEXT | 4 | 48 | |
  34.      2 (0)| 00:00:01 | | |

  35. |* 10 | SORT JOIN | | 200 | 396K| 808K|
  36.     91 (2)| 00:00:02 | | |

  37. |* 11 | TABLE ACCESS FULL | SYS_FBA_TCRV_76862 | 200 | 396K| |
  38.      3 (0)| 00:00:01 | | |

  39. --------------------------------------------------------------------------------

很清楚地看到在闪回查询的过程中,用到了闪回归档表SYS_FBA_TCRV_76862。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31386161/viewspace-2131300/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31386161/viewspace-2131300/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值