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达到一定程度 (满了) , 会写入备份位置 (假设为磁盘) 。
默认情况下, 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达到一定程度 (满了) , 会写入备份位置 (假设为磁盘) 。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-701871/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-701871/