Oracle中的redo copy latch

     首先我们需要清楚一点,log buffer中的内容是通过server process将PGA中的redo信息copy过去的。那么在copy之前,server process是需要得到一个redo copy latch,这个latch表明server process正在将redo写入到log buffer中,在此过程中,LGWR出于某种原因在要将log buffer内容写入log file之前,应该先等待server process将redo信息copy到log buffer后并释放了redo copy latch后进行,也就是说LGWR在写出之前,需要访问Latch Recovery Area检查redo copy latch,以确认目标redo并未处于写入状态。此过程LGWR仅需要检查redo copy latch,不需要持有。

    其次需要清楚的是,serve process在获得redo copy latch后,还不能继续工作,这个时候他还需要获得一个latch,就是redo allocation latch,这个latch用来在log buffer中分配redo空间以备存储我们的redo信息,空间分配完成后呢,就可以释放redo allocation latch,然后server process就可以将PGA中的redo信息写入我们的log buffer,然后再释放redo copy latch

    有一个隐藏的初始化参数_log_simultaneous_copies,表明允许同时获得redo copy latch的数量。
在Oracle 8.1.3开始呢,这个参数缺省是2倍cpu的数量。而且是一个隐含参数。

    同时我们也可以,通过以下语句来查询redo copy latch
col name for a22
select addr,latch#,child#,name,gets,immediate_gets,immediate_misses
from v$latch_children where name='redo copy';

    在某种情况下会触发LGWR写日志,那么首先都是在完成redo copy以后,进程才通知LGWR执行写出,在写出前首先还是需要获得redo writing latch去检查LGWR是否已经被激活或者是已经被使用,如果是这样的话,redo writing latch就被释放了。

在redo copy过程中,进程在以log file sync时间处与等待。

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

转载于:http://blog.itpub.net/12361284/viewspace-880/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值