ITPub博客

首页 > Linux操作系统 > Linux操作系统 > flashback database 使用及注意事项

flashback database 使用及注意事项

原创 Linux操作系统 作者:chai_huipeng 时间:2012-03-21 11:01:42 0 删除 编辑
适用版本:10.2+(9i+可能也适用)

读者阅读前提:
1. 知道flashback
2. 知道oracle 的启动模式和基本系统视图

v$database中的flashback_on
Oracle 在安装后默认状态下flashback database是关闭的,查看flashback database是否开启可通过下面语句查看:
select flashback_on from v$database;
得到的值有两种情况:YES 或者 NO,分别表示开启和关闭。
如果需要打开或关闭,需要在mount状态下使用下面的命令:
alter database flashback on;
或者
alter database flashback off;
与flashback table等基于recycle bin的功能不同,flashback database之所以能够恢复数据库到历史状态,是通过flashback log和redo log来实现,所以要求redo log 必须是archive mode。当在not archive mode下,打开flashback database时,会提示下面的错误:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.   --> 无法创建用来flashback database 的flashback log。
ORA-38707: Media recovery is not enabled.  -->这里的意思不够直白,介质恢复功能关闭,而介质恢复使用的就是redo log,其表达的意思其实就是redo log没有打开。
查看redo log的归档模式,在实例的mount或open状态下,执行:archive log list;
修改redo log的归档模式,在实例的mount状态下,执行:
alter database archivelog;  -->打开归档
alter database noarchivelog;  --> 关闭归档

v$tablespace中的flashback_on
除了在v$database中有flashback_on之外,在v$tablespace中也有flashback_on,且这个值默认为YES,即开启状态。当新建表空间时,flashback_on会默认为YES。它的开启与否会影响flashback log是否会记录此tablespace的变更历史,而拥有从历史上某段时间到当前时间的连续flashback log 和redo log是flashback database的前提。所以,如果在flashback database到历史上某个时间点或SCN时,有tablespace的flashback_on是NO,或在此段时间内曾经是NO,将会导致flashback database失败。
如果需要打开或关闭,需要在mount状态下使用下面的命令:
alter tablespace xxx flashback on;
或者
alter  tablespace xxx  flashback off;
此字段的意义:v$tablespace上的flashback_on的作用有些鸡肋,最好不要随意修改,维持其默认的YES即可。出于数据完整性的考虑,不可能只flashback database中的一个tablespace,所以要么是flashback database,要么是no flashback database。

flashback database使用
flashback database有两种用法:
flashback database to scn xxx;
或者
flashback database to timestamp xxx;
可以将整个database恢复到历史上的某个时间点或SCN(SCN相当于Oracle的内部时钟,与时间的关系是一一对应的,所以可以用来定位时间点)。执行上述命令后,Oracle会通过flashback log和redo log里的记录,将数据库中的数据文件进行“回滚”。恢复完成后,SCN会小于保存在control file和data file中的SCN,所以需要使用resetlogs同步SCN到一个新的值。
flashback database注意事项
flashback database的功能初看似乎挺强大,似乎可以瞬间回到数据库的任意历史点,但其实并非如此。需要注意:
1. 并不是可以回到任意时间点,可以恢复的区间是:数据库有完整flashback log(即所有的tablespace都有flashback log)的最早时间,到当前时间,在此区间中不能出现flashback log 和redo log的中断。
2. 一旦执行了一次flashback database后,必须使用resetlogs来open 数据库,此时flashback log和redo log发生中断,此前的日志全部作废,对介质恢复也有影响。

1.GIF

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

上一篇: TODO
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2012-02-23

  • 博文量
    2
  • 访问量
    2690

最新文章