CSDN博客

img snowhite2000

几个概念问题- about RMAN backup

发表于2004/7/13 23:01:00  1928人阅读

几个概念问题,请赐教

看书看的一头雾水,都搞晕搞混淆掉了,特此求教。

1。 什么情况下需要重做控制文件,比如说,如果我无意中删除了一个数据文件,并且没有备份,而这个数据文件时空的,没有内容,那么,重做控制文件时,系统是否就会读取系统视图,把当前正常状态的文件重新纪录,从而使数据库可以恢复时用呢。

2。在做数据库备份(有关RMAN的)时,看到关于什么0级备份、一级备份等等的,什么是0级备份、一级备份,好像还有类似的词语,比如,在看增量备份(还是RMAN那部分讲的)时,说什么“同一级别、更低级别”等等,这是什么意思呢?

3。用EXP做增量备份、累计备份和RMAN当中讲的这个增量备份的概念有什么联系或区别么?


作者:snowhite2000    时间:02-04-06 06:53

看到你留给我的PM,我想在论坛上回答你的问题比较好。

1。 什么情况下需要重做控制文件,比如说,如果我无意中删除了一个数据文件,并且没有备份,而这个数据文件时空的,没有内容,那么,重做控制文件时,系统是否就会读取系统视图,把当前正常状态的文件重新纪录,从而使数据库可以恢复时用呢。

看到你的这个问题,白雪红尘一直就在拼命的想,曾经是重新建立过control file一次的,那次是因为要修改database name。

什么样的情况需要重新建立control file 呢:

1. database 所有的control files 全部丢失或损坏(这好像是不太可能,起码我没有碰到过丢失或损坏的情形)

2. 你需要改变一些建立database 的时候就定义好的parameter,比如
maxdatafiles, maxlogfiles, maxloghistory 之类的。

3. 想白雪那样,没有事情做偏偏想去改 database name 或者你要改全部的datafiles, logfiles 的 location,又偏偏想用recreate control file 来完成,比如你把一个database 克隆到另一个同样操作系统的机器,那个系统没有你当前的datafile 所在驱动碟。(例如,你在A系统上datafiles 全部在F drive, 你克隆到B系统,只有C drive 了)。当然这种情况你可以用其他方法完成,比方export/import。如果你愿意玩一下recreate control file 的游戏也可以。不过如果有read only 的tablespaces 这个游戏可不怎么好玩。虽然解决的方法也很简单。

4. 差点忘了,如果你的database 生病到你要Oracle support 帮你的忙,如果他让你重建control file,你大概就没有的选了。

其他的情形我还没有想到。你问题中说的情形,自不必通过recreate control file 来实现。

白雪红尘


作者:snowhite2000    时间:02-04-06 07:02

2。在做数据库备份(有关RMAN的)时,看到关于什么0级备份、一级备份等等的,什么是0级备份、一级备份,好像还有类似的词语,比如,在看增量备份(还是RMAN那部分讲的)时,说什么“同一级别、更低级别”等等,这是什么意思呢?

关于这个问题,我想我首先需要解释什么是RMAN 的 differential incremental backup 和 Cumulative Incremental backup.

Differential incremental backup: 是指对最近一次同一级别或更低级别的backup后所有变化过的blocks 进行backup. (我在学你问题中的话)。

Cumulative Incremental backup: 是指对最近一次同一级别减一级或更低级别的backup后所有变化过的blocks 进行backup.

关于备份的级别,只有 Level 0 的incremental backup 是一个基础的backup,是一次full backup。 其他 level 的数字则是相对的,没有固定的要求。

举个例子出来:
differential incremental backup
周日:level 0
周一:level 5
周二:Level 5
周三:level 3
解释为:周日是全备份,周一对从周日备份后有变化的blocks进行备份,对于周二来讲,最近一次同级或低级的备份是周一(都是level 5),所以是对周一备份后有变化的blocks进行备份;周三是level 3,最近一次同级或更低的备份是周日的level 0,所以是对从周日备份后有变化的blocks进行备份。如果把level 5 换成level 2, level 3 换成level 1, 结果是相同的。
Cumulative Incremental Backup
周日:level 0
周一:level 5
周二:Level 5
周三:level 3
周四:level 5
解释为:周日是全备份,周一对从周日备份后有变化的blocks进行备份,对于周二来讲,最近一次同级 - 1 或低级的备份是周日(level 5 - 1 是 level 4 或更低),所以还是对周日备份后有变化的blocks进行备份;周三是level 3,最近一次同级 - 1 或更低的备份是周日的level 0,所以是对从周日备份后有变化的blocks进行备份。而周四则是对周三备份之后的有变化的blocks进行备份,因为周三是level 3,低于 level 5 - 1。如果把level 5 换成level 2, level 3 换成level 1, 结果是相同的。


作者:weishouqun    时间:02-04-10 16:02

to 白雪红尘
请教
level 3的脚本怎么写?
我怎样让新建的level 3是基于level 0?
我在做增量备份时发现 level 3 提示找不到数据文件1的父备份或副本
然后生成的备份文件很大。好象不是level 3


作者:weishouqun    时间:02-04-10 16:13

我的脚本是这样写的
create script level0bak
{allocate channel d1 type disk;
backup incremental level 0
format 'd:/dbbak/a/df%s_%p' filesperset 5
(database include current controlfile);
release channel d1;
}
create script level1bak
{allocate channel d1 type disk;
backup incremental level 1
format 'd:/dbbak/a/df%s_%p' filesperset 5
(database include current controlfile);
release channel d1;
}
执行level 1时提示找不到数据文件1的父备份或副本
找不到数据文件2的父备份或副本
.
.
.
总之找不到所有数据文件的父备份或副本

请白雪红尘 指点一二


作者:lunar2000    时间:02-04-11 15:43

quote:
最初由 weishouqun 发布
我的脚本是这样写的
create script level0bak
{allocate channel d1 type disk;
backup incremental level 0
format 'd:/dbbak/a/df%s_%p' filesperset 5
(database include current controlfile);
release channel d1;
}
create script level1bak
{allocate channel d1 type disk;
backup incremental level 1
format 'd:/dbbak/a/df%s_%p' filesperset 5
(database include current controlfile);
release channel d1;
}
执行level 1时提示找不到数据文件1的父备份或副本
找不到数据文件2的父备份或副本
.
.
.
总之找不到所有数据文件的父备份或副本

请白雪红尘 指点一二




我来试试:
create script level0bak
{allocate channel d1 type disk;
backup incremental level 0
format 'd:/dbbak/a/df_full_%s_%p' filesperset 5
(database include current controlfile);
release channel d1;
}

create script level2bak
{allocate channel d1 type disk;
backup incremental level 2
format 'd:/dbbak/a/df_level2_%s_%p' filesperset 5
(database include current controlfile);
release channel d1;
}

create script level1bak
{allocate channel d1 type disk;
backup incremental level 1
format 'd:/dbbak/a/df_level1_%s_%p' filesperset 5
(database include current controlfile);
release channel d1;
}


作者:snowhite2000    时间:02-04-12 03:06

你在执行level 1 之前总有执行过一次level 0 吧。如果你没有执行过level 0 就没有办法执行level 1,对不对?


作者:lunar2000    时间:02-04-16 08:45

白雪,很旧没来了,哎


作者:snowhite2000    时间:02-04-16 09:44

欢迎,欢迎!


作者:bellsz    时间:02-05-13 17:09

关于RMAN,论坛上有个PDF,johnwuwuwu写的,很好

0 0

相关博文

我的热门文章

img
取 消
img