oracle flashback与归档关系,Oracle Flashback Archive——Oracle闪回归档(下)

Flashback Archive是Oracle 11g推出的具有针对性和强制性的数据透明归档技术。本篇我们集中介绍与该特性相关的权限和DDL操作问题。

9、Flashback Archive相关权限

Oracle一个新特性的推出,经常伴随着一系列新的权限集合的确立。Flashback Archive组件相关的有两个系统权限,分别为flashback archive和flashback archive administrator。

从上面的scott用户的情况中,我们可以看到flashback archive系统权限的作用。就是通过对数据表和已经建立的flashback archive建立关系,开启闪回归档功能。

SQL> conn scott/tiger@ora11g;

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

Connected as scott

SQL> alter table t flashback archive flar1;

alter table t flashback archive flar1

ORA-55620:无权使用闪回归档

--切换到sys用户上

SQL> grant flashback archive on flar1 to scott;

Grant succeeded

SQL> alter table t flashback archive flar1;

Table altered

但是,只拥有flashback archive权限的用户,对视图dba_flashback_xxx系列获取到的结果是不准确的。

SQL> select owner_name, flashback_archive_name from dba_flashback_archive;

OWNER_NAMEFLASHBACK_ARCHIVE_NAME

------------------------------ -------------------------

SQL> select table_name, owner_name from dba_flashback_archive_tables;

TABLE_NAMEOWNER_NAME

-------------------- ------------------------------ --------------------------------

对只拥有flashback archive系统权限的用户而言,只能去查找user_xxx相关视图。

SQL> select owner_name, flashback_archive_name from user_flashback_archive;

OWNER_NAMEFLASHBACK_ARCHIVE_NAME

------------------------------ ------------------------

SYSFLAR1

另一个与flashback archive相关的系统权限是flashback archive administrator,拥有这个权限的用户可以执行下列操作类型:

üCreate flashback archive xxx tablespace yyy quota xx retention zzz;创建闪回归档区,设置空间限制;

üAlter flashback archive xxx进行清理purge等操作;

üDrop flashback archive xxx删除指定的闪回归档空间;

SQL> conn sys/oracle@ora11g as sysdba;

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

Connected as SYS

SQL> grant flashback archive administer to scott;

Grant succeeded

SQL> conn scott/tiger@ora11g;

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

Connected as scott

SQL> select * from dba_flashback_archive_tables;

TABLE_NAME OWNER_NAMEFLASHBACK_ARCHIVE_NAME

------------------------------ ------------------------------ -----------------------------------

TSCOTTFLAR1

SQL> create flashback archive flar2 tablespace mytest retention 1 year;

Done

SQL> ALTER FLASHBACK ARCHIVE flar2 PURGE ALL;

Done

SQL> drop flashback archive flar2;

Done

如果取消了这个系统权限,那么相关的系列操作就不能进行。

SQL> revoke flashback archive administer from scott;

Revoke succeeded

SQL> create flashback archive flr2 tablespace mytest retention 1 year;

create flashback archive flr2 tablespace mytest retention 1 year

ORA-55612:无权管理闪回归档

注意,并不是只有显示拥有flashback archive administrator权限的用户才能Create/alter/drop archive flashback操作。如果用户是dba角色,也可以实现这个目标。

SQL> conn sys/oracle@ora11g as sysdba;

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

Connected as SYS

SQL> grant dba to scott;

Grant succeeded

SQL> conn scott/tiger@ora11g ;

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

Connected as scott

SQL> create flashback archive flr2 tablespace mytest retention 1 year;

Done

10、flashback archive与DDL操作

Flashback Archive是保证对数据表进行DML操作时,数据前后镜像都能保存找回的技术。那么,如果一个数据表加入flashback archive之后,进行DDL操作有什么影响呢?我们分别进行试验。

ü数据列添加add实验

对已经加入flashback archive的数据表添加一个数据列。

SQL> alter table t add m varchar2(10);

Table altered

直观感觉没有什么区别,就是添加数据列的速度要慢很多。此时,我们检查相关的数据表。

