暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

AIX中Oracle数据库报错 ORA-48180 ,aix Not owner

原创 杨久直 2020-06-01
1302

故障现象
巡检中发现数据库alert日志中报错 
ORA-48180 caught while writing to trace file “/u01/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_ckpt_3331280.trc”  
IBM AIX RISC System/6000 Error:1 Not owner

原因排查
检查日志文件权限,发现 /u01/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_ckpt_3331280.trc  权限为  -rw-r–r--  root:system

可以确定为日志文件权限原因导致ORACLE进程无权限对日志进行写操作。到此基本可以关闭问题了。但是作为DBA不可以放过任何一个数据库的报错,必须找到问题根源,到底是什么原因导致权限变更的。

1、有用户手动变更文件权限  (有可能 查到是谁,打死)

2、有Oracle日志进程运行的权限是root(一般不太可能 ps -ef可以查看)

3、。。。

检查整个目录后发现权限为root的trc文件,偶尔出现。没有固定的进程特征。但是内容均被清空,只有一个字符 1 ,创建时间也为 17:00 。突然想起来,之前同事部署了自动清理trace目录下日志的脚本,是用root用户执行的。

同事部署的脚本如下

crontab -l

0 17 * * * sh find /u01/app/oracle/diag/rdbms/orcl/orcl1/trace/ -mtime +1 -name “orcl*” -exec rm -rf {} ;

0 17 * * * sh del.sh

cat del.sh

for b in ‘find /u01/app/oracle/diag/rdbms/orcl/orcl1/trace/ -mmin +60 -name “orcl*”’

do

echo “1” > $b

done

看起来两个自动执行的任务没什么问题,一个是清空60分钟前日志的(12C的数据库 有个日志暴增的BUG,要打补丁,所以曲线救国),一个是rm 删除一天前日志的。但是问题就在这两个脚本中。

1、删除的脚本并不会更改权限

2、清空日志的追加 > 符 也不会更改用户权限。但是追加符如果文件不存在的话会重新创建文件。

到这问题就有眉目了。经过验证原因是 日志文件被rm任务删除了后,追加脚本又重新创建了文件。并且权限为root:system

因为两个命令同时执行,find命令同时获取trace目录内文件,清空的是60分钟前的 (包含删除的文件),删除的是1天前的,难免就有文件在清空之前被删除。然后再去执行清空命令时就会重新创建一个同名的属主为root用户日志文件,等到Oracle进程要再次写入该日志文件时就会报错 ora-48180和IBM Not owner。

解决办法
有两种

1、更改脚本执行的用户,将两个脚本均改为Oracle用户执行

2、更改脚本执行顺序,先执行追加清空脚本,清空脚本执行结束再执行rm删除命令

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论