【Oracle】-【体系结构-LGWR】-LGWR的一些理解
来源:互联网 发布:mysql 最小值 编辑:程序博客网 时间:2024/05/01 05:35
LGWR的一些理解:
LGWR,是Log Writer的缩写,也是一种后台进程。主要负责将日志缓冲内容写到磁盘的在线重做日志文件或组中。DBWn将dirty块写到磁盘之前,所有与buffer修改相关的redo log都需要由LGWR写入磁盘的在线重做日志文件(组),如果未写完,那么DBWn会等待LGWR,也会产生一些相应的等待事件(例如:log file prarllel write,后面单独作为话题再聊)。总之,这样做的目的就是为了当crash时,可以有恢复之前操作的可能,也是Oracle在保持交易完整性方面的一个机制。
相关知识点:
1、LGWR写日志是顺序写,这就解释了一个Orace Server只能有一个LGWR进程,不能像DBWR那样可以有多个,否则就无法保证顺序写的机制,而且可能会产生锁的问题。
2、用户进程每次修改内存数据块时,都会在日志缓冲区(redo buffer)中构造一个相应的重做条目(redo entry),它记录了被修改数据块修改之前和之后的值。
3、LGWR将redo entry写入联机日志文件的情况可以概括为两种:后台写和同步写,或者说异步写和同步写。
后台写的条件:
(1)、每3秒LGWR启动一次。
(2)、DBWR启动时如果发现dirty块对应的redo entry还没写入联机日志文件,则DBWR触发LGWR进程并等待LGWR完成后继续。
(3)、redo entry数量达到整个log buffer的1/3时,触发LGWR。
(4)、redo entry的数量达到1M。
同步写的条件:
COMMIT。即执行COMMIT时,必须等待log buffer进行flushing操作(可能产生log file sync等待事件),写入磁盘中的联机日志文件。但一般上述1/3满的条件触发LGWR,几乎强制LGWR实时写,因此当需要执行COMMIT,可能没有任何redo entry需要写入了。
4、3秒触发LGWR的规则,事实上,这个超时是DBWR的,但是因为LGWR总在DBWR调用之前执行,因此效果上也相当于LGWR的超时是3秒即调用。
- 【Oracle】-【体系结构-LGWR】-LGWR的一些理解
- oracle体系结构 LGWR DBWR
- 【Oracle】LGWR
- LGWR
- LGWR
- 关于oracle lgwr 进程的一点思考
- Oracle体系结构及备份(十五)——bg-lgwr
- oracle lgwr 如何写redolog
- Oracle oradebug中止、挂起LGWR进程(Suspend LGWR Process)
- ORACLE触发LGWR日志写进程的条件~
- oracle服务器 查看存储延迟的trace日志 lgwr
- DBWR和LGWR的关系
- 有关LGWR
- LGWR进程
- Oracle lgwr进程及触发条件
- DBWn、CKPT、LGWR进程之间的合作
- DBWn、CKPT、LGWR进程之间的合作
- 简记 LGWR与DBWR 的操作
- 人生哲理
- mac下移动硬盘不能往里边拷贝东西的解决办法
- UNIX网络编程——套接字选项(SO_REUSEADDR)
- C++一维数组和指针的关系总结
- jQuery Ajax全解析
- 【Oracle】-【体系结构-LGWR】-LGWR的一些理解
- 百度自定义地图控件
- Struts2中field级别错误导致action无法使用的问题
- NOJ 212题K尾相等数
- TortoiseSVN 打开出现“系统找不到指定的路径”
- 渗透课程笔记
- Win 7重装小记
- java中提高时间性能的一些措施
- [小说]魔王冢(13)吕四娘