非oracle用户无法运行sqlplus

今天收到一个case,客户说我们打完PSU之后,他们的sqlplus就无法使用了,报错为:

检查该lib文件的权限:

发现该文件的权限是对于other是0。非oracle用户没有这个文件的权限。

进一步对比这个文件的更改时间和PSU的时间:

我们看到PSU的时间确实和这个文件的更改时间是吻合的。

开了SR给oracle,oracle在实验环境中重做了该PSU,发现2个问题:
(1)数据库版本是11.1的,应该是11.1的opatch,而不是我们用的11.2.
(2)即使是用11.1或11.2的opatch打,文件的权限也是不会改的。

那么为什么这个文件的权限会更改?是手工更改的?

后续有别的故障发生,已经有好几个数据库,也是打完PSU之后,非oracle的用户无法执行sqlplus了,但是在打PSU的过程中,没有人去手工改过那个文件的权限,patch的log也是显示成功。这是怎么回事?

随着进一步的调查,发现上述数据库的oracle用户,在.profile中,umask由于安全的原因,在前段时间都已经被改成027,而不是安装时,oracle文档要求的022。这样,当进行patch时候,该lib文件会被删除,在重新生成一个,在重新生成的时候,按照027的权限,就变成了other为0的权限了。

结论:不要轻易更改oracle用户的umask。保持其在安装时候的要求。

相关文章

5条评论

  1. 解决办法,应该是从新设置umask 022,再修改libclntsh.so.11.1的权限,不知道是不是这样.

  2. 解决办法最好的就是rollback该PSU,重新设置umask,再重新打patch。但是从方便的角度出发,可以直接改权限,不影响数据库的正常运行的。

  3. re 北在南方: 数据库的版本是是11.1 。问题是出现在我们升级PSU的时候,在升级PSU时umask设置错误。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据