SQL> select * from sys_fba_ddl_colmap_88294;

STARTSCNENDSCN XIDOPERATION COLUMN_NAMETYPEHISTORICAL_COLUMN_NAME

---------- ---------- ----- --------- -------------- -------------------- --------------------

13395717OWNERVARCHAR2(30)OWNER

(篇幅原因,有省略……)

13395717EDITION_NAMEVARCHAR2(30)EDITION_NAME

13424840MVARCHAR2(10)M

16 rows selected

数据表基表sys_fba_ddl_colmap_88294记录了数据字段变化起效的时间范围(也就是scn范围)。从刚才添加数据列的情况看,数据表中说明从scn=13424840开始,添加起效了数据列m。

ü数据列修改

修改一个数据列属性。

SQL> alter table t modify m varchar2(20) ;

Table altered

SQL> select * from sys_fba_ddl_colmap_88294;

STARTSCNENDSCNCOLUMN_NAMETYPEHISTORICAL_COLUMN_NAME

---------- --------------------------- ---------------- ----------------------

13395717OWNERVARCHAR2(30)OWNER

13395717EDITION_NAMEVARCHAR2(30)EDITION_NAME

1342484013427266 M_13427266_MVARCHAR2(10)M

13427266MVARCHAR2(20)M

17 rows selected

对于一个数据列修改,Oracle flashback archive将其视为删除列后重新添加。

üTruncate table

数据表的truncate操作是一个典型的DDL操作,具有flashback archive特性的数据表是否可以truncate操作呢?

SQL> truncate table t;

Table truncated

SQL> select count(*) from t as of timestamp to_timestamp('2011/9/6 10:45:49','yyyy-mm-dd hh24:mi:ss');

COUNT(*)

----------

17

ü删除数据列

对一个数据列进行删除操作,flashback archive数据表同样支持。

SQL> alter table t drop column m;

Table altered

SQL> select count(*) from t as of timestamp to_timestamp('2011/9/6 10:45:49','yyyy-mm-dd hh24:mi:ss');

COUNT(*)

----------

17

SQL> select count(*) from t;

COUNT(*)

----------

0

此时,在sys_fba_ddl_colmap_88294中会记录上删除记录。

SQL> select STARTSCN,ENDSCN,COLUMN_NAME from sys_fba_ddl_colmap_88294;

STARTSCNENDSCNCOLUMN_NAME

---------- ---------- ---------------- -

13395717OWNER

13395717NAMESPACE

(篇幅原因,有省略。。。。。。)

13395717EDITION_NAME

1342484013427266M_13427266_M

1342726613428271D_13428271_M

17 rows selected

üDrop删除数据表

对drop数据表操作,flashback archive数据表是不支持的。

SQL> drop table t;

drop table t

ORA-55610:针对历史记录跟踪表的DDL语句无效

要想删除数据表,则需要首先使用alter table xxx no flashback archive;语句进行历史数据归档跟踪关系的解除。之后才能进行删除。

11、结论

数据归档、offline是很多系统都需要有的特定需求。我们经常遇到这样的需求:将历史数据保留几个月或者几年待查。待查的情景是很少,但是我们如果从应用入手,就需要设计额外的数据表和业务处理流程。其中一个更麻烦的就是保留期过删数据的操作,相对较为复杂。

Flashback archive是Oracle可以使用在生产系统中直接使用的归档功能组件。如果开发设计使用这个组件进行归档,有若干个好处。

首先是透明化的归档操作,用户不需要去关心进行归档的业务逻辑。只要设置好了需要归档的数据表,按照查询归档语法进行查找。就可以实现应用系统中最典型的归档查询需要。

其次是高效存储个性。在flashback archive中,数据是保存在内部分区压缩表中,各方面的属性由Oracle进行控制管理。

最后是保留期管理严格化。设置不同的flashback archive retention period,首先可以对不同的数据表适应使用不同的保留期。当数据超期之后,Oracle自动进行数据删除工作,不需要用户进行干预。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值