現象:
啊!我不小心drop掉table了!!
目的:
Windows作業系統裡面有"資源回收筒",防止使用者誤刪資料,但是資料庫往往將table殺掉之後,DBA需要花費極大的成本才能將資料restore回來,是否能徹底解決這項困擾呢?
Oracle 10g 的資料回溯機制(Flashback)將會徹底這個問題!!
如何查詢:
查詢user_recyclebin的資料字典
在SQL*Plus內執行show recyclebin指令
直接查詢Recyclebin Table
Oracle如何處理Recyclebin內的物件:
一般來說,Oracle不會主動清除,除非:
- tablespace
space不夠
- 執行purge指令
- 執行undrop指令
如何清除資源回收筒:
purge table
"recyclebin table name";
purge tablespace
<tablespace_name>;
哪幾種drop不會寫到recyclebin:
drop tablespace
<tablespace_name> including contents;
drop user
<user_name> cascade;
如何復原資源回收桶的物件:
undrop table
<table_name> as <table_name>;
undrop之前,index,trigger以及constrate會回復嗎?
=> 會以recyclebin_name呈現,所以在undrop之前,要先到recyclebin查原始名稱
資料庫 "倒帶":
flashback
database to timestamp(sysdate-1/24);
flashback database
to scn <scn_number>;
總結:
如果你的應用系統背後的資料庫用的是Oracle 10g 版本的話,那恭喜你,你再也不用為了誤刪資料或是table而感到心驚膽跳,但是並不是因為這樣就不用審慎的對待任何一筆與公司有關的交易。
如果你的應用系統背後的資料庫用的不是Oracle 10g 版本的話,趕快將這個新功能告訴你的DBA吧!!
沒有留言:
張貼留言