在Oracle 19c中, BCT块改变跟踪功能导致数据库性能下降问题

0    100    1

Tags:

👉 本文共约1919个字,系统预计阅读时间或需8分钟。

问题背景

在Oracle19c版本上,开启BCT块跟踪的数据库偶尔出现性能下降问题,影响业务操作。

问题:

数据库偶尔出现性能下降

原因

数据库出现性能问题的原因为

1 核心进程CKPT被CTWR进程堵塞,CKPT为数据库的核心进程,被堵塞会影响数据库的检查点触发,脏数据写入等关键操作,导致出现性能问题

2 CTWR进程处于繁忙状态,进程CPU使用接近100%,无法正常的返回确认信息给CKPT进程,导致CKPT一直处于等待堵塞状态

3 从数据库的等待block change tracking buffer space,可以确认当前的块追踪的缓存大小不匹配当前数据的块改变量,导致CTWR的进程一直处于繁忙的写入状态

问题分析

对比正常时间段与性能问题时间段的awr报告,可以发现在性能问题时间数据库的等待事件block change tracking buffer space, buffer busy waits, reliable message明显提高

  • block change tracking buffer space:事件主要表明会话进程等待块改变写入块追踪(block change tracking buffer)的缓存里面,等待过高通常说明当前的块追踪的缓存大小不匹配当前数据的块改变量,导致块追踪的缓存写入磁盘文件速度慢于块改变的产生速度

  • buffer busy waits:事件主要表明会话请求的缓存块正被其他会话以不兼容的模式持有,等待过高通常说明数据块存在热快或者数据库存在性能问题

  • reliable message:事件主要表明进程当前正等待其他进程的消息返回,等待过高通常说明进程可能存在繁忙或者僵死的状态

    在Oracle 19c中, BCT块改变跟踪功能导致数据库性能下降问题

从awr来看block change tracking buffer space等待非常高,说明性能问题时间段数据库的块追踪缓存写入可能存在性能瓶颈,快追踪缓存的写入通常由CKPT检查点进程所触发刷新,检查CKPT进程的状态,可以看到在2023年1月16号5点10分开始,CKPT进程被会话4693所堵塞,状态为waiting

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

在Oracle 19c中, BCT块改变跟踪功能导致数据库性能下降问题

后台日志也出现CKPT被堵塞的日志

在Oracle 19c中, BCT块改变跟踪功能导致数据库性能下降问题

堵塞会话4693为数据库CTWR进程(Check Tracking Writer),进程主要用于将块追踪缓存写入磁盘上的块追踪文件,当前会话状态为ON CPU

在Oracle 19c中, BCT块改变跟踪功能导致数据库性能下降问题

从服务器层面可以进一步看到在性能问题时间段,CTWR进程的CPU使用接近100%的状态,说明CTWR进程当前非常繁忙

在Oracle 19c中, BCT块改变跟踪功能导致数据库性能下降问题

综合上述信息,我们可以确认数据库出现性能问题的原因为

1 核心进程CKPT被CTWR进程堵塞,CKPT为数据库的核心进程,被堵塞会影响数据库的检查点触发,脏数据写入等关键操作,导致出现性能问题

2 CTWR进程处于繁忙状态,进程CPU使用接近100%,无法正常的返回确认信息给CKPT进程,导致CKPT一直处于等待堵塞状态

3 从数据库的等待block change tracking buffer space,可以确认当前的块追踪的缓存大小不匹配当前数据的块改变量,导致CTWR的进程一直处于繁忙的写入状态

问题解决

从Oracle官方我们可以查到关于CKPT进程被CTWR堵塞,等待CTWR进程回复信息"rdbms ipc reply"的相关文档案例,由于CTWR的写入速度无法跟上块追踪的缓冲区的产生数量,导致CKPT进程被CTWR堵塞,可以通过增大块追踪的缓存区大小来缓解CTWR的写入压力

在Oracle 19c中, BCT块改变跟踪功能导致数据库性能下降问题

1 加大块跟踪缓存的大小缓解CTWR进程的写入压力,当前的块追踪缓存大小为384M,根据官方的建议,建议设置块跟踪缓冲区的总大小_bct_public_dba_buffer_size为2倍块追踪缓存当前值大小805306368(768M),跟踪缓冲区的最大大小_bct_buffer_allocation_max为4倍块追踪缓存大小1610612736(1536M)

在Oracle 19c中, BCT块改变跟踪功能导致数据库性能下降问题

在Oracle 19c中, BCT块改变跟踪功能导致数据库性能下降问题

2 禁用BCT块改变追踪功能,注意:禁用可能带来的影响为增量备份的时间变长

3 应用最新的RU补丁,Oracle19c版本数据库存在多个BCT的bug 32697859, 33541865,31417990 , 32697859 建议安装高版本的RU补丁,规避潜在的bug

参考

https://mp.weixin.qq.com/s/LjDbqw-nxhs5qxkdZ-qnJA

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部