Oracle闪回技术

Oracle闪回技术

 

我们都清楚的知道,当我们数据库中的数据删除或者更新之后,数据很难再还原回来,在没有了解闪回技术之前,就觉得是没办法还原了,这样子会付出很大的代价。

现在我来总结一下闪回技术的启动和操作的步骤。

 

一.不管闪回功能是否开启,我们先记录一下当前时间或者SCN

1select  to_char(sysdate,'YYYY-MM-DD HH24:mi:ss') from dual;----时间

2 select  current_scn from v$database;----SCN

二.我们要事先查一下,看看oracle数据库是否已经启动了闪回功能;

1select flashback_on from V$database;

如果已经开启了闪回功能,如果还没有开启的话,

返回值是FLASHBACK_ON = NO,

那么我们执行以下步骤了:

2alter system set db_recovery_file_dest_size=30G scope=both;

3alter system set db_recovery_file_dest='F:\app\LK'[LK1]   scope=both;

到此,我们得需要改变用户登录,我们的用sys as sysdbacmd里面登录,继续执行下面语句,就可以开启闪回功能了。

4、shutdown immediate

5、startup mount

6、alter database archivelog;

7、alter database flashback on;

8、alter database open;

接下来我们再看看闪回功能开启了没有

9select flashback_on from V$database;(如果成功的话,那么会返回值“FLASHBACK_ON = YES”)

我们再来看看初始的默认参数,就是flashback功能默认时间多少:

10show parameter flashback;

三.执行闪回

在执行返回之前,我们要先开启“行移动功能”:

1ALTER TABLE COMM.STAFF_DICT_TEMP ENABLE ROW MOVEMENT

到此,我们可以使用时间闪回了:

2shutdown immediate

3startup mount

4flashback database to timestamp to_timestamp[LK2] ('2014-03-12 23:46:00','yyyy-mm-dd hh24:mi:ss[LK3] ')

四、到这里数据就已经闪回到更改前的数据了,算是成功了,但是又有一个很大的问题出现了,到现在我们用普通用户登录system normal不进去了,只能用system  sysdbasys as sysdba登录了,如果这样子的话,问题就大了,但是不用担心,解决办法还是有的,看下面:

要清空一次数据库登录方式才可以以normal登录

1shutdown normal

2startup mount;

3alter database open;

4alter database open resetlogs;

5alter database datafile 2 [LK4] offline drop;(这步是在上一步失败的情况下执行的)

6alter database open resetlogs;

7alter database open;

8shutdown normal

9startup mount;

五、到此全部已经成功完成了。


 [LK1]这个是oracle数据库的回收站,我们闪回的时候可以从这里把数据拿出来。

 [LK2]类型要是to_timestamp类型,否则会报错。

 [LK3]时间要是你删除或者更新数据那一刻之前的时间,为了数据更正确,最后在更改数据前几秒钟或者一分钟之内

 [LK4]看上一步返回的是什么错误,有可能是datafile1datafile 2datafile 3

posted @ 2014-03-13 10:45  吕坤  阅读(176)  评论(0编辑  收藏  举报