商讯信箱
用户名: @
密  码:   注册|忘记密码
登录
个人用户经销商
您的位置:首页 > 技术频道 > 正文

热备份原理分析

作者:佚名  2007-04-12
    现在我们知道了为什么不能不设置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 SQL> update test set a=a; 1 row updated. SQL> commit; Commit complete. SQL> select name,value from v$sysstat where name='redo size'; NAME VALUE ---------------------------------------------------------------- ---------- redo size 44060 SQL> ALTER SYSTEM DUMP LOGFILE '/netappredo/redo05.log'; System altered.
    一个update的动作产生44060-43408=652bytes的redo把表空间置为backup mode
SQL> alter tablespace test begin backup; Tablespace altered. SQL> select name,value from v$sysstat where name='redo size'; NAME VALUE ---------------------------------------------------------------- ---------- redo size 44732 SQL> update test set a=a; 1 row updated. SQL> commit; Commit complete. SQL> select name,value from v$sysstat where name='redo size'; NAME VALUE ---------------------------------------------------------------- ---------- redo size 53560 SQL> alter tablespace test end backup; Tablespace altered.
   
1 2 3
【内容导航】
第1页: backup模式 第2页: 试验
第3页: 结论
©版权所有。未经许可,不得转载。
[责任编辑:振宇]