本篇文章关键字:linux、oracle、审计、ORA-09925
一、故障现像
朋友找到我说是他们备份软件上报错。
问题比较明显,ORA-09925,看起来就是空间不足导致的
二、问题分析过程
这里说一下逐步的分析思路,有个意外提前说一下就是我以为是数据库实例的审计满了,实际上是ASM实例的审计满了,大家仔细看故障现象就能看出来报错的是+ASM2。
1、检查下磁盘空间有没有满,确定一下审计目录位置
df -h检查一下磁盘空间情况,发现/目录没有耗尽
2、检查下INODE有没有耗尽,df -i查看inode也没有耗尽
3、检查审计目录内文件数量有没有超过上限
登录到审计目录检查,只有166个文件
这里是因为审计文件有一个上限值,超过了也会报没有空间。
4、检查系统表空间有没有满的
审计FGA可能在system表空间,也可能做过迁移到别的表空间。检查发现也没都没问题
5、检查审计目录权限,也是oracle权限,用户也有写入权限
这就奇怪了,沟通了一下,数据库的告警日志还没有报ORA-09925错误。
问题出在哪里呢?仔细再看一下报错日志,发现先入思维为主,分析错了对象,原来是+ASM2实例报错,
三、解决问题
检查GI的安装目录下的审计文件,发现数量巨大,于是进行一下清空就好了
这里由于文件数量太大,直接rm肯定会报错Argument list too long的错误,那么提供了2个方法
方法1:
结合find命令来进行删除
find /u01/app/11.2.0/gird/rdbms/audit/ -name "*.aud" |xargs rm -r
方法2:
创建一个空目录
mkdir /home/gird/empty_dir
rsync -a --delete /home/gird/empty_dir/ /u01/app/11.2.0/gird/rdbms/audit/
最后推荐设置个定时任务定期删除AUD文件来彻底解决,这家的备份软件会直接读ASM来进行数据库备份,会导致产生大量的审计文件。
这里推荐看一下官方文档的《Manage Audit File Directory Growth with cron-Document 1298957》
也可以自己写一个都行。