本篇内容介绍了“怎么删除表和Oracle的回收站”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
一、Oracle的Drop Table语句
首先,我们来看一下Oracle Drop Table的语法格式。

解释一下里面的参数:
二、闪回删除:Flashback Drop
使用闪回删除功能,可以撤消 DROP TABLE 语句产生的影响,而不需要求助于传统时间点恢复。这是由回收站实现的,通过 DBA_RECYCLEBIN 视图可查询回收站。
1 2 | conn / as sysdba
select value from v $parameter where name= 'recyclebin' ;
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 使用scott用户登录
SQL> conn scott /tiger
Connected.
查看当前用户下的表
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
-------------------- ------- ----------
BONUS TABLE
DEPT TABLE
EMP TABLE
EMP1 TABLE
SALGRADE TABLE
删除一张表
SQL> drop table emp1;
Table dropped.
查看当前用户下的表
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
-------------------- ------- ----------
BIN$opkhRg3T0MPgVaUg TABLE
q /kbkw ==$0
BONUS TABLE
DEPT TABLE
EMP TABLE
SALGRADE TABLE
|
1 2 3 4 5 | 下面的方式是错误的:
select * from BIN$opkhRg3T0MPgVaUgq /kbkw ==$0;
需要加上双引号:
select * from "BIN$opkhRg3T0MPgVaUgq/kbkw==$0" ;
|

在执行闪回表操作期间,数据库获取闪回列表中所有指定的报表独立DML锁。当正在恢复到之前状态时,这些锁阻止对表的任何操作。闪回表操作在单个事物中执行,不管闪回表中指定表的数量。要么所有的表都恢复到早期状态,要么都没恢复。如果任何表的闪回表操作失败,那么整个语句都失败。闪回操作完成时,表中的数据与表之前的时间点一直。但是,FLASHBACK
TABLE到SCN或时间戳不保存rowid,FLASHBACK TABLE TO BEFORE
DROP不能恢复引用约束。数据库不能恢复与表关联的早期结构的统计信息。表当前的索引是恢复,并反映还原点表的状态。如果该索引在还原点不存在,数据更新索引里来反映还原点表的状态。然而,如果索引是在当前时间和还原点之间被删除,是不能恢复。
1 2 3 4 | flashback table emp1 to before drop;
也可以通过回收站中的名字执行闪回:
flashback table “BIN$opkhRg3T0MPgVaUgq /kbkw ==$0” to before drop;
|
“怎么删除表和Oracle的回收站”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注天达云网站,小编将为大家输出更多高质量的实用文章!