log buffer 分配需要的 latch

1、数据的修改是在PGA上以CHANGE VECTOR存储,其包含3部分撤销头修改内容,撤销块修改内容,数据库修改内容,

把CHANGE VECTOR复制到log BUFFER,需要获得REDO COPY锁存器,整个过程都需要,如果发生争用出现REDO COPY等待

2、通过redo allocation锁存器,保证log buffer中有足够的空间,如果没有就需要进行日志写这需要REDO WRITING

锁存器,直到有足够的空间,如果出现等待则出现LOG BUFFER SPACE等待,如果日志满了需要切换,等待切换结束出现

log file switch completion事件,最后确保有足够的空间释放redo allocation锁存器,整个过程如果redo allocation出现

争用,则等待LATCH:REDO ALLOCATION

3、将CHANGE VECTOR复制到log BUFFER上,所偶过程结束释放REDO COPY锁存器,没一个重做记录到重做缓存则reod entries增加1

时间: 2024-09-02 11:17:17

log buffer 分配需要的 latch的相关文章

redo log buffer小结

整理自<OCA/OCP认证考试指南> 001     日志重做缓冲区是小型的.用于短期存储将写入到磁盘上的重做日志的变更向量的临时区域."变更向量"是应用于某些对象的修改,执行DML语句会生成应用于数据的变更向量.有了重做日志,数据库就可以确保数据永不丢失:每当数据块发生更改时,都会将应用于块的变更向量写到重做日志,如果需要还原数据文件,则通过重做日志,可以将变更向量提取并应用于数据文件备份. 002     会话服务器进程不将重做记录直接写入重做日志文件,否则,每当执行D

Oracle Log Buffer详解

数据库在运行过程中,不可避免地要遇到各种能够导致数据库损坏的情况.比如突然断电.Oracle或者操作系统的程序bug导致数据库内部逻辑结构损坏.磁盘介质损坏等,都有可能造成数据库崩溃,从而导致数据丢失的现象发生. 为了避免,或者说为了修复这些状况所导致的数据丢失现象,Oracle引入了日志缓冲区和日志文件的概念.所谓日志,就是将数据库中所有改变数据块的操作,都原原本本地记录下来.这些改变数据块的操作不仅包括对数据表的DML命令或者引起数据字典内容变化的DDL命令,还包括对索引的改变.对回滚段数据

Oracle中如何设置log buffer

对于日志缓冲区来说,设置过小,容易引起log buffer space等待事件.但也不是说设置得越大就越好的,设置过大,由于LGWR进程会不断启动刷新日志缓冲区从而释放内存,所以可能会根本用不上多余的内存,从而浪费内存. 设置合适的日志缓冲区大小,目的是为了能够让LGWR进程合理地触发.理想情况下是,一方面,在LGWR进程向联机日志文件中写重做记录时,日志缓冲区中还是有剩余的可用空间以供其他进程所使用:另一方面,当LGWR进程完成时,日志缓冲区中的剩余可用空间不要很多,因为这时由LGWR所写入日

log buffer 中的组提交

 [本文根据itpub的帖子整理]    数据库中同时存在许多事务,LGWR进程在写入重做日志文件时可以采取"组提交"的方式.         一个用户提交事务时,LGWR进程开始将该进程的重做记录写入硬盘.如果在写入的过程中有其他多个用户也执行COMMIT语句提交事务,这时LGWR进程不能立即将这些事务的重做记录写入硬盘,而必须等待当前的写操作完成.当第一个事务的重做记录都被写入到硬盘中后,LGWR进程将被重做日志缓存中的数据一次性全部写入重做日志文件.        这两个comm

log buffer 深度解析+

原文整理自网络 5.3  深入Log Buffer   数据库在运行过程中,不可避免地要遇到各种能够导致数据库损坏的情况.比如突然断电.Oracle或者操作系统的程序bug导致数据库内部逻辑结构损坏.磁盘介质损坏等,都有可能造成数据库崩溃,从而导致数据丢失的现象发生. 为了避免,或者说为了修复这些状况所导致的数据丢失现象,Oracle引入了日志缓冲区和日志文件的概念.所谓日志,就是将数据库中所有改变数据块的操作,都原原本本地记录下来.这些改变数据块的操作不仅包括对数据表的DML命令或者引起数据字

【性能优化】Can the log buffer be too big?

     However, if the log buffer is very big, then the default _log_io_size threshold will be big also, and so background writes may seldom be triggered. This means that all the redo will have to be flushed by sync writes, and so log file sync waits w

逻辑读产生Cache Buffer Chain(简称CBC) Latch的解析

测试环境:版本11gR2 SQL> select * from v$version where rownum=1; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production 一.逻辑读的过程  1.Oracle以每个块的文件号.

Oracle中log buffer的内部管理机制概述

日志缓冲区的内部管理分为两部分,一部分是生成重做记录,另一部分就是重做记录写入联机日志文件.这两部分不是孤立的,没有关联的.在生成重做记录的过程中,可能会触发LGWR将重做记录写入联机日志文件. 我们先用一个例子来说明在日志缓冲区中的操作过程,并使用[file# , blk#]来表示某个数据块:file#表示文件号:blk#表示数据块号. 假设session 1发出更新语句:update redo_test set name='cdf' where id=1; Oracle首先找出id=1所在的

Oracle log buffer的内存结构

我们已经知道,日志缓冲区用来存放事务对数据块的变化的日志信息.那么这里的日志信息到底包含哪些内容,是由哪些结构组成的呢? Oracle记录数据库变化(也就是记录日志信息)的最小单位是改动向量(change vector).改动向量用来描述对数据库中任何单个数据块所做的一次改动.改动向量的内容包括被改动的数据块的版本号.事务操作代码.被改动的数据块的地址等.这里的版本号非常重要,它能够帮助数据块始终能够体现当前最新的状态.Oracle在建立改动向量时,会从数据块中复制其版本号.而当恢复期间,Ora