li
  当前位置:主页 > 备份恢复 > 文章内容
li
热备份(hot backup)期间到底做了什么?
来源: www.ixdba.net  作者: IXDBA.NET官方    时间:2006-10-16   阅读:56  
本文章共2894字,分2页,当前第1页,快速翻页:
 

热备期间最大的特点就是产生了比平常更多的日志文件,为什么会这样?在恢复的时候有什么用呢?

热备期间日志文件记录的是修改的row所在的整个blockimage,而不仅仅是修改的row的信息。这样做的目的是为了尽量避免热备份的数据文件中因为包含SPLIT BLOCK ,而不能用于恢复的可能性。为了理解这段话,还要提一下SPLIT BLOCK的概念.

我们都知道,oracle block 是由多个OS blocks组成。比如,某个Unix 文件系统使用 512bytesblocksize,而oracle 使用8k db_block_size. 当热备份数据文件的时候,我们使用文件系统的命令工具copy 拷贝文件,并且使用文件系统的blocksize 读取数据文件。

www.ixdba.net



假设这种情况:当我们拷贝数据文件的同时,数据库正好向数据文件写数据。这就使得拷贝的文件中包含这样的database block,它的一部分OS block 来自于数据库向数据文件(这个db block)写操作之前,另一部分来自于写操作之后。这个database block就是一个SPLIT BLOCK.

所以,通过在日志中记录整个变化的db block image,可以保证在恢复的过程中,任何在热备的数据文件中出现的SPLIT BLOCK可以通过日志文件中的full image of the block 覆盖掉得以解决。以保证将来恢复的成功。

SPLIT BLOCK
的概念可以参考:http://tahiti.oracle.com/ 中查找 fractured block

证实热备过程产生了更多的redo:

代码:



'--- 正常运行产生的redo---'


SQL> select value from v$sysstat where name='redo size';
     VALUE
----------
   2989820
SQL> insert into t select * from dba_objects;
24652 rows created.
SQL> commit;
Commit complete.
SQL> select value from v$sysstat where name='redo size';
     VALUE
---------
   5774388
SQL> select 5774388-2989820 from dual;
5774388-2989820
---------------
        2784568
'--- hot backup
期间产生的redo---'
SQL> truncate table t;
Table truncated.
SQL> show user;
USER is "SYS"
SQL>
SQL> alter tablespace system begin backup;
Tablespace altered.
SQL> select value from v$sysstat where name='redo size';
     VALUE
----------
   5782896
SQL> insert into t select * from dba_objects;
24652 rows created.
SQL> commit;
Commit complete.
SQL> select value from v$sysstat where name='redo size';
     VALUE
----------
   8608520
SQL> select 8608520-5782896 from dual;
8608520-5782896
---------------
        2825624
SQL> alter tablespace system end backup;
Tablespace altered.

'--- 两者比较---'


SQL> select 2825624-2784568 from dual;


2825624-2784568
---------------
          41056
SQL>


我的问题:

我一直对为什么begin backup后要锁定这个数据文件的checkpoint scn 不太明确?

我的理解和猜测:
热备过程中使用统一的checkpoint scn ,可以在日至文件中很方便的找到哪些日志是hot backup时产生的日志,这个过程中的有可能产生SPLIT BLOCK ,需要在恢复时特别注意。而不需要影响到其他的block


大家有什么意见?

biti_rainy:

冻结的checkpoint scn , 使得备份出来的文件可以从该scn(实际上对应了日志文件的RBA)开始恢复,这样保证所有的block



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


  上一篇: 非归档模式下当前联机日志文件坏   下一篇: 关于Oracle数据库热备份原理深入...
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
 相关篇章
·非归档模式下当前联机日志文件坏
·归档模式下用户管理的完全恢复
·没有备份、只有归档日志,如何恢...
·启动/关闭数据库归档(ARCHIVELOG...
·热备份原理分析
·关于Oracle数据库热备份原理深入...
·使用Rman的Plus archvielog选项简...
·使用RMAN启动Oracle默认实例
·Rman功能测试
·ORA-00600: [kcratr1_lastbwr]错...
·ocfs2文件系统问题总结
·RMAN备份的查询和报告
·Rman全备恢复到另外服务器操作指...
·疑问测试:在primary上rman全备份...
·案例:Rman全备份不完全恢复数据...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接