绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
【Flashback】回收站中被标记删除的表不可以DML和DDL操作
2020-01-18 15:45:48
  这里体现的是回收站中保存的表本身操作上的局限性。既然表被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 --

分享好友

分享这个小栈给你的朋友们,一起进步吧。

OCM联盟
创建时间:2019-12-27 14:04:54
OCM联盟(OCMU – Oracle Certified Master Union)是一群有着共同理想,共同志向的DBA的家。 ⚠️该小栈仅限ocm成员入驻!审核制! Oracle Certified Master (OCM) -Oracle认证大师,是Oracle认证的别,是对数据库从业人员的技术、知识和操作技能的别的认可。Oracle OCM是解决困难的技术难题和复杂的系统故障的佳Oracle专家人选,也是IT行业衡量IT专家和经理人的高专业程度及经验的基准。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • 侯圣文@secooler
    栈主

小栈成员

查看更多
  • gaokeke123
  • ?
  • 山中老狐狸
  • 飘絮絮絮丶
戳我,来吐槽~