oracle誤drop/update資料恢復測試

junnyblog發表於2009-10-16

本人主要是對drop/update資料後,在允許有時間內進行資料恢復,操作性強,比較實用。不對理論進行講訴。

[@more@]

1、drop表,如何進行恢復
create table etl (id number);
insert into etl values (1);
commit;
drop table etl; 如果drop table etl purge --就不能進行恢復
下面進行表的恢復:
(1)介紹檢視進行恢復:DBA_RECYCLEBIN
SQL> SELECT OBJECT_NAME,ORIGINAL_NAME,CAN_UNDROP,CAN_PURGE FROM DBA_RECYCLEBIN WHERE ORIGINAL_NAME='ETL';

OBJECT_NAME ORIGINAL_NAME CAN CAN
------------------------------ -------------------------------- --- ---
BIN$V0qZnPBKRBiEUAx/MzB8Ww==$0 ETL YES YES

SQL> CREATE TABLE ETL AS SELECT * FROM "BIN$V0qZnPBKRBiEUAx/MzB8Ww==$0";

表已建立。

SQL> SELECT * FROM ETL;

ID
----------
1
恢復完成.

(2) 無法恢復的情況:drop table etl purge ;
SQL> CREATE TABLE ETL2 (NAME VARCHAR2(10));

表已建立。

SQL> INSERT INTO ETL2 VALUES ('TEST');

已建立 1 行。

SQL> COMMIT;

提交完成。

SQL> DROP TABLE ETL2 PURGE;

表已刪除。

SQL> SELECT OBJECT_NAME,ORIGINAL_NAME,CAN_UNDROP,CAN_PURGE FROM DBA_RECYCLEBIN WHERE ORIGINAL_NAME='ETL2';

未選定行

SQL>
2、update 表的恢復

SQL> SELECT SYSDATE FROM DUAL;

SYSDATE
-------------------
2008-11-21 19:45:20

SQL> SELECT * FROM ETL;

ID
----------
1

SQL> UPDATE ETL SET ID=2;

已更新 1 行。

SQL> SELECT * FROM ETL;

ID
----------
2

SQL> COMMIT;

提交完成。

create table test_bak
as
select * from test as of TIMESTAMP to_timestamp('20081126 103435','yyyymmdd hh24miss');

表已建立。

SQL> SELECT * FROM ETL_BAK;

ID
----------
1

SQL>

完成update表的恢復。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22630256/viewspace-1027921/,如需轉載,請註明出處,否則將追究法律責任。

相關文章