Oracle資源回收筒(recyclebin)

來源:互聯網
上載者:User
文章目錄
  • 補充:我們來簡單的瞭解下Oracle參數類型

我們都比較熟悉windows中的資源回收筒,檔案刪除後放到資源回收筒裡還可以再複原.Oracle資源回收筒的原理完全一樣,只是實現的細節方面有些差異.另外資源回收筒中只能回收表和相關的對象包括索引、約束、觸發器、巢狀表格、大的二進位對象(LOB)段和LOB索引段.從Orace 10g開始有資源回收筒的功能.

 

1.資源回收筒啟動和關閉

 

資源回收筒預設是開啟的.不過我們可以通過參數recyclebin來關閉和開啟.

如果只是針對每個session可以通過alter session set recyclebin=off; 和 alter session set recyclebin=on;來關閉和開啟

如果是針對所有session可以通過修改系統參數recyclebin來實現,不過這裡要注意10g和11g有點不一樣,它們的參數類型不同

10g可以用:alter system set recyclebin=off; 和alter system set recyclebin=on;來關閉和開啟

11g可以用:alter system set recyclebin=off deferred; 和alter system set recyclebin=on deferred;來關閉和開啟

補充:我們來簡單的瞭解下Oracle參數類型

Oracle參數資訊可以通過視圖v$parameter查看,其中有一列issys_modifiable表示參數類型,有immediate,false,deferred三種,其中false表示是靜態參數,只要當instance重新啟動時才會生效,其他兩種是動態參數,immediate表示修改參數後立即生效,deferred表示修改後要等下一個session才會生效,修改時已經串連的session是不會生效的.在用alter修改參數時如果是false或immediate一般可以不寫,如果是deferred則要寫

10g: select   ISSYS_MODIFIABLE  from v$parameter where name = 'recyclebin';的結果是immediate

11g:  select   ISSYS_MODIFIABLE  from v$parameter where name = 'recyclebin';的結果是deferred

 2.查看資源回收筒內容

 

select * from user_recyclebin;或select * from recyclebin;查看目前使用者所drop的對象(裡面有對象之前的名字和drop之後的名字)

select * from dba_recyclebin;查看所有使用者drop掉的對象

其實當一個對象drop後,並且開啟了資源回收筒功能.它並沒有真正被刪除,實際上只是修改了一下名字,我們用select * from user_objects where type= 'TABLE'還能查到.只是它的名字有點怪,例如BIN$qAUuckGyd3TgQKjAFAFTAg==$0,它的命名規範是BIN$unique_id$version  其中BIN代表RecycleBin, unique_id是資料庫中該對象的唯一標誌,26個字元長度 ,version表示該對象的版本號碼.

 3.還原資源回收筒內容

 

假如有表test被drop,drop後的object_name是BIN$qAUuckGyd3TgQKjAFAFTAg==$0

可以用flashback table "BIN$qAUuckGyd3TgQKjAFAFTAg==$0"  to before drop ;(記得名字加雙引號)

或者flashback table test  to before drop ;來還原.不過假如drop掉一個表test,再建立一個表test,然後再drop.那麼flashback table test  to before drop只能還原最後被drop掉的表test.最先drop掉的表還原時會出錯,因為表名不能重名.所以必須改名flashback table test  to before drop rename to test2

 

4.清空資源回收筒

 

如果一次只清空一個表,可以用PURGE table  test 或PURGE table "BIN$qAUuckGyd3TgQKjAFAFTAg==$0";

如果一次清空所有的可以用PURGE recyclebin 或者PURGE dba_recyclebin

還原時是只能一次還原一個表,不能像清空一樣一次還原所有表

 

5,注意事項

 

如果表是在system資料表空間下面則不能使用資源回收筒的功能,不知道為啥有這限制啊

如果資料表空間快滿時系統會自動的去清空資源回收筒中一部分內容,先清空最早drop的對象

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.