1 说明
2025-02-12凌晨时间03:31:28,某个库的主机出现/oracle的文件系统使用率爆满,清理了异常占用的trace文件后告警消除。

此问题是由于Bug 33123985 DBW0 Process Generate Huge Traces With Dumping DBWR Process State After DBRU 19.11引起,在19.11以后的版本,DBW0进程会产生大量trace以及dump。
2 处理和分析过程
2.1 应急处理
经排查,发现是数据库实例dbw进程有几个trace文件突增占满文件系统,当时的应急处理办法是将其中4个较大(30G)的trace文件重定向:

2.1 查找根因
随后检查了集群服务状态正常,实例没有自动重启过。查看告警日志,在空间满时有dbw进程相关告警如下:

可以看到,告警日志显示有6个trc文件无法写入,上面清理的4个就是其中之一,无法写入的原因显而易见就是因为/oracle目录满了。除了上面清理的那几个trc文件,剩下的3个文件也很大,每个都是好几G。
除上述告警外,alert日志没有其他明显报错,系统messages日志也无明显异常。
查看其中一个trace文件,发现文件末尾存在大量以下内容:

此错误是由于Bug 33123985 DBW0 Process Generate Huge Traces With Dumping DBWR Process State After DBRU 19.11
引起:

3 解决办法
3.1 打补丁
打补丁Patch 33123985: DBW PROCESS GENERATE HUGE TRACES WITH DUMPING DBWR PROCESS STATE AFTER DBRU 19.11

3.2 版本升级
19.13及以后版本包含Patch 33123985,可以将库升级到19.13。
3.3 修改参数
禁用 DBWR 的写入停滞检测功能:
alter system set "_dbwr_stall_write_detection_interval" = 0 scope=both sid='*';
当这个参数的值为 0 时,数据库不会定期去检查 DBWR 是否存在写入延迟的情况,这可能会导致数据库在高负载或 I/O 瓶颈时无法及时检测到写入停滞,进而影响性能或稳定性。
不建议在生产环境中随意修改,需要经过全局考虑。禁用了此参数虽然规避了当前问题,但是有可能导致不可预见的后果。
4 总结
在19.11版本中,dbw进程产生占用大的trace文件是由于Bug 33123985引起的,可通过打Patch 33123985补丁、升级到19.13或禁用DBWR进程的写入停滞检测功能去规避此问题。




