li
  当前位置:主页 > 备份恢复 > 文章内容
li
关于Oracle数据库热备份原理深入分析
来源: www.ixdba.net  作者: IXDBA.NET官方    时间:2006-10-10   阅读:81  
本文章共5480字,分4页,当前第1页,快速翻页:
 

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

alter tablespace XXX begin backup;

cp XXX ....

alter tablespace XXX end backup;

IXDBA.NET技术社区

(这里需要注意一点,oracle的最小存储单位是一个数据块,一个块的大小通常设置为8k,而操作系统的块通常是512bytes,这样的话一个oracle的数据由很多个操作系统的块组成。而且对于一个数据文件来说,它的所有块对应的操作系统的块并不是按顺序存储的,当运行cp等操作系统命令时并不能指定从那个oracle数据块开始拷贝。)

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

现在我们知道了为什么不能不设置backup模式,下面来讲讲alter tablespace XXX begin backup做了什么?

当数据文件置于backup模式时,oracle会去锁定数据文件头,这时候数据库发生检查点的话将不会修改文件头的checkpoint scn,而只是增加checkpoint cnt,所以不管执行cp的时候操作系统块的拷贝顺序是如何,oracle总会从文件头的scn开始恢复,这样的话也就避免了数据丢失和数据块corruption.如果大家用的是rman来备份,那么就不会有这个问题,因为rman备份的时候rman会去对比数据块的头尾标志,如果发现不一致,那么它将会再去读这个块,直到读到一致的块才往备份集里写。

但是alter tablespace XXX begin backup带来的另一个问题是会导致产生多余的日志,通过一个小小的试验就可以证明这一点。

SQL> select name,value from v$sysstat where name='redo size';

NAME                                                       VALUE

--------------------------------------------------- ----------

redo size                                                   43408

阅读更多内容1 · 2 · 3 · 4 · 下一页>>


  上一篇: 热备份(hot backup)期间到底做了...   下一篇: 使用Rman的Plus archvielog选项简...
li
 §相关评论  
 热点文章

·Oracle数据库远程复制与异地容
·Oracle 11g备份恢复功能增强
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·使用Flashback Query 恢复误删
·如何开启/关闭oracle的归档
·Rman的format格式中的%s类似的
·怎么样创建RMAN恢复目录
·ORA-01843:无效的月份,这个是
·ORA-01843:无效的月份
li
 编辑推荐
·Oracle数据库远程复制与异地容
·Oracle 11g备份恢复功能增强
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·使用Flashback Query 恢复误删
·如何开启/关闭oracle的归档
·Rman的format格式中的%s类似的
·怎么样创建RMAN恢复目录
·ORA-01843:无效的月份,这个是
·ORA-01843:无效的月份
li
 相关篇章
·热备份(hot backup)期间到底做了...
·非归档模式下当前联机日志文件坏
·归档模式下用户管理的完全恢复
·没有备份、只有归档日志,如何恢...
·启动/关闭数据库归档(ARCHIVELOG...
·热备份原理分析
·使用Rman的Plus archvielog选项简...
·使用RMAN启动Oracle默认实例
·Rman功能测试
·ORA-00600: [kcratr1_lastbwr]错...
·ocfs2文件系统问题总结
·RMAN备份的查询和报告
·Rman全备恢复到另外服务器操作指...
·疑问测试:在primary上rman全备份...
·案例:Rman全备份不完全恢复数据...
·oracle备份恢复:当前日志损坏的...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接