清除oracle的recyclebin回收站
Oracle10g提供了類似作業系統中的回收站功能。回收站,從原理上來說就是一個資料字典表,放置使用者Drop掉的資料庫物件資訊。當drop table的時候,實際上只是將其重新命名,並將table以及相關聯的物件如index,constraint等放到回收站(RecycleBin)中,後續如果發現drop錯了table,可以使用flashback table命名將回收站中的table還原,這就是Oracle10g的Flashback Drop功能。
1. 啟用/禁用RecycleBin:
透過設定初始化引數recyclebin,可以控制是否啟用回收站功能,預設是開啟的。
SQL> alter system set recyclebin=off;
系統已更改。
SQL> alter system set recyclebin=on;
系統已更改。
SQL> alter session set recyclebin=off;
會話已更改。
SQL> alter session set recyclebin=on;
會話已更改。
2. 檢視回收站:
SQL> SHOW recyclebin;
或者
SQL>select * from recyclebin;
除非擁有sysdba許可權,否則每個使用者只能看到屬於自己的物件。所以,對於使用者來說,好像每個人都擁有自己的回收站。即使使用者有刪除其他schema物件的許可權,也只能在recyclebin中看到屬於自己的物件。
3. 回收站物件的操作:
當一個表被刪除並移動到"回收站"中,它的名字要進行一些轉換。這樣的目的是為了避免同類物件名稱的重複。(這一點和Windows作業系統的回收站不同,Windows中的回收站經過了特殊的處理,作業系統檔案可以重名。)轉換後的名字格式如下:
BIN$unique_id$version其中BIN代表RecycleBin,unique_id是資料庫中該物件的唯一標誌,26個字元長度version表示該物件的版本號。
注意,以下幾種drop不會將相關物件放進RecycleBin:
drop tablespace:會將RecycleBin中所有屬於該tablespace的物件清除
drop user:會將RecycleBin中所有屬於該使用者的物件清除
drop cluster:會將RecycleBin中所有屬於該cluster的成員物件清除
drop type:會將RecycleBin中所有依賴該type的物件清除
l 已經放到回收站裡的表是不能用drop命令刪除的(注意物件名字上的雙引號):
SQL> DROP table "BIN$V3f/oYUITrCEF2cotS5JaA==$0" ;
DROP table "BIN$V3f/oYUITrCEF2cotS5JaA==$0"
*
ERROR at line 1:
ORA-38301: can not perform. DDL/DML over objects in Recycle Bin
如果要清掉該物件,使用purge命令:
SQL> PURGE table "BIN$V3f/oYUITrCEF2cotS5JaA==$0" ;
Table purged.
l 如果直接清空所有的Recycle Bin中的物件:
SQL> PURGE RECYCLEBIN;
Recyclebin purged.
Purge recyclebin可以清除執行該命令的使用者所能看到的所有recyclebin物件。也就是普通使用者能清除屬於自己的物件,而sysdba使用者則能清除所有recyclebin中的物件。
l 恢復表,用回閃表的功能:
SQL> FLASHBACK TABLE table_name TO BEFORE DROP;
Flashback complete.
預設的恢復是第一個被刪除的表。如果要恢復指定的表,可以在FLASHBACK TABLE後面加上指定的RECYCLEBIN引數指定其他的名字:
語句FLASHBACK TABLE [已刪除TABLE名|"RECYCLEBIN中的名字"] TO BEFORE DROP;
但當你在RECYCLEBIN內有2張相同名字的表時候,只有透過"RECYCLEBIN中的名字"來閃回指定的表,用上面方法只閃回第一個被刪除的同名表。
l Purge tablespace tablespace_name可以清除RecycleBin屬於指定tablespace的所有物件。
SQL> purge tablespace users;
表空間已清除。
Purge tablespace tablespace_name user user_name則可以清除Recycle中屬於指定tablespace和指定user的所有物件。
SQL> purge tablespace users user ning;
表空間已清除。
l 清除表時,同時也會清除依賴這張表的約束,如索引。可以指定只清除表相應的約束,如:PURGE INDEX IDX_TEST。
表上的物件如索引、觸發器在表被閃回後是不會被同時閃回的,而是保持了在回收站中名字。一些依賴這張表的程式碼物件如檢視、儲存過程在表被刪除後會失效,在表被閃回後不會被自動重新編譯,而要手工重新編譯他們。相關的資訊被儲存在檢視USER_RECYCLE中。可以用以下語句來獲得這些索引、觸發器物件的原有名稱:
1 SQL> SELECT OBJECT_NAME, ORIGINAL_NAME, TYPE
2 FROM USER_RECYCLEBIN
3 WHERE BASE_OBJECT = (SELECT BASE_OBJECT FROM USER_RECYCLEBIN
4 WHERE ORIGINAL_NAME = 'ABC')
5 AND ORIGINAL_NAME != 'ABC';
OBJECT_NAME ORIGINAL_N TYPE
------------------------------ ---------- --------
BIN$1++ilvsQQ7mfPh2pvont5A==$0 IDX_TEST INDEX
可以用以下方式來恢復索引:
SQL> ALTER INDEX " BIN$1++ilvsQQ7mfPh2pvont5A==$0" RENAME TO IDX_TEST;
一個例外就是點陣圖索引被刪除後是不會被儲存在回收站中的,也無法從上述檢視中查到,需要用其他方式來恢復。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-1762492/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【RECYCLEBIN】Oracle回收站詳解Oracle
- 清除oracle回收站Oracle
- 【recyclebin】徹底禁用 Oracle回收站功能Oracle
- 【Oracle】-【recyclebin,索引】-回收站恢復的索引名稱修改Oracle索引
- Oracle10g的回收站(recyclebin)和自由空間管理Oracle
- Oracle10g的回收站(recyclebin)和自由空間管理(zt)Oracle
- oracle10g 清除回收站中垃圾表Oracle
- Oracle Recyclebin - purgeOracle
- recyclebin in ORACLE 10Oracle
- Oracle10g的recyclebinOracle
- oracle recyclebin詳解Oracle
- Oracle recyclebin介紹Oracle
- oracle recyclebin和flashbackOracle
- oracle10g recyclebinOracle
- recyclebin for oracle 10gOracle 10g
- Oracle10g 的Recyclebin簡介Oracle
- Oracle sys/system使用者下刪除表為什麼沒有被rename 到 recyclebin table(回收站)Oracle
- oracle 回收站Oracle
- oracle—回收站Oracle
- oracle10g recyclebin 詳解Oracle
- How to maintain Oracle10g RecyclebinAIOracle
- Oracle回收站的清理方法Oracle
- oracle回收站的關閉Oracle
- oracle 回收站功能Oracle
- Oracle 回收站清理Oracle
- oracle flashback特性(2.1)--Flashback Table之RECYCLEBINOracle
- 【故障-ORACLE】定時清理dba_recyclebinOracle
- Oracle中的回收站(Recycle Bin)Oracle
- oracle 塊清除Oracle
- Oracle (block clean out) oracle的塊清除OracleBloC
- Oracle回收站機制Oracle
- Oracle回收站介紹Oracle
- 應用oracle flashback--Flashback Table之RECYCLEBINOracle
- Oracle 10G 中的回收站Oracle 10g
- Oracle 10G 中的"回收站"Oracle 10g
- oracle block cleanout塊清除_延遲塊清除OracleBloC
- 【徵文】應用oracle flashback(2.1)--Flashback Table之RECYCLEBINOracle
- oracle回收站,搬運工Oracle