另一个与flashback archive相关的系统权限是flashback archive administrator,拥有这个权限的用户可以执行下列操作类型:
-Create flashback archive xxx tablespace yyy quota xx retention zzz;--创建闪回归档区,设置空间限制;
-Alter flashback archive xxx;--进行清理purge等操作;
-Drop flashback archive xxx;--删除指定的闪回归档空间;
如果取消了这个系统权限,那么相关的系列操作就不能进行。
注意:并不是只有显示拥有flashback archive administrator权限的用户才能Create/alter/drop archive flashback操作。如果用户是dba角色,也可以实现这个目标
10. 结论:
数据归档、offline是很多系统都需要有的特定需求。我们经常遇到这样的需求:将历史数据保留几个月或者几年待查。待查的情景是很少,但是我们如果从应用入手,就需要设计额外的数据表和业务处理流程。其中一个更麻烦的就是保留期过删数据的操作,相对较为复杂。
Flashback archive是Oracle可以使用在生产系统中直接使用的归档功能组件。如果开发设计使用这个组件进行归档,有若干个好处。
首先是透明化的归档操作,用户不需要去关心进行归档的业务逻辑。只要设置好了需要归档的数据表,按照查询归档语法进行查找。就可以实现应用系统中最典型的归档查询需要。
其次是高效存储个性。在flashback archive中,数据是保存在内部分区压缩表中,各方面的属性由Oracle进行控制管理。
最后是保留期管理严格化。设置不同的flashback archive retention period,首先可以对不同的数据表适应使用不同的保留期。当数据超期之后,Oracle自动进行数据删除工作,不需要用户进行干预。
附:
1.
清除闪回数据归档区数据
( flar01默认闪回归档需要sys用户?)
1.清除所有归档区的数据
SQL> alter flashback archive flar01 purge all;
2.清除一天以前的数据
SQL> alter flashback archive flar01 purge before timestamp(systimestamp - interval '1' day);
3.清除特定SCN之前的数据
SQL> alter fashback archive flar01 purge before scn scn号;
4.将指定的表不再设置闪回归档
SQL> alter table test no flashback archive;
5.删除闪回归档区
SQL>drop flashback archive flar01;
6. 创建闪回归档区
SQL> create flashback archive [default] flar01 tablespace tablespace_name [quota size] retention 时间;
7. 将表关联至闪回归档区
SQL> alter table table_name flashback archive flar01;
8. 将闪回归档时间设为7天 ( 默认闪回归档需要sys用户?)
SQL> alter flashback archive flar01 modify retention 7 day;
9. 将闪回归档flar01空间空间设为30M
SQL> alter flashback archive flar01 modify tablespace fla_archive quota 30M;
10. 像表中添加字段
SQL> alter table test add m varchar2(10);-- 对表进行操作不需要sys
11. 修改表的字段
SQL> alter table test modify m varchar2(20);
12. 删除表的字段
SQL> alter table test drop column m;
2.与闪回数据归档有关的视图
1. DBA视图,闪回归档区信息
SQL> desc dba_flashback_archive;
2.DBA视图,闪回归档有关表空间
SQL>desc dba_flashback_archive_ts;
3.DBA视图,对应表所对应的闪回归档信息
SQL> desc dba_flashback_archive_tables;
4.用户闪回归档区的创建信息
SQL> desc user_flashback_archive;
5.用户表对应的闪回归档区域
SQL>desc user_flashback_archive_tables;