闪回归档

一、设置闪回归档
1、创建用于保存FDA的新表空间(空间大小取决于基表及预期的DML和DDL操作)
2、使用 FLASHBACK ARCHIVE ADMINISTER系统权限:创建闪回数据库归档,将它分配到表空间,并制定其保留期。
    eg:create falshback archive fda1 
       tablespace fda_tbs1 quota 10m retention 1 year;
3、使用 FLASHBACK ARCHIVE对象权限:变更基表以启用归档并将其分配到一个闪回归档。
    eg:alter table hr.employees flashback archive fda1;
注意:一个闪回数据归档包含一个或多个表空间。可以拥有多个闪回数据归档,他们都有保留时间。应该根据保留时间的要求创建不同的闪回数据归档。

二、闪回归档示例
--create the flashback data archive
create flashback archive default fla1
  tablespace tbs1 quota 10g retention 5 year;
注:使用default选项可为系统指定默认的闪回数据归档。闪回归档的空间限额默认为unlimited
    如果一个表空间中的空间限额不是无限制的,则必须指定该值,否则会引发ORA-55621

--specify the default flashback data archive
alter flashback archive fla1 set default;
注:默认情况下,系统没有任何闪回数据归档。可以在alter flashback archhive语句的set default
    字句指定,也可以在创建闪回数据归档时,在create flashback archive语句中包含default.

--enable flashback data archive
alter table inventory flashback archive;
alter table stock_data flashback archive;

--select statement
select product_number,product_name,count from inventory as 
  of timestamp to_timestamp('2009-10-30 00:00:00','YYYY-MM-DD HH24:MI:SS');

--可以选择增加空间
alter flashback archive fla1 add tablespace tbs3 quota 5G;

--可以选择更改保留时间
alter flashback archive fla1 modify retention 2 year;

--可以选择清除数据
alter flashback archive fla1 purge before timestamp
  (systimestamp - interval '1' day);

--可以选择删除闪回数据归档
drop flashback archive fla1;
注:使用alter flashback archive命令可以:更改闪回归档的保留时间、清除部分或全部数据、
    增加或删除表空间但如果全部表空间会引发错误。

三、完整方案演化
取消关联或关联DBMS_FLASHBACK_ARCHIVE程序中的过程:
  *对指定的表禁用total recal并允许更复杂的DDL(升级、拆分表,等等)。
  *在关联期间执行方案完整性检查。(基表和历史记录表必须为相同的方案)
注:可通过DBMS_FLASHBACK_ARCHIVE程序包执行不被自动支持的所有DDL更改。可以使用DISASSOCIATE_FBA和
    REASSOCIATE_FBA过程从闪回数据归档取消关联和重新关联给定的表。
    应谨慎使用此项功能,请注意此功能会导致归档不再保持不变,因为在取消关联期间历史数据可能会更改。

流程:
    *拥有FLASHBACK ARCHIVE ADMINISTER权限,从基表中取消关联归档
    *为基表进行必要的更改
    *为相应的归档进行必要的更改
    *然后使用相同方案将表与归档关联

四、准则
1、为了方便起见,可以对您编写的SQL 代码使用闪回查询、闪回版本查询或闪回事务处理查询。
2、请记住,所有闪回处理过程都使用当前会话设置(如国家/ 地区语言和字符集),而不是在所查询的时间有效的设置。
3、要查询某个精确时间的过去数据,可使用SCN 。如果使用时间戳,查询的实际时间可能会比指定的时间提前3  秒钟。
   Oracle DB 在内部使用SCN ,并以3  秒钟的粒度级别将它们映射到时间戳
4、要获得稍后与闪回功能一起使用的SCN ,可以使用DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER 函数。
5、要计算或检索一个过去时间供查询使用,可以使用一个函数返回值作为时间戳或SCN参数。例如,将SYSTIMESTAMP函数
   的值加上或减去一个INTERVAL 值。
6、要确保数据库的一致性,请始终在查询过去数据之前执行COMMIT 或ROLLBACK操作。
7、不能从动态性能( V$)  视图检索过去的数据。对此类视图的查询总是返回当前数据。但是,可以在静态数据字典视图
  (如*_TABLES )中执行对过去数据的查询。









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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值