一、设置闪回归档
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 )中执行对过去数据的查询。
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 )中执行对过去数据的查询。