checkpoint会触发dbwr写脏块时是根据checkpoint queue来的,而LRU-W是负责dbwr的其他写出条件的触发。
如下的情况下,会触发dbwr进程将脏块写出到disk:
1)当进程扫描LRU链表查找可用buffer(可用被覆盖的 buffer header)的时候,如果已经被扫描的buffer header的数量
超过_db_block_max_scan_pct时(默认是40),会触发dbwr写脏块
2)当DBWR进程在main LRU-W链表上查找已经被更改完成且正在等待被写出到数据文件的buffer header时,
如果这个过程中查找的buffer 数量超过_db_writer_scan_depth_pct(默认25%)时,会触发dbwr进程写脏块
3)当main LRU-W和aux LRU-W 链表上的脏块总数超过 _db_large_dirty_queue时(默认25)会触发dbwr进行写出脏块的动作。
Oracle 写脏数据的不同场景
最新推荐文章于 2021-04-10 21:46:16 发布
Oracle的dbwr进程在特定条件下会将脏数据块写入磁盘:1) 当扫描LRU链表超过指定比例时;2) 在main LRU-W链表上查找更改完成的脏块达到一定数量;3) main和aux LRU-W链表的脏块总数超过阈值。这些条件确保了数据库的正确性和性能。
摘要由CSDN通过智能技术生成