Oracle 中 Drop 和 Drop Purge 的区别

问题描述 投票:0回答:8

我正在使用 Oracle 数据库,我对删除和清除命令有点困惑。事实上对我来说两者都做同样的事情。从数据库中删除具有架构的表。这两者之间的主要区别是什么?

  1. 删除表表名;
  2. 删除表表名清除;
sql oracle oracle10g
8个回答
50
投票

通常,如果表被删除,则会将其移至回收站(从 Oracle 10g 开始)。但是,如果还指定了清除修饰符,则该表将从数据库中(完全)不可恢复地删除。


7
投票

Oracle 数据库 10g 引入了删除表的新功能。当你 删除一个表后,数据库不会立即释放与该表关联的空间 桌子。相反,数据库会重命名该表并将其放置在回收站中,这样它就可以 如果您发现您稍后可以使用 FLASHBACK TABLE 语句恢复 错误地删除了该表。 如果想立即释放当时与表关联的空间 您发出 DROP TABLE 语句,然后包含 PURGE 子句,如下所示。 删除表中的员工并进行清除; 仅当您要删除表并释放空间时才指定 PURGE 只需一步即可与其关联。如果指定 PURGE,则数据库不会 将表及其依赖对象放入回收站。 注意:您无法使用 PURGE 回滚 DROP TABLE 语句 子句,并且如果使用 PURGE 子句删除表,则无法恢复该表。这 早期版本中不提供该功能。


4
投票

asktom 文章链接:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:32543538041420

基本上在oracle10中,所有删除的表都会进入回收站,从那里可以取消删除。通过清除,您基本上可以跳过回收站部分,并且可以删除表格,而没有撤消操作的选项。


1
投票
SQL>drop table table_name;

此命令删除名为table_name的表,但在内部它被移动到oracle的回收站(这与Windows操作系统上使用Delete键删除任何文件/文件夹类似)。
好处
1. 如果需要,我们将能够恢复上面删除的表。
缺点
1.仍然占用一定的内存。

SQL>drop table table_name purge;

此命令将从数据库中完全删除表 table_name (类似于在 Windows 操作系统上使用 Shift + Delete 键删除任何文件/文件夹)。

优点和缺点与上述相反。


1
投票

下面的语句将删除表并将其放入回收站。

删除表 emp_new;

下面的语句将删除该表并将其从回收站中清除。

删除表 emp_new PURGE;


1
投票

从@Randy 评论中可以清楚地看出,只是补充一下:

(1)删除表表名:

没有

purge
,表可以在RECYCLEBIN或USER_RECYCLEBIN中;可以使用命令
FLASHBACK
恢复。这类似于我们在 Windows 桌面上删除的文件,这些文件会移至回收站,并且可以恢复回来。

(2) 删除表表名清除:

如果

Drop
Purge
一起给出,其表空间将被释放且无法恢复。 (就像桌面上的Shift+Delete)

以下示例给出实际示例:

create table test_client (val_cli integer, status varchar2(10));
drop table test_client ;

select tablespace_name from all_tables where owner = 'test' and table_name = 'TEST_CLIENT';

SELECT * FROM RECYCLEBIN where ORIGINAL_NAME='TEST_CLIENT';

SELECT * FROM USER_RECYCLEBIN where ORIGINAL_NAME='TEST_CLIENT';

FLASHBACK TABLE test_client  TO BEFORE DROP;

select tablespace_name from all_tables where owner = 'test' and table_name = 'TEST_CLIENT';

drop table test_client purge;

select tablespace_name from all_tables where owner = 'test' and table_name = 'TEST_CLIENT';

0
投票

如果您不使用回收站,或者知道它存在,则使用 PURGE 选项的替代方法是关闭正在删除表的会话的回收站。

更改会话设置回收站 = 关闭;


-1
投票

删除表table_name清除;

通过使用此查询发生了什么:- 通常,如果表被删除,它会被移入回收站(从 Oracle 10g 开始)。但仍然占用数据库中的内存,因此要释放另一个对象的内存,我们可以使用 Purge 子句。

© www.soinside.com 2019 - 2024. All rights reserved.