oracle 数据表和数据行的恢复

操作笔记:

create table temp_update_doc
(
       docId varchar2(60) not null,
       num varchar2(16) not null
)


SELECT * FROM   esns.temp_update_doc   

alter table esns.temp_update_doc  drop (num);

delete from esns.temp_update_doc where docid='2222'

drop table esns.temp_update_doc


--从回收站恢复被删除的表信息
1、使用drop table删除的表,可以在回收站中查询到
 
 SQL>  select object_name,original_name,type from user_recyclebin;
 
2、恢复drop table删除的表(表放在回收站中会以BIN$开头)
 
 SQL>  flashback table "BIN$*******" to before drop; 或者flashback table esns.temp_update_doc to before drop;

--从回收站恢复被删除的数据行(已经比较)信息
1.需要先开启行移动的功能

alter table esns.temp_update_doc enable row movement;

2.按照时间恢复数据,指定时间之前的数据

flashback table esns.temp_update_doc to timestamp to_timestamp('2012-10-19 10:47:00',' yyyy-mm-dd  hh24:mi:ss');

3.关闭行移动功能
alter table esns.temp_update_doc disable row movement;

--实例如下:

SQL> select * from esns.temp_update_doc;
 
DOCID
------------------------------------------------------------
444
 
SQL> drop table esns.temp_update_doc;
 
Table dropped
 
SQL> select * from esns.temp_update_doc;
 
select * from esns.temp_update_doc
 
ORA-00942: 表或视图不存在
 
SQL> select object_name,original_name,type from user_recyclebin;
 
OBJECT_NAME                    ORIGINAL_NAME                    TYPE
------------------------------ -------------------------------- -------------------------
BIN$xyRCrPvsTOuSCqOkyD80/g==$0 GRADE                            TABLE
BIN$cektyuQqRjacZ7/QeVMJpw==$0 SYS_C005742                      INDEX
BIN$g3GL4SE7TquJW69BIty+LA==$0 R_DOCUMENT_READ                  TABLE
BIN$kkbpYLg3Rb2yngWIxIrjEg==$0 TEMP_UPDATE_DOC                  TABLE
 
4 rows selected
 
SQL> flashback table esns.temp_update_doc to before drop;
 
Done
 
SQL> select * from esns.temp_update_doc;
 
DOCID
------------------------------------------------------------
444
 
SQL> delete from esns.temp_update_doc where docid = '444';
 
1 row deleted
 
SQL> select * from esns.temp_update_doc ;
 
DOCID
------------------------------------------------------------
 
SQL> flashback table esns.temp_update_doc to timestamp to_timestamp('2012-10-19 11:01:00',' yyyy-mm-dd  hh24:mi:ss');
 
Done
 
SQL> select * from esns.temp_update_doc;
 
DOCID
------------------------------------------------------------
444
 
SQL> 

  

猜你喜欢

转载自raozhiyong11.iteye.com/blog/1701473
今日推荐