RMAN备份时候内存区域的使用及split block处理问题

本文详细介绍了Oracle RMAN备份算法的工作原理,包括基于通道数和同时备份的数据文件数创建内存缓冲区的过程,以及数据块从输入缓冲区到输出缓冲区的转移机制。还探讨了RMAN如何使用PGA和SGA,以及在不同情况下如何处理数据块的备份。
Oracle9i , 10g  
Linux, Unix, Windows OS

          RMAN基于备份算法规则来编译要备份的数据文件列表。基于通道数和同时备份的数据文件数, RMAN在ORACLE共享内存段中创建一些内存缓冲区, 一般是在PGA中, 不过有时候内存缓冲区会被推入SGA。 通道服务进程随后就开始读取数据文件,并在RMAN缓冲中填充这些数据块。一个缓冲区被填满时,输入缓冲区的数据就会推出到输出缓冲区。数据文件中的数据块都会发生这种memory-to-memory write 的过程,如果数据块符合备份的标准,并且memory-to-memory write操作没有检查到数据corruption,  则该数据块会被保存到输出数据缓冲区中,直到输出缓冲区被填满。一旦输出缓冲区被填满,输出缓冲区的内容就会被推到备份位置(磁盘或者磁带)

教材上说,只要配置了DBWR_IO_SLAVES,BACKUP_TAPE_IO_SLAVES其中一个初始化参数就可令RMAN使用large pool.


------------------------------------------


“基于通道数和同时备份的数据文件数, RMAN在ORACLE共享内存段中创建一些内存缓冲区, 一般是在PGA中, 不过有时候内存缓冲区会被推入SGA”


问题 :    RMAN在Oracle共享内存段中创建一些内存存缓冲区, 输入缓冲区和输出缓冲区都是创建的内存缓冲区中的一部分, 他们如何分配 ?       创建的内存缓冲区一般是在PGA中,那么可能在RMAN操作过程中甚至不会用到SGA中的large pool ?   有时候内存缓冲区会被推入SGA , 是PGA中内存不够用的时候 ? 还是... ?  







“ 一个缓冲区被填满时,输入缓冲区的数据就会推出到输出缓冲区。数据文件中的数据块都会发生这种memory-to-memory write 的过程,如果数据块符合备份的标准,并且memory-to-memory write操作没有检查到数据corruption,  则该数据块会被保存到输出数据缓冲区中,直到输出缓冲区被填满 ”  


也就是说RMAN检查split block 是在输入缓冲区写满需要写入到输出缓冲区的时候进行的 ? 如果是split block, 那么通道进程会将这个数据块重新写入到输入数据缓冲区  ?

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-548903/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-548903/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值