2012年5月22日 星期二

Oracle 10g 的資料回溯機制


現象:
!我不小心droptable!!

目的:
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!!

沒有留言:

張貼留言