欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

flashback table恢复数据

程序员文章站 2022-07-14 15:12:41
...

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
-----------
     896684

1.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
-----------
     896697

1.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
-----------
     896744

1.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
-----------
     896761

2 进行恢复

在进行恢复的时候,必须要允许表进行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中的内容保存的足够多。