zoukankan      html  css  js  c++  java
  • redo allocation latch redo copy latch

    这两个latch 是干什么的一直有点迷糊,刚才上网查了一下,总结如下:

    redo allocation latch

    在Log Buffer中分配内存空间时需要获取Redo allocation latch。在Oracle9.2之前,Redo allocation latch 是唯一的,因此向Log Buffer Cache中写入redo entries时是串行的。在Oracle9.2企业版中,Redo allocation latch 的数量由LOG_PARALLELISM控制。

    Redo allocation latch 在Log Buffer中为每个事务分配空间,如果事务很小或者服务器只有一个CPU,Redo allocation latch 同时COPY事务数据到Log Buffer Cache。在Log Switch释放空间时,Redo allocation latch 和 Redo Copy Latch同时被释放,也即在Log Switch过程中,Redo的生成是被禁止的。

    在Oracle 10g中有多个redo allocation latch。 想知道一个DB中有多少个redo allocation latch 可以通过如下语句:

    SQL> SELECT NAME,LATCH#,CHILD# FROM V$LATCH_CHILDREN WHERE NAME LIKE '%redo allocation%';
    
    NAME                                                                                 LATCH#     CHILD#
    -------------------------------------------------------------------------------- ---------- ----------
    redo allocation                                                                         148          1
    redo allocation                                                                         148          2
    redo allocation                                                                         148          3
    redo allocation                                                                         148          4
    redo allocation                                                                         148          5
    redo allocation                                                                         148          6
    redo allocation                                                                         148          7
    redo allocation                                                                         148          8
    redo allocation                                                                         148          9
    redo allocation                                                                         148         10
    redo allocation                                                                         148         11
    redo allocation                                                                         148         12
    redo allocation                                                                         148         13
    redo allocation                                                                         148         14
    redo allocation                                                                         148         15
    redo allocation                                                                         148         16
    redo allocation                                                                         148         17
    redo allocation                                                                         148         18
    redo allocation                                                                         148         19
    redo allocation                                                                         148         20
    redo allocation                                                                         148         21
    redo allocation                                                                         148         22
    redo allocation                                                                         148         23
    redo allocation                                                                         148         24
    redo allocation                                                                         148         25
    redo allocation                                                                         148         26
    redo allocation                                                                         148         27
    redo allocation                                                                         148         28
    redo allocation                                                                         148         29
    redo allocation                                                                         148         30
    redo allocation                                                                         148         31
    redo allocation                                                                         148         32
    redo allocation                                                                         148         33
    redo allocation                                                                         148         34
    redo allocation                                                                         148         35
    redo allocation                                                                         148         36
    redo allocation                                                                         148         37
    redo allocation                                                                         148         38
    
    38 rows selected.

    redo copy latch

    一个进程产生redo时首先需要获得redo copy latch,获得了该latch以后才能把redo拷贝到Log Buffer中。redo copy latch表明进程正在把redo拷贝入log buffer中,在此过程中,LGWR应该等待直到进程拷贝完成才能把目标Log buffer Block写入磁盘。 换句话说, LGWR想把redo log buffer写入log file的时候要保证没有redo copy latch被持有。

    redo copy latch获取以后,紧接着需要获取redo allocation latch ,分配redo空间,空间分配完成以后,redo allocation latch 即被释放,进程把PGA里临时存放的redo信息COPY入redo log buffer,COPY完成以后,redo copy latch 释放。

    在eygle的网站有这么一句话 LGWR进程必须获得所有的redo copy latch,然后才能将Log Buffer写入Log File. 我想是因为LGWR要保证没有其他人持有redo copy latch

  • 相关阅读:
    安卓AndroidManifest.xml介绍
    Android系统开发入门
    蓝牙协议(bluetooth spec)
    解决:NoSuchAlgorithmException: Algorithm HmacSHA1 not available
    Spring bean 实现初始化、销毁方法的方式及顺序
    解决: maven编译项目报“非法字符: 65279 ”错误
    解决:eclipse 非正常关闭,导致无法正常启动
    ffmpeg 音频转换: use ffmpeg convert the audio from stereo to mono without changing the video part
    win10家庭版快速升级专业版
    Linux下更改目录及其下的子目录和文件的访问权限
  • 原文地址:https://www.cnblogs.com/kramer/p/3455925.html
Copyright © 2011-2022 走看看