Home > Database > Mysql Tutorial > 使用RMAN避免Split Block的产生

使用RMAN避免Split Block的产生

WBOY
Release: 2016-06-07 17:32:05
Original
1020 people have browsed it

热备份时(也就是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达到一定程度 (满了) , 会写入备份位置 (假设为磁盘) 。

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template