Oracle Purge和drop的區別

jopen 12年前發布 | 1K 次閱讀 eCromedos

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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!