ITPub博客

Oracle中的redo copy latch

原创 Linux操作系统 作者:oracle_ace 时间:2007-12-19 14:37:54 0 删除 编辑

     首先我们需要清楚一点,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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-10

  • 博文量
    284
  • 访问量
    783418