WEB开发网
开发学院数据库Oracle 关于Oracle数据库热备份原理深入分析 阅读

关于Oracle数据库热备份原理深入分析

 2007-05-12 12:25:17 来源:WEB开发网   
核心提示:我们都知道oracle的备份有几钟方式,冷备,关于Oracle数据库热备份原理深入分析,热备,rman,如果你能确保当cp的时候不发生checkpoint,或者你的操作系统块的大小不小于oracle的数据块大小,imp等,我们注意到当我们采取热备的时候

我们都知道oracle的备份有几钟方式,冷备,热备,rman,imp等,我们注意到当我们采取热备的时候,需要对每个要备份的表空间置为backup模式。通常的热备脚本都是这样的:

alter tablespace XXX begin backup;
cp XXX ....
alter tablespace XXX end backup;

(这里需要注意一点,oracle的最小存储单位是一个数据块,一个块的大小通常设置为8KB,而操作系统的块通常是512B,这样的话一个oracle的数据由很多个操作系统的块组成。而且对于一个数据文件来说,它的所有块对应的操作系统的块并不是按顺序存储的,当运行cp等操作系统命令时并不能指定从那个oracle数据块开始拷贝。)当open数据库的时候,oracle会去比较控制文件中数据文件记录和数据文件头的checkpoint cnt,如果两者相同,则判断不需要介质恢复,如果不同,这时候oracle就会报某某文件需要介质恢复。然后拷贝回数据文件备份我们开始recover,这时候就从上次做备份时的scn开始恢复,运用日志,直到恢复结束。当cp数据文件时,比如说我们拷贝的第一个块可能是scn为100的数据块,当我们完成这个块的拷贝后,这个块有可能被别的进程多次修改,scn变为900。我们知道当数据库发生检查点时会去更新数据文件头和控制文件中的checkpoint scn,如果当我们在cp数据文件的同时发生了n次checkpoint,这时候数据文件头的scn可能被更新了很多次。这时候cp的进程去拷贝数据文件头所在的操作系统块,可能这个数据文件头的块因为被checkpoint了很多次导致它的scn为1000,这时候整个数据文件会出现不一致,当用这个备份文件去恢复时,恢复进程会从scn=1000开始恢复,这样的话开始那个scn=100的块将丢失从scn100-scn1000的数据,因为数据块并不应用scn在1000以前的日志,而且这样做的话可能出现一些数据块的corruption,所以不置成backup模式备份的话并不可取。当然,如果你能确保当cp的时候不发生checkpoint,或者你的操作系统块的大小不小于oracle的数据块大小,这些情况下不置backup mode拷贝出来的文件也是有效的。

1 2 3 4  下一页

Tags:关于 Oracle 数据库

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接