RMAN处理split block问题

Oracle 10.2.0.4.0  ,   Linux AS 5.4   


默认情况下, RMAN 备份会有下面的简单几个过程 :

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

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

这里有个问题:  写入输入缓冲区的Oracle block 不会存在split block (如果存在,是如何产生的?),  这些
block在session特定的pga中存放,  那么后面做Memory-To-Memory 过程中为何还要判断 split block  ?   

3.   写入输出缓冲区的Oracle block达到一定程度 (满了) , 会写入备份位置 (假设为磁盘) 。
请使用浏览器的分享功能分享到微信等