我正在使用Oracle数据库,我对Drop和Purge命令感到有点困惑。事实上,对我来说,两者都做同样的事情。从数据库中删除带有模式的表。这两者之间的主要区别是什么?
答案 0 :(得分:41)
通常情况下,如果表被删除,表将被移动到回收站(从Oracle 10g开始)。但是,如果同时指定了清除修饰符,则表将无法从数据库中删除(完全)。
答案 1 :(得分:6)
Oracle数据库10g引入了一个用于删除表的新功能。当你 删除一个表,数据库不会立即释放与之关联的空间 表。而是,数据库重命名表并将其放在回收站中,它可以在那里 如果你发现了以后,可以使用FLASHBACK TABLE语句恢复 丢失了表格。 如果要立即释放与表关联的空间 您发出DROP TABLE语句,然后包括PURGE子句,如下所示。 DROP TABLE员工PURGE; 仅当您要删除表并释放空间时才指定PURGE 只需一步即可与之相关联。如果指定PURGE,则数据库不指定 将表及其依赖对象放入回收站。 注意:您无法使用PURGE回滚DROP TABLE语句 如果使用PURGE子句删除它,则无法恢复该表。这个 功能在早期版本中不可用。
答案 2 :(得分:3)
asktom文章的链接:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:32543538041420
基本上使用oracle10,所有丢弃的表都会进入回收站,从那里它们可以被取消。通过清除,您基本上可以跳过回收站部件,然后删除表,而无需撤消操作。
答案 3 :(得分:1)
以下语句将删除表并将其放入回收站。
DROP TABLE emp_new;
以下语句将删除表格并将其从回收站中冲出。
DROP TABLE emp_new PURGE;
答案 4 :(得分: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';
答案 5 :(得分:0)
SQL>drop table table_name;
此命令删除名为table_name的表,但在内部将其移动到oracle的回收站(这类似于在Windows OS上使用 Delete 键删除任何文件/文件夹)。
的优点强>:
1.如果需要,我们将能够恢复上面删除的表格
的缺点强>:
1.仍占用一些记忆。
SQL>drop table table_name purge;
此命令从数据库中完全删除表table_name(类似于在Windows操作系统上使用 Shift + 删除键删除任何文件/文件夹)。
利益和缺点将与上述相反。
答案 6 :(得分:-1)
drop table table_name purge;
通过使用此查询发生了什么: - 通常情况下,表被移动到回收站(从Oracle 10g开始),如果它被删除。但仍然占用数据库中的内存,因此为了释放另一个对象的内存,我们可以使用Purge子句。