视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
使用RMAN避免SplitBlock的产生
2020-11-09 10:40:30 责编:小采
文档


热备份时(也就是OS命令拷贝cp,OS的cp单位不是data block而是os block)数据块刚好又在被用户修改,即,一个Oracle Block包含多

Split Block: 热备份时(也就是OS命令拷贝cp,OS的cp单位不是data block而是os block)数据块刚好又在被用户修改,即,一个Oracle Block包含多个OS Block, OS Level的拷贝可能正拷贝的是一个Oracle Block的一部分(比如Header),而另一部分被用户更新,发生变化,这样导致一个Oracle Block内部的不一致,可能出现一个数据块包含了几个不同版本的os block被称为Split Block,这里的block指的是data block.
而rman的单位是data block,不存在上述情况。块级别访问是RMAN 区别于其他备份工具的地方。

RMAN 备份会有下面的简单几个过程 : 1. RMAN 将需要备份的数据文件的所有数据块(Oracle block, 不管是否已格式化,是否有数据) 读入输入缓冲区(PGA的一部分) ,
这个过程是以Oracle block为最小单位进行的,不存在OS Block级别的拷贝或备份, 那么这个过程是不会产生所谓的"split block " 的。

2. 随后一个重要过程是Memory-To-Memory 过程, 也就是输入缓冲区写满后写入输出缓冲区 (默认也是PGA的一部分),这个过程中会有一些事情要做。
Oracle 首先判断oracle block是否被使用过(头信息是否为零),
如果数据块未被使用过, 就不会发生到输出缓冲区的写操作,同时丢弃此数据块,,
如果使用过,然后判断是否存在数据 (估计也是判断头信息), 如果存在就会在这个数据块上执行检验和checksum操作 。
最后判断Oracle block头和脚注是否匹配,判断是否是split block, 如果不是就写入输出缓冲区,
如果是split block,那么重新将block备份到输入缓冲区 。

3.写入输出缓冲区的Oracle block达到一定程度 (满了) , 会写入备份位置 (假设为磁盘) 。

下载本文
显示全文
专题