flashback table恢复数据
flashback table恢复数据
flashback table主要是是用undo 表空间的内容,进行对数据修改的回退操作
语法如下:
根据scn号来进行回退
SQL> flashback table kel.t1 to scn 896744;根据时间来进行回退
SQL> flashback table kel.t1 to timestamp to_timestamp('2014-07-28 00:18:00','yyyy-mm-dd hh24:mi:ss');1 准备测试数据
1.1 得到第一个修改的scn点
SQL> insert into t1 values (1,'kel');
1 row created.
SQL> commit;
Commit complete.
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
     8966841.2 得到第二个修改的scn点
SQL> insert into kel.t1 values (2,'kel2');
1 row created.
SQL> commit;
Commit complete.
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
     8966971.3 得到第三个修改的scn点
SQL> insert into kel.t1 values (3,'kel3');
1 row created.
SQL> commit;
Commit complete.
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
     8967441.4 得到最后的scn点
SQL> delete from kel.t1 where id =2;
1 row deleted.
SQL> commit;
Commit complete.
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
     8967612 进行恢复
在进行恢复的时候,必须要允许表进行row move ment
SQL> alter table kel.t1 enable row movement; Table altered.
2.1 第一次恢复
SQL> flashback table kel.t1 to scn 896684; Flashback complete. SQL> select * from kel.t1; ID NAME ---------- -------------------- 1 kel
2.2 第二次恢复
SQL> flashback table kel.t1 to scn 896697; Flashback complete. SQL> select * from kel.t1; ID NAME ---------- -------------------- 1 kel 2 kel2
2.3 第三次恢复
SQL> flashback table kel.t1 to scn 896744; Flashback complete. SQL> select * from kel.t1; ID NAME ---------- -------------------- 1 kel 2 kel2 3 kel3
3 总结
在进行数据恢复的时候,不可能知道准确的SCN点或者时间点,只能进行猜测数据时间或者是scn来进行恢复。
flashback table 的功能依赖于UNDO表空间中的内容,可以反复的进行flashback table,只要UNDO中的内容保存的足够多。
   
    for linux and python
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号