Heim  >  Artikel  >  Datenbank  >  Oracle Purge和drop的区别

Oracle Purge和drop的区别

WBOY
WBOYOriginal
2016-06-07 17:10:221078Durchsuche

Oracle 10g提供的flashback drop 新特性为了加快用户错误操作的恢复,Oracle10g提供了flashback drop的功能。而在以前的版本中,

Purge和drop的区别:

Oracle 10g提供的flashback drop 新特性为了加快用户错误操作的恢复,Oracle10g提供了flashback drop的功能。而在以前的版本中,除了不完全恢复,通常没有一个好的解决办法。

Oracle 10g的flashback drop功能,允许你从当前数据库中恢复一个被drop了的对象,在执行drop操作时,现在Oracle不是真正删除它,而是将该对象自动将放入回收站。对于一个对象的删除,其实仅仅就是简单的重令名操作。

所谓的回收站,是一个虚拟的容器,,用于存放所有被删除的对象。在回收站中,被删除的对象将占用创建时的同样的空间,你甚至还可以对已经删除的表查询,也可以利用flashback功能来恢复它,这个就是flashback drop功能。

回收站内的相关信息可以从recyclebin/user_recyclebin/dba_recyclebin等视图中获取,或者通过SQL*Plus的show recyclebin 命令查看。

 

C:\>sqlplus /nolog

SQL*Plus: Release 10.1.0.2.0 - Production on 星期三 6月 1 10:09:32 2005

Copyright (c) 1982, 2004, Oracle.  All rights reserved.

SQL> conn tiger/tiger@xe

已连接。

SQL> select count(*) from goodsinfo1;

  COUNT(*)

----------

     38997

SQL> drop table goodsinfo1;

表已删除。

SQL> commit;

提交完成。

SQL> select count(*) from goodsinfo1;

select count(*) from goodsinfo1

                     *

第 1 行出现错误:

ORA-00942: table or view does not exist

 

啊!天啊!我删错了表,怎么办好呢?啊!将数据库闪回到刚才删除表前的时间就可以啦。

不行!那其它的操作也会一齐闪回。现在可以用flashback drop的功能了。

 

SQL> show recyclebin;

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME

---------------- ------------------------------ ------------ -------------------

GOODSINFO1       BIN$RFG58GsfRheKlVKnWw8KKQ==$0 TABLE        2005-06-01:10:11:03

 

SQL> FLASHBACK TABLE goodsinfo1 TO BEFORE DROP;

 

闪回完成。

 

SQL> select count(*) from goodsinfo1;

  COUNT(*)

----------

     38997

 

看看已删除的表回来了。真的谢天谢地啊!

 

SQL> show recyclebin;

 

如果想要彻底清除这些对象,可以使用Purge命令,如:

SQL> select count(*) from goodsinfo2;

  COUNT(*)

----------

     38997

SQL> drop table goodsinfo2;

表已删除。

SQL> commit;

提交完成。

SQL> show recyclebin;

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME

---------------- ------------------------------ ------------ -------------------

GOODSINFO2       BIN$BgSuEWMOSLOGZPcIc97O8w==$0 TABLE        2005-06-01:10:13:18

SQL> purge table goodsinfo2;

表已清除。

SQL> show recyclebin;

SQL>

使用 purge recyclebin可以清除回收站中的所有对象。

类似的我们可以通过purge user_recyclebin或者是purge dba_recyclebin来清除不同的回收站对象。

通过PURGE TABLESPACE TSNAME,PURGE TABLESPACE TSNAME USER USERNAME命令来选择清除回收站。

ps:用户drop后不进recycle bin,所以不用purge

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn