ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【Flashback】验证SYSTEM表空间上创建的表不支持Flashback Drop

【Flashback】验证SYSTEM表空间上创建的表不支持Flashback Drop

原创 Linux操作系统 作者:secooler 时间:2011-06-01 21:35:23 0 删除 编辑
  在使用闪回技术恢复被DROP的表时,需要注意,如果表是被创建在SYSTEM表空间上,则此类表一旦被DROP,将不可以使用Flashback Drop技术进行恢复。

1.验证创建在SYSTEM表空间的表不可以被闪回
1)在普通用户sec上进行测试
sys@ora10g> conn sec/sec
Connected.

2)在sec用户下创建表T,表T存放在SYSTEM表空间上
sec@ora10g> create table t (x int) tablespace SYSTEM;

Table created.

3)查看回收站中的数据
sec@ora10g> show recyclebin;

此时回收站中的数据为空。

4)对表T执行不带purge选项的DROP删除操作
sec@ora10g> drop table t;

Table dropped.

5)在此确认回收站中是否记录删除的数据
sec@ora10g> show recyclebin;
sec@ora10g>

此时回收站依然空空如也。

SYSTEM表空间上创建的表无法被闪回的结论得以验证。

2.澄清:并非SYS以及SYSTEM系统用户下所有表都不能被闪回
这里再次强调,只有那些创建在SYSTEM表空间上的表不可以被闪回。也就是说,如果表是属于SYS或SYSTEM用户,但是所存放的表空间非SYSTEM时,是可以被闪回的。验证如下。

1)之所以会存在这个误区是因为SYS和SYSTEM用户的默认表空间是SYSTEM表空间
sys@ora10g> select USERNAME,DEFAULT_TABLESPACE from dba_users where USERNAME in ('SYS','SYSTEM');

USERNAME                       DEFAULT_TABLESPACE
------------------------------ ------------------------------
SYS                            SYSTEM
SYSTEM                         SYSTEM

因此在SYS或SYSTEM用户下创建的表默认会存放到SYSTEM表空间(若没有使用tablespace选项进行指定)。

2)在SYS用户下创建表T,但表所属表空间非系统SYSTEM表空间
sys@ora10g> create table t (x int) tablespace TBS_SEC_D;

Table created.

sys@ora10g> col owner for a6
sys@ora10g> select owner,segment_name,tablespace_name from dba_segments where segment_name='T';

OWNER  SEGMENT_NAME                   TABLESPACE_NAME
------ ------------------------------ ---------------------
SYS    T                              TBS_SEC_D

sys@ora10g> show user;
USER is "SYS"

3)对表T执行不带purge选项的DROP删除操作
sys@ora10g> drop table t;

Table dropped.

4)确认回收站中是否存在被删除的对象
sys@ora10g> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
------------- ------------------------------ ------------ -------------------
T             BIN$pBoDteMEBFzgQMKQt8BPJw==$0 TABLE        2011-06-01:20:40:50


被删除的T表已经在回收站中存在。

5)尝试对T表进行闪回
sys@ora10g> flashback table t to before drop;

Flashback complete.

T表闪回成功。

sys@ora10g> desc t;
 Name     Null?    Type
 -------- -------- -------------------
 X                 NUMBER(38)

3.小结
SYSTEM表空间是一个神奇的地方,在这个神秘的国度存放的表将不支持闪回。

Good luck.

secooler
11.06.01

-- The End --

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/519536/viewspace-697008/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle ACE 总监,阿里云MVP,北京大学理学硕士,恩墨学院创始人,教育专家,中国区 Cloudera 首位官方授权大数据讲师,金牌培训专家,BDA大数据联盟创始人,OCM联盟创始人,ACCUG创始人、ACOUG核心专家,Blogger。

注册时间:2008-03-16

  • 博文量
    797
  • 访问量
    8107809