javatgo 发表于 2013-1-26 14:02:17

闪回操作

ORACLE的闪回查询 delete操作后
 as of TIMESTAMP 和as ofSCN
查询该表一分钟前的数据
select * from  abc as ofTIMESTAMP SYSDATE-1/1440;
查询该表一分钟前的数据
select * from  abc as of SCN16014177255;
通过这种方式,我们可以将数据回滚到以前某个状态,比如误删除并且commit后.可以通过闪回方式进行数据的恢复.
比如:
delete  from abc;
commit;
insert into abc select *from  abc as of TIMESTAMPSYSDATE-1/1440;
commit;
2.误删除数据的情况下
FLASHBACK TABLE b to timestampto_timestamp('2007-08-28 11:14:00','yyyy-mm-dd hh24:mi:ss');//我试过,可以
 FLASHBACK TABLE cc
   TO TIMESTAMP (SYSTIMESTAMP -INTERVAL '01'minute);//我也史过可以,而且这种好一点,闪回一分钟以前的数据。
在这种误删除数据的情况下,应该事先激活表的行移动特征,如:
ALTER TABLE emp ENABLE ROW MOVEMENT;
闪回表:drop 操作后
SELECT object_name, original_name FROMuser_recyclebin;
SHOW recyclebin
 desc"BIN$LS3MyjLQRcXgQAB/AQA8Ow==$0"
FLASHBACK TABLE tablename TO BEFOREDROP;
下面是一篇转载的文章:
Oracle Flashback
Oracle FlashbackDatabase特性允许通过SQL语句FlashbackDatabase语句,让数据库前滚到当前的前一个时间点或者SCN,而不需要做时间点的恢复。flashback可以迅速将数据库回到误操作或人为错误的前一个时间点,可减少解决问题所花费的时间。

OS:windows 2000
Oracle:10g
 
跟flashback有关的参数:

开起flashback语法
SQL>alter database flashback on;


查看放flash空间的地方和容量
SQL> show parameter recover;
NAME TYPE VALUE
------------------------------------ -----------------------------------------
db_recovery_file_dest stringD:\oracle\product\10.2.0/flash_recovery_area
db_recovery_file_dest_size big integer 2G
note:(修改大小值,容量大小跟flahsback的时间有关系)
SQL> alter system setdb_recovery_file_dest_size=3G;
System altered

SQL> show parameter db_recovery_file_dest_size;
NAME TYPE VALUE
------------------------------------ -----------------------------------------
db_recovery_file_dest_size big integer 3G
 
页: [1]
查看完整版本: 闪回操作