请教:RMAN备份原理的一个问题

本帖最后由 kevin.zhang 于 2010-12-16 18:11 编辑

rman备份开始于SCN 10000,结束于SCN 20000。在此过程中:

在SCN为15000的时候,一个尚未被RMAN备份到的数据块A发生了改变并写回datafile,这之后,在SCN为18000的时候,此数据块被RMAN备份。

那么我想问:rman是如何做到可以从SCN 10000开始恢复数据库的(譬如recover database until scn 12000)?对于已经被提交修改并写回磁盘的数据块A,RMAN是如何操作保证其可以'穿越'回修改之前的?

oracle对于重做日至的操作永远是前滚,没有回溯 ,不是吗?
标签: 暂无标签
kevin.zhang

写了 32 篇文章,拥有财富 308,被 10 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

P3 | 发表于 2010-12-17 15:42:31
rman的备份中包含了每个数据文件在备份时的scn。在执行恢复数据库时通常会指定until time或者scn,rman会根据这个时间或scn搜寻备份中的数据文件的scn,会将小于这个时间或scn的数据文件进行恢复。
楼主所说的提交修改写回磁盘的数据块A的问题,还是备份的scn。假设在10:00开始备份,10:05插入数据并提交,10:10备份完成。现在我只想恢复到10:02这一时刻,只需要找到10:02之前的scn就可以恢复了。10:05时插入的数据肯定不会在恢复的数据中。
回复

使用道具

P6 | 发表于 2010-12-19 17:29:23
1、数据块的scn取决于这个数据块什么时候被修改,而不是什么时候写回磁盘。
2、我们恢复的时候,都是使用旧的数据文件,然后进行前滚,这个数据文件里面的所有数据块的scn都是10000以前的,只有这样才能进行前滚。
3、你的例子中,数据文件不能前滚到12000,必须是15000以后(前提是后足够的日志)。
回复

使用道具

P5 | 发表于 2012-12-15 19:59:00
老鸟就是老鸟,不完全恢复也要旧的数据文件+后面的日志。
回复

使用道具

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