【转】Oracle回收站(recyclebin)
我們都比較熟悉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的對象
?
?
如果刪除表時候不想放在回收站,徹底刪除 使用 drop table table-name purge
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的【转】Oracle回收站(recyclebin)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 设置Activity样式
- 下一篇: 像素级模仿iPhone!印度国产厂商再推