【Flashback】回收站中被标记删除的表不可以DML和DDL操作

  这里体现的是回收站中保存的表本身操作上的局限性。既然表被DROP掉后存放到了回收站中,自然会有一些局限性,例如,回收站中被标记删除的表不可以DML和DDL操作。

1.模拟表被不含有PURGE关键字的DROP语句删除
1)查看数据库版本
sec@ora10g> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

2)确认回收站功能已经开启
sec@ora10g> show parameter recyclebin

NAME        TYPE    VALUE
----------- ------- ------------
recyclebin  string  on

3)创建表T并初始化数据
sec@ora10g> create table t (x int);
sec@ora10g> insert into t values (1);
sec@ora10g> insert into t values (2);
sec@ora10g> commit;
sec@ora10g> select * from t;

         X
----------
         1
         2

3)删除T表
sec@ora10g> drop table t;

Table dropped.

2.查看回收站中的内容
sec@ora10g> show recyclebin;
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
T                BIN$pnchvzFWXVTgQMKQt8Boqw==$0 TABLE        2011-06-25:22:36:49

可见,刚刚被删除的T表已经在回收站中得以体现。

3.对回收站中的表尝试查询
sec@ora10g> select * from "BIN$pnchvzFWXVTgQMKQt8Boqw==$0";

         X
----------
         1
         2

查询功能生效。

4.对回收站中的表尝试DML操作
1)尝试插入操作
sec@ora10g> insert into "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" values (3);
insert into "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" values (3)
            *
ERROR at line 1:
ORA-38301: can not perform. DDL/DML over objects in Recycle Bin

说明对回收站中的表进行插入操作是不可行的。

2)尝试删除操作
sec@ora10g> delete from "BIN$pnchvzFWXVTgQMKQt8Boqw==$0";
delete from "BIN$pnchvzFWXVTgQMKQt8Boqw==$0"
            *
ERROR at line 1:
ORA-38301: can not perform. DDL/DML over objects in Recycle Bin

说明对回收站中的表进行删除操作是不可行的。

3)尝试更新操作
sec@ora10g> update "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" set x=100;
update "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" set x=100
       *
ERROR at line 1:
ORA-38301: can not perform. DDL/DML over objects in Recycle Bin

说明对回收站中的表进行更新操作是不可行的。

通过增删改等一系列DML操作测试,表明回收站中的表不可被DML操作的。

5.对回收站中的表尝试DDL操作
以重命名操作为例演示DDL操作。
sec@ora10g> alter table "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" rename to t;
alter table "BIN$pnchvzFWXVTgQMKQt8Boqw==$0" rename to t
*
ERROR at line 1:
ORA-38301: can not perform. DDL/DML over objects in Recycle Bin

说明对回收站中的表进行DDL操作是不可行的。

6.小结
  存放在回收站中的表可以使用闪回技术恢复为原始表的状态,这是它的优势。与此同时,回收站中的数据是有其自身的限制的。本文以回收站中表不可DML和DDL操作为例进行了演示。

Good luck.

secooler
11.06.25

-- The End --

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

转载于:http://blog.itpub.net/519536/viewspace-700771/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值