全面学习oracle flashback特性(2.2)--Flashback Table之从UNDO中恢复

某些时候,我们要处理的表并不是被意外删除,而是被反复修改过多次,希望能回复到之前的某个时间点,通过前面的学习,你一定会说没问题啊,借助flashback query就可以,没错,flashback query确实可以,但flashback query只是查询出记录,如果想做恢复还需要写出相应的insert或update,也许还需要相当多的where条件做判断,一个不甚,可能恢复的数据就是错误的。老板又没在跟儿前站着,我们没必要在这个时刻用这种方式展示我们娴熟的指法,因此,我们需要更高效更严谨更简便的方式:flashback table tbname to scn/timestamp,助你达成梦想,详情请咨询,o错了,应该是详情请接着往下看。

[@more@]

Scn和timestamp的用法通过前面flashback query的学习大家应该都比较熟了,flashback table中指定scn或timestamp的用法与上相同,举个例子吧:

有数据如下:

JSSWEB> select *from jss_tb1;

ID VL

---------- --------------------

6 F

7 G

8 H

9 I

11 K

12 L

13 M

14 N

15 O

10 J

记录下当前系统scn(如果不知道确切的scn,恢复时只能通过时间,但正如前文中讲到的,时间并不精确,如果通过指定timestamp恢复的话,需要你清楚了解所做的操作大概是在什么时间)

JSSWEB> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER

------------------------

593480

我们对该表做些操作:

JSSWEB> update jss_tb1 set id=id+100 where id>10;

已更新5行。

JSSWEB> insert into jss_tb1 values (21,'Z');

已创建 1 行。

JSSWEB> delete jss_tb1 where id=8;

已删除 1 行。

JSSWEB> commit;

提交完成。

JSSWEB> select *from jss_tb1;

ID VL

---------- --------------------

21 Z

6 F

7 G

9 I

111 K

112 L

113 M

114 N

115 O

10 J

已选择10行。

这些都属于常规操作,如果最终发现这些操作都属于误操作,需要恢复回表最初的形式,借助flashback query当然可以实现:

JSSWEB> select *from jss_tb1 as of scn 593480;

ID VL

---------- --------------------

6 F

7 G

8 H

9 I

11 K

12 L

13 M

14 N

15 O

10 J

已选择10行。

查询能够写出来,就一定能将表更新回去,不过既使是针对我们测试时所做过的简单操作(添加、删除、修改),更新的语句就已经需要写的很复杂了,因为我们需要分别判断添加、删除、修改过的记录。

幸好,我们还有flashback table,因此我们只需要指定一个scn或timestamp即可。

JSSWEB> flashback table jss_tb1 to scn 593480;

闪回完成。

JSSWEB> select *from jss_tb1;

ID VL

---------- --------------------

6 F

7 G

8 H

9 I

11 K

12 L

13 M

14 N

15 O

10 J

已选择10行。

所有记录均已回复到指定scn时的状态。

======================================

查看之前的连载:

(2.1)--Flashback Table之从RECYCLEBIN恢复

(1.5)--闪回查询之制约因素

(1.4)--闪回查询之Transaction query

(1.3)--闪回查询之Versions between

(1.2)--闪回查询之As of scn

(1.1)--闪回查询之As of timestamp

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7607759/viewspace-1006719/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7607759/viewspace-1006719/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值