一、环境描述
操作系统:RHEL7.6
数据库:19.3.0.0 2节点RAC
二、问题描述
朋友说数据库启动,一个节点报如下错误:
三、问题分析
其实这个问题玩过oracle的朋友基本都遇到过,但是这个问题在12c以上可能又有点不同。
一般遇到这种问题,我们的分析思路是这样的:
先排查环境变量是否有问题,ORACLE_SID是否一致。
检查pfile是不是异常
在11gRAC的版本中,spfile的路径是指定在$ORACLE_HOME/dbs/init.ora里面的。
而在12cRAC以上版本中,$ORACLE_HOME/dbs/目录中不再有spfile和pfile文件了,如下所示:
但为什么节点2启动成功,节点1启动失败呢?
12cRAC以上版本中spfile的路径信息是配置到ASM中,我们可以通过srvctl config database -db db_name来获取,如下所示:
所以此时数据库startup读取参数文件的顺序是:
ASM里的rdbms spfile(因为asm也有spfile)->本地的spfile->本地的pfile。
因此问题也很清晰了,就是因为RDBMS无法访问ASM中的spfile,一般是因为$ORACLE_HOME/bin/oracle的权限问题:
四、问题解决
$ORACLE_HOME/bin/oracle二进制文件必须拥有6751的权限。
su - grid
cd $ORACLE_HOME/bin
chmod 6751 oracle