Oracle技術分享 oracle 回收站recyclebin相關
1. 查看是否開啟回收站功能。
SQL> show parameter recyclebin;
NAME TYPE VALUE
------------------------------------ ----------------------?------------------------------
recyclebin string on
2. oracle的recyclebin功能:當drop 表時而不指定【purge】,"drop table TABLENAME;"時;系統(tǒng)只是將這個表重命名為BIN$開頭的名稱,
并在數據字典中修改了相關數據,表所占用的物理空間并沒有真正的回收,此時所占用的空間還是原來的表空間,當表空間不夠用時,ORACLE會跟據DROPSCN#自動進行逐個清理回收站中對像所占用的空間。默認開啟。
需要注意一種情況,對像所在的表空間要有足夠的空間,不然就算drop掉經過recyclebin由于空間不足oracle會自動刪除的!
3.將recyclebin中的對象還原
SQL> flashback table TABLENAME to before drop ;
表名可以是回收站系統(tǒng)的
dba_recyclebin.object_name也可以是dba_recyclebin.original_name
此時存在一種情況,如果已經用備份的DDL語句重建了一個新的表,這個時候再用此命令還原顯然會報錯,這個時候只能還原成一個別名,
如果還原恢復時,原來的表名已經使用或者表結構已經創(chuàng)建,那么就需要將recyclebin中的表恢復為別名,如下
SQL> flashback table TABLENAME to before drop rename to TABLENAME_old;
再將數據還原到對應的新表
SQL> insert into TABLENAME select * from TABLENAME_old t;
注意:如果將表drop掉,那么索引也被drop掉了,從recyclebin中只是恢復了表的數據,所以還要重建下表上的索引,約束。
4.回收站recyclebin 查看
SQL> show recyclebin;
SQL> select * from dba_recyclebin;
SQL> select * from user_recyclebin;
