189 8069 5689

怎么删除表和Oracle的回收站

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

海勃湾网站建设公司创新互联,海勃湾网站设计制作,有大型网站制作公司丰富经验。已为海勃湾近千家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的海勃湾做网站的公司定做!

一、Oracle的Drop Table语句

首先,我们来看一下Oracle Drop Table的语法格式。

怎么删除表和Oracle的回收站

 解释一下里面的参数:

1
schema
  • Schema表示方案名称,这里可以理解为用户名,缺省为当前用户下的表。比如,要删除scott用户下的emp表,drop table scott.emp

1
purge
  • purge可选项,如果开启了回收站(oracle 10g以后,回收站默认是开启的)功能,不带purge选项,表示删除的表放进回收站,空间不回收 。使用flashbask可以闪回该表。带purge选项,则表示将表删除,释放空间。

1
cascade constraints
  • 可选项,如果有其它表关联到要删除的表的主键列或唯一键列(要删除的表是主表(父表),从表(子表)有外键关联到这张表),那么,直接用drop table会报错,这时候如果想要强制删除这张表,就需要加上cascade constraints选项。

二、闪回删除:Flashback Drop

使用闪回删除功能,可以撤消 DROP TABLE 语句产生的影响,而不需要求助于传统时间点恢复。这是由回收站实现的,通过 DBA_RECYCLEBIN 视图可查询回收站。

  • 查看当前数据库的回收站功能是否开启

1
2
conn / as sysdba
select value from v$parameter where name='recyclebin';

怎么删除表和Oracle的回收站 

  •  执行drop table语句

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

怎么删除表和Oracle的回收站 

  • 通过回收站中的对象名称查询表的数据 

1
2
3
4
5
下面的方式是错误的:
select * from BIN$opkhRg3T0MPgVaUgq/kbkw==$0;
 
需要加上双引号:
select * from "BIN$opkhRg3T0MPgVaUgq/kbkw==$0";

怎么删除表和Oracle的回收站 

  • 查看回收站 

1
show recyclebin;

怎么删除表和Oracle的回收站 

  • flashback table的语法格式

怎么删除表和Oracle的回收站

 在执行闪回表操作期间,数据库获取闪回列表中所有指定的报表独立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的回收站 

  •  清空回收站

1
purge recyclebin;

“怎么删除表和Oracle的回收站”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


文章名称:怎么删除表和Oracle的回收站
标题网址:http://cdxtjz.cn/article/jeeihs.html

其他资讯