Oracle 誤刪資料

摘要:Oracle 誤刪資料

 

  • 若要回復整個資料庫到當前的某一個時間點,SQL 指令為:

SQL>flashback database to time to_timestamp(xxx);

 

 

Oracle 誤刪資料 

Oracle 刪除資料有好多種方式
1. delete + commit => SCN | TIEMSTAMP
2. drop
2.1 查詢 Recyclebin  內的 Table

SQL> select OBJECT_NAME,ORIGINAL_NAME,OPERATION from dba_recyclebin;

OBJECT_NAME                                                ORIGINAL_NAME              OPERATION                    DROPTIME
-------------------------------------------                         --------------------                  ---------                        ---------------------------- 
BIN$9x57SsRkSTOYj9JLTeq8PQ==$0                       TW100                          DROP                   2014-07-01:14:54:52

SQL>
可以看到他現在的名子叫 BINXXXXXX ,原本的名子叫TW100


2.2 還原
SQL> FLASHBACK TABLE TW100 TO BEFORE DROP;
Flashback complete.
SQL>
 
或者
SQL> FLASHBACK TABLE "BIN$9x57SsRkSTOYj9JLTeq8PQ==$0" TO BEFORE DROP;
Flashback complete.
 
 
3. truncate
truncate 還原 相較於delete 與 drop 說是來的困難很多

第一作法 : 把先前datafile、 archive log file 備份還原到另外一台備援機上, 在expdp + impdp

第二作法 : 使用 flash database 把整個資料庫回覆到刪除前 (需要db shudown, 較適合使用再 測試機或不重要的db上)

第三作法 : Oracle 它有自己的恢復工具叫 DUL (需 Oracle Support), 網路上也有個強人開發的恢復工具叫: AUL (有限度式的免費) AUL 還原示範連結