oracle flashback database,flashback database 使用及注意事项

适用版本: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.--&gt 无法创建用来flashback database 的flashback log。

ORA-38707: Media recovery is not enabled.--&gt这里的意思不够直白,介质恢复功能关闭,而介质恢复使用的就是redo log,其表达的意思其实就是redo log没有打开。

查看redo log的归档模式,在实例的mount或open状态下,执行:archive log list;

修改redo log的归档模式,在实例的mount状态下,执行:

alter database archivelog;  --&gt打开归档

alter database noarchivelog;  --&gt 关闭归档

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到一个新的值。

594bc5a04999e1d679708fc8ffe52960.gif

flashback database注意事项

flashback database的功能初看似乎挺强大,似乎可以瞬间回到数据库的任意历史点,但其实并非如此。需要注意:

1. 并不是可以回到任意时间点,可以恢复的区间是:数据库有完整flashback log(即所有的tablespace都有flashback log)的最早时间,到当前时间,在此区间中不能出现flashback log 和redo log的中断。

2. 一旦执行了一次flashback database后,必须使用resetlogs来open 数据库,此时flashback log和redo log发生中断,此前的日志全部作废,对介质恢复也有影响。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值