是否有辦法像WINDOWS一樣從資源回收桶找回來.
在ORACLE 10G版本,recyclebin預設是啟用的.可以透過
USER_RECYCLEBIN and DBA_RECYCLEBIN還有機會找回來被DROP的TABLE
(下面指令是用DBA的身分執行,如果需要用一般USER請自行改用USER_RECYCLEBIN及相關適當修改)
不過要注意TABLESPACE的使用率,如果TABLESPACE滿到一個程度
資源回收的部分會被PURGE掉,
DESC DBA_RECYCLEBIN看下欄位
| Name | Null? | Type |
| ----------------------------------------- | -------- | ---------------------------- |
| OWNER | NOT NULL | VARCHAR2(30) |
| OBJECT_NAME | NOT NULL | VARCHAR2(30) |
| ORIGINAL_NAME | VARCHAR2(32) | |
| OPERATION | VARCHAR2(9) | |
| TYPE | VARCHAR2(25) | |
| TS_NAME | VARCHAR2(30) | |
| CREATETIME | VARCHAR2(19) | |
| DROPTIME | VARCHAR2(19) | |
| DROPSCN | NUMBER | |
| PARTITION_NAME | VARCHAR2(32) | |
| CAN_UNDROP | VARCHAR2(3) | |
| CAN_PURGE | VARCHAR2(3) | |
| RELATED | NOT NULL | NUMBER |
| BASE_OBJECT | NOT NULL | NUMBER |
| PURGE_OBJECT | NOT NULL | NUMBER |
| SPACE | NUMBER |
查詢我們目前資源回收桶裡有什麼
(也許會有意外的發現,有案例是發現駭客偷完資料後DROP掉的暫存資料)
select OWNER,object_name, original_name, type, can_undrop as "UND", can_purge as "PUR", createtime, droptime
from DBA_recyclebin
可以看到很多資訊,其中object_name為被DROP掉的物件目前在資源回收桶裡的名稱
要看被DROP掉的TABLE資料明細可以下
select * from OWNER."object_name"
(請注意要用double quote ""把object_name包起來,因為名稱中會含有特殊符號)
如果要還原的話,
FLASHBACK TABLE schema.tablename to before drop;
這裡使用的tablename是DBA_recyclebin裡的original_name
太複雜的情境這裡不繼續討論,反正只要資料救得回來
其他東西都可以重建,
如果要清除垃圾桶的話
延伸閱讀
一個國外顧問寫得很詳盡的說明,想用比較進階的就看看吧
Using Oracle's recycle bin
基本上慘劇還是少發生為妙或控制在簡單的局面,不知道您是不是也有同感
沒有留言:
張貼留言