您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

【Oracle】

2025/11/21 11:45:22发布21次查看
对dbwr的一些理解 首先从名称上,dbwr全称是database writer process,属于oracle后台进程的一种,有的地方也叫dbwn,我想这里是出于dbwr进程个数的原因,dbwr进程在一个oracle server中可以最多有20个,编号是dbw1-dbw9和dbwa-dbwj,下面根据不同文档、官方
对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不会做任何事情。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product