oracle误drop/update操作后的数据恢复测试
1、drop表,如何进行恢复
createtableetl(idnumber); insertintoetlvalues(1); commit; droptableetl;
如果droptableetlpurge--就不能进行恢复
下面进行表的恢复:
(1)介绍视图进行恢复:DBA_RECYCLEBIN
SQL>SELECTOBJECT_NAME,ORIGINAL_NAME,CAN_UNDROP,CAN_PURGEFROMDBA_RECYCLEBINWHEREORIGINAL_NAME='ETL';
OBJECT_NAMEORIGINAL_NAMECANCAN
--------------------------------------------------------------------
BIN$V0qZnPBKRBiEUAx/MzB8Ww==$0ETLYESYES
SQL>CREATETABLEETLASSELECT*FROM"BIN$V0qZnPBKRBiEUAx/MzB8Ww==$0";
表已创建。
SQL>SELECT*FROMETL;
ID
----------
1
恢复完成.
(2)无法恢复的情况:droptableetlpurge;
SQL>CREATETABLEETL2(NAMEVARCHAR2(10));
表已创建。
SQL>INSERTINTOETL2VALUES('TEST');
已创建1行。
SQL>COMMIT;
提交完成。
SQL>DROPTABLEETL2PURGE;
表已删除。
SQL>SELECTOBJECT_NAME,ORIGINAL_NAME,CAN_UNDROP,CAN_PURGEFROMDBA_RECYCLEBINWHEREORIGINAL_NAME='ETL2';
未选定行
SQL>
2、update表的恢复
SQL>SELECTSYSDATEFROMDUAL;
SYSDATE
-------------------
2008-11-2119:45:20
SQL>SELECT*FROMETL;
ID
----------
1
SQL>UPDATEETLSETID=2;
已更新1行。
SQL>SELECT*FROMETL;
ID
----------
2
SQL>COMMIT;
提交完成。
createtabletest_bak
as
select*fromtestasofTIMESTAMPto_timestamp('20081126103435','yyyymmddhh24miss');
表已创建。
SQL>SELECT*FROMETL_BAK;
ID
----------
1
SQL>
完成update表的恢复。