摘要:Oracle 誤刪資料
- 若要回復整個資料庫到當前的某一個時間點,SQL 指令為:
SQL>flashback database to time to_timestamp(xxx);
Oracle 誤刪資料
Oracle 刪除資料有好多種方式
1. delete + commit => SCN | TIEMSTAMP
2. drop
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> 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 還原示範連結
truncate 還原 相較於delete 與 drop 說是來的困難很多
第一作法 : 把先前datafile、 archive log file 備份還原到另外一台備援機上, 在expdp + impdp
第二作法 : 使用 flash database 把整個資料庫回覆到刪除前 (需要db shudown, 較適合使用再 測試機或不重要的db上)
第三作法 : Oracle 它有自己的恢復工具叫 DUL (需 Oracle Support), 網路上也有個強人開發的恢復工具叫: AUL (有限度式的免費) AUL 還原示範連結