从Oracle 11g开始,提供了一个这样的功能:闪回数据归档(Flashback Data Archive)。通过这一功能,Oracle数据库可以将UNDO数据进行归档,从而提供全面的历史数据查询,也因此引入一个新的概念:Oracle Total Recall,即Oracle全面回忆。闪回数据归档可以和我们一直熟悉的日志归档类比,日志归档记录的是REDO的历史状态,用于保证恢复的连续性。而闪回归档记录的是UNDO的历史状态,可以用于对数据进行闪回追溯查询。后台进程LGWR用于将REDO信息写出到联机日志文件,ARCH进程负责写出到归档日志,而在Oracle 11g中新增的后台进程FBDA(Flashback Data Archiver Process)则用于对闪回数据进行归档写出。
前面讲述的闪回功能都有时间限制:闪回数据库受闪回日志空间大小及保留时间的限制,闪回查询受撤销表空间及保留时间的限制,闪回删除受表空间可用空间的限制。而闪回数据归档则可以配置长期的存储表行数据的前映像,甚至可以存储多年。FBDA会确保保存该时间点之前的所有数据,超出保存时间之前的数据会自动维护删除。这对于像司法和审计方面的需求尤其适用,闪回数据归档透明的支持了这种做法,DBA能够保证符合法律要求而不需要做任何额外的工作。
对于繁忙的数据库,闪回数据存储显然要耗用更多的磁盘空间和时间。当然用户可以根据需要,仅对部分表启用闪回数据归档,从而满足特定的业务需求。
配置闪回数据归档的基本步骤:
创建一个表空间,然后创建归档,指定表空间、保留时间及表空间配额:
create tablespace fda datafile 'd:\oradata\mes\fda01.dbf' size 10g;
create flashback archive default fa tablespace fda quota 10g retention 1 year;
其中fa是创建的闪回归档名,fda是为归档创建的表空间,default关键字表示除非另行说明,该归档将用作所有表的归档。也可以稍后设置默认的归档:
alter flashback archive fa set default;
quota子句显示归档在表空间中占用的配额。还可以在原有的表空间或另一个表空间中扩展更多的空间:
alter flashback archive fa add tablespace fda2 quota 10g;
也可以调整闪回归档的保留时间:
alter flashback archive fa modify retention 2 year;
那么一旦数据超过了指定的保留期限,FBDA后台进程将自动从归档中删除过期的数据。在数据过期之前,也可以手动进行删除,如:
alter flashback archive fa purge before timestamp to_timestamp('2015-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss');
创建、修改或删除归档以及控制归档的保留和清除,需要flashback archive administer系统权限,归档表的用户必须授予flashback archive的权限:
grant flashback archive administer to cmes;
grant flashback archive on fa to rmes;
为了启用表的归档保护,使用如下命令:
alter table rmes.r_wip_station_t flashback archive fa;
如要删除表的归档保护,可以使用如下命令:
alter table rmes.r_wip_station_t no flashback archive;
如要删除闪回数据归档,则可用以下命令:
drop flashback archive fa;
加入到闪回数据归档的表、表空间、用户是受保护不允许删除的,除非先将归档保护删除。
另外,有三个数据字典视图记录了闪回数据归档的配置信息:
dba_flashback_archive,描述了配置的归档
col flashback_archive_name for a30
select owner_name, flashback_archive_name, flashback_archive#, retention_in_days, to_char(create_time, 'yyyy-mm-dd hh24:mi:ss') create_time, status from dba_flashback_archive;
OWNER_NAME FLASHBACK_ARCHIVE_NAME FLASHBACK_ARCHIVE# RETENTION_IN_DAYS CREATE_TIME STATUS
------------------------------ ------------------------------ ------------------ ----------------- ------------------- -------
SYS FA 1 365 2017-01-29 22:31:29 DEFAULT
dba_flashback_archive_ts,显示了每个表空间为闪回归档分配的配额
col flashback_archive_name for a30
col quota_in_mb for a20
select * from dba_flashback_archive_ts;
FLASHBACK_ARCHIVE_NAME FLASHBACK_ARCHIVE# TABLESPACE_NAME QUOTA_IN_MB
------------------------------ ------------------ ------------------------------ --------------------
FA 1 FDA 1024
dba_flashback_archive_tables,列出了启用闪回归档的表
col archive_table_name for a30
select * from dba_flashback_archive_tables;
TABLE_NAME OWNER_NAME FLASHBACK_ARCHIVE_NAME ARCHIVE_TABLE_NAME STATUS
------------------------------ ------------------------------ ------------------------------ ------------------------------ --------
R_WIP_STATION_T RMES FA SYS_FBA_HIST_98694 ENABLED
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28974745/viewspace-2139608/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28974745/viewspace-2139608/