适用范围
Oracle Database 12.2+
问题概述
Oracle 12.2 RAC 节点1数据库软件基础目录/u01使用率超过99%,应用连接数据库异常。
问题原因
节点1ASM实例的audit目录审计日志突然暴增。根本原因是同步工具产生大量审计日志导致的。近期部署同步工具DHMS后才产生大量审计日志。
解决方案
1、备份并清理申请日志。 2、/u01基础软件目录扩容。有100g扩容至300G。
建议
1、数据库生产环境部署任何产品应进行充分测试,特别是性能和空间使用等; 2、上线后应加强数据库的空间使用和性能等监控。
说明:什么是DHMS?
达梦数据实时同步软件(以下简称 DMHS)是支持异构环境的高性能、高可靠、高可扩展数据库实时同步复制系统。基于成熟的关系数据模型和标准接口,支持多种软硬件平台,能够灵活的配置出一对一、一对多、多对一、多对多以及级联等多种形式的复制拓扑结构,可以广泛应用于应急系统、容灾备份、负载均衡、数据移植、联机维护、订阅分发、多业务中心等业务领域。
分析过程
1、检查目录使用率
[grid@hostodb rdbms]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/rootvg-root 183G 182G 1G 99% / devtmpfs 126G 0 126G 0% /dev tmpfs 126G 1.8G 124G 2% /dev/shm tmpfs 126G 4.1G 122G 4% /run tmpfs 126G 0 126G 0% /sys/fs/cgroup /dev/sda2 1014M 174M 841M 18% /boot /dev/sda1 200M 9.8M 191M 5% /boot/efi /dev/mapper/vg_backup-lv_backup 1.8T 1.1T 689G 61% /backup tmpfs 26G 12K 26G 1% /run/user/42 tmpfs 26G 12K 26G 1% /run/user/0 tmpfs 26G 56K 26G 1% /run/user/54321 tmpfs 26G 44K 26G 1% /run/user/54322 [grid@hostodb rdbms]$ du -sh * |sort -rh 6.7G audit 50M mesg 44M admin 42M xml 30M lib 7.2M jlib 448K utl 152K log 132K public 112K install 8.0K doc 4.0K demo [grid@hostodb rdbms]$
/u01 目录使用率已经超过99%,/u01目录下使用率最大的目录是ASM实例的审计目录aduit目录 2、检查audit目录
-rw-r----- 1 grid oinstall 10240035 Dec 9 10:34 +ASM1_ora_55199_20241209103256473366143795.aud -rw-r----- 1 grid oinstall 10240035 Dec 9 10:34 +ASM1_ora_20521_20241209103318786657143795.aud -rw-r----- 1 grid oinstall 10240035 Dec 9 10:34 +ASM1_ora_48447_20241209103342648258143795.aud -rw-r----- 1 grid oinstall 10240031 Dec 9 10:34 +ASM1_ora_550_20241209103324575493143795.aud -rw-r----- 1 grid oinstall 10240033 Dec 9 10:35 +ASM1_ora_8212_20241209103411788828143795.aud -rw-r----- 1 grid oinstall 10240035 Dec 9 10:35 +ASM1_ora_23857_20241209103351578015143795.aud -rw-r----- 1 grid oinstall 10240033 Dec 9 10:35 +ASM1_ora_2702_20241209103400082457143795.aud -rw-r----- 1 grid oinstall 10240035 Dec 9 10:35 +ASM1_ora_17325_20241209103357810223143795.aud -rw-r----- 1 grid oinstall 10240035 Dec 9 10:35 +ASM1_ora_48447_20241209103433591336143795.aud -rw-r----- 1 grid oinstall 5004258 Dec 9 10:35 +ASM1_ora_550_20241209103447768455143795.aud -rw-r----- 1 grid oinstall 1345887 Dec 9 10:35 +ASM1_ora_2702_20241209103516477262143795.aud -rw-r----- 1 grid oinstall 1617393 Dec 9 10:35 +ASM1_ora_23857_20241209103514018677143795.aud -rw-r----- 1 grid oinstall 7004692 Dec 9 10:35 +ASM1_ora_20521_20241209103433549151143795.aud -rw-r----- 1 grid oinstall 9333030 Dec 9 10:35 +ASM1_ora_55199_20241209103414213024143795.aud -rw-r----- 1 grid oinstall 1254591 Dec 9 10:35 +ASM1_ora_17325_20241209103516754201143795.aud -rw-r----- 1 grid oinstall 4866596 Dec 9 10:35 +ASM1_ora_8212_20241209103501931125143795.aud -rw-r----- 1 grid oinstall 304566 Dec 9 10:35 +ASM1_ora_48447_20241209103525092991143795.aud
每分钟产生近20个aud审计文件 3、检查审计文件
Mon Dec 9 10:36:18 2024 +08:00 LENGTH : '192' ACTION :[53] 'begin dbms_diskgroup.read(:1, :2, :3, :4); end;' DATABASE USER:[3] 'SYS' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[5] 'dmdba' CLIENT TERMINAL:[0] '' STATUS:[1] '0' DBID:[0] '' Mon Dec 9 10:36:18 2024 +08:00 LENGTH : '192' ACTION :[53] 'begin dbms_diskgroup.read(:1, :2, :3, :4); end;' DATABASE USER:[3] 'SYS' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[5] 'dmdba' CLIENT TERMINAL:[0] '' STATUS:[1] '0' DBID:[0] '' Mon Dec 9 10:36:18 2024 +08:00 LENGTH : '192' ACTION :[53] 'begin dbms_diskgroup.read(:1, :2, :3, :4); end;' DATABASE USER:[3] 'SYS' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[5] 'dmdba' CLIENT TERMINAL:[0] '' STATUS:[1] '0' DBID:[0] '' Mon Dec 9 10:36:18 2024 +08:00 LENGTH : '192' ACTION :[53] 'begin dbms_diskgroup.read(:1, :2, :3, :4); end;' DATABASE USER:[3] 'SYS' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[5] 'dmdba' CLIENT TERMINAL:[0] '' STATUS:[1] '0' DBID:[0] '' [grid@hostodb audit]$ id dmdba uid=54323(dmdba) gid=54331(dinstall) groups=54331(dinstall),54321(oinstall) [grid@hostodb audit]$
审计日志均是dmdba用户发起的,通过特权用户sys调用dbms_diskgroup.read包,该包是直接读取ASM共享存储上的文件数据流。dmdba用户是部署同步工具DMHS的操作系统用户。 所以,产生的多个审计日志是Oralce的正常审计特权用户的审计行为,而不是bug。 4、调整清理audit文件脚本
#!/bin/bash today=$(date +%Y-%m-%d-%H:%M:%S) echo "#########clear aud $today #####" >> /home/grid/scripts/clearaud_result_gi.log find /u01/product/grid/12.2.0/rdbms/audit -name "*.aud" -type f |xargs rm -rf echo "completed clear aud files." >> /home/grid/scripts/clearaud_result_gi.log 把清理audit日志脚本调整为每2h执行一次 [grid@hostodb scripts]$ crontab -l * */2 * * * sh /home/grid/scripts/del_aud.sh [grid@hostodb scripts]$
-the end-
