今天遇到了一个奇怪的现象,记录一下。在用sqlplus / as sysdba 连接oracle数据时,报了个错 :ORA-09925 unable to create audit trail file Linux-x86_64 Error:30: Read-only file system.
数据库连不上了,当时冷汗都出来了,不过还好是测试库,不是生产库。那么好办了,我可以折腾了!但是数据库已经挂了,告警日志也没有找到相关的报错,那就只好开始排错了,一个一个来!!!!
首先跟审计有关,因为无论数据库有没有开审计功能,只要以sysdba的角色登录是都会被强制审计,审计文件无法写入那肯定有问题,第一时间想到先看下审计目录是不是有问题。
数据库没起来 ,审计目录在哪了呢?我是记不得了,那怎么办呢?只好看参数文件了,数据库用的是spfile 二进制的参数文件根本看不看懂,还好命令转换,strings spfile<oracle_sid>.ora 找到了参数文件路径。切换到审计目录,发现审计目录存在,权限也没有问题。问题没有解决!!!
我靠这可如何是好呢?
那么接下来为什么是只读文件系统,我试着往审计目录写文件,发现根本写不了,换root用户 依然写不 了。因为oracle安装在/目录下,所以用root在/目录创建文件也不行,报同样的错 read-only file system ,只读文件系统。那问题来了!!!
排查磁盘空间是否不足,df -Th 总共400G 才用 80G ,跳过!当时想卸载根目录重新挂载,但是发现/root 没有分开挂载,所以不敢冲动,接下只能看看挂载情况。mount 一看 全是 rw 也没有问题。那就奇怪了。该看的地方都看了。问题依然没有解决!
百度上一看大概也是这些思路,有的朋友说是不是磁盘坏了,但是我觉得磁盘坏了不应该报read-only 这种错。
剩最后一个办法!
重启!!!
说不定是操作系统自检呢在!锁定了文件系统!!
出个通知,重启服务器!
果然,思路对了。重启之后,问题解决!!!!!!
总结:遇事冷静对待,多想想问题发生的可能性,是在不行就百度,或者问身边的朋友。三个臭皮匠顶一个诸葛亮。办法总比困难多。
谢谢观赏!!!!