【Oracle】-【体系结构-DBWR】-DBWR进程相关理解
来源:互联网 发布:wind数据库有免费版吗 编辑:程序博客网 时间:2024/06/10 15:20
对DBWR的一些理解
首先从名称上,DBWR全称是Database Writer Process,属于Oracle后台进程的一种,有的地方也叫DBWn,我想这里是出于DBWR进程个数的原因,DBWR进程在一个Oracle Server中可以最多有20个,编号是DBW1-DBW9和DBWa-DBWj,下面根据不同文档、官方手册以及高手帖的理解,总结关于DBWR的一些关键点:
1、DBWR是将数据库buffer cache中的dirty数据块写到磁盘中,这里dirty表示的是buffer cache中被修改的buffer缓存,DBWR是根据LRU算法实现从缓存写到磁盘的,与dirty相对的还有cold(或clean)块的概念,即未修改的缓存。根据LRU算法,DBWR会将最近最少被使用的buffer写入磁盘,以让其它的数据内容可以写入该缓存,也就是free buffer增加,否则一味地占用buffer cache,新的数据就不能利用buffer cache了。
2、新增的DBWn不能在单处理器中使用,对于数量,每8个CPU可以至少利用一个DBWR进程,如果是处理器组,那么有多少个处理器组,就应该有多少个DBWR进程。DBWR的个数可以由初始化参数DB_WRITER_PROCESSES决定。总结来讲,DBWR的个数如果没有在启动时由用户指定,那么Oracle会根据CPU和处理器组的个数来设置DB_WRITER_PROCESSES参数。
3、DBWR进程会将dirty缓存写入磁盘,条件是:
(1)、服务进程在扫描buffer个数阈值(由隐藏参数:_db_block_max_scan_pct,代表已经扫描的buffer header的个数占整个LRU链表上buffer header总数的百分比)后还没找到一块clean未用的缓存时,会触发DBWR。当执行其它处理时,DBWR会异步地将dirty缓存写入磁盘。
(2)、当出现checkpoint时,DBWR会将dirty的缓存写到磁盘。
(3)、数据文件或表空间离线。
(4)、表空间在备份。
(5)、表空间只读。
(6)、超时。
(7)、表被删除或截断。
4、DBWR是批量(多块)写入,以提高性能。块的数量在不同的操作系统有不同的设置。
5、关于DB_WRITER_PROCESSES,官方文档注明它的默认值是1或CPU数量/8,以及任何大于它的值,范围是1到20。
最重要的一点就是不是每次交易执行commit时,都会立即调用DBWR,换句话说,commit时DBWR不会做任何事情。
- 【Oracle】-【体系结构-DBWR】-DBWR进程相关理解
- 【Oracle】-【体系结构-DBWR】-DBWR进程相关
- oracle体系结构 LGWR DBWR
- Oracle体系结构(三)---DBWR机制
- DBWR进程
- ORACLE中触发DBWR进程的事件~
- Oracle体系结构及备份(十四)——bg-dbwr
- 后台进程一:DBWR进程
- 后台进程二:DBWR进程
- 修改dbwr后台进程数量
- 【Oracle】-【LRU和DBWR】-LRU算法与DBWR中的应用
- dbwr调优
- Oracle DBWn(DBWR)写数据文件
- Oracle DBWR和缓存的管理
- oracle四个重要的后台进程(DBWR / LGWR / ARCH / CKPT)
- Oracle DBWR,LGWR,CKPT,ARCH 触发条件 总结
- Oracle DBWR,LGWR,CKPT,ARCH 触发条件 总结
- dbwr什么时候触发?
- php foreach 遍历数据遇到的问题
- 进程通信之二 管道技术第二篇 匿名管道
- JPEG图像的解压缩操作
- 在IT行业获得成功,你只需一项技能
- ExtJS(三)--Ajax实现省份城市联动
- 【Oracle】-【体系结构-DBWR】-DBWR进程相关理解
- Norlit OS —— 自制操作系统 第7章 进程调度
- hibernate入门学习心得
- mysql主从同步
- Cocos2D-iphone 场景切换
- Android混淆代码工具ProGuard
- android打包混淆代码编译会出现很多warling,然后编译失败问题解决办法
- linux :touch 命令
- 非阻塞socket编程问题小结