1 、故障描述
某次某客户 Oracle 19c RAC环境, 补丁升级到 19.24 后,无法正常启动数据库 实例 。
2 、根因分析
a) 数据库启动异常
在使用 `spfile` 启动数据库时,数据库只能启动到 `NOMOUNT` 状态,无法继续打开。
A lert报错:ASMB进程报错, 尝试读取 ASM 磁盘时失败,导致无法完成正常启动。

b) 权限问题怀疑
一开始怀疑是 `$ORACLE_HOME/bin` 目录下的 o racle 执行文件权限出现问题。尽管文件权限确认正常,但为了排查潜在问题,手动调整了文件权限并恢复正常。
chmod 6751 oracle
但几小时后,服务器重启,数据库再次无法启动,依旧只能启动到 `NOMOUNT` 状态。
c) 报错信息
在尝试将数据库启动到 `MOUNT` 状态时,出现了以下报错: ORA - 01017: invalid username/password; logon denied
起初以为是权限问题再次出现,手动修改权限后依然无法启动。

查找 MOS(My Oracle Support)文档后,发现 Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(`oracle`)和集群管理用户(`grid`)在某些情况下没有被正确加入到必要的组中,导致权限问题,从而影响数据库启动。
MOS 号:[2919585.1](https://support.oracle.com) 文档中指出,在打上 19.23 或以上版本的补丁后,Oracle 相关用户(`oracle` 和 `grid`)的组权限可能会被修改,导致无法正常启动数据库。

3 、解决方案
经过分析后,发现确实是用户组权限问题导致的数据库启动失败。为了解决此问题,按照以下步骤进行了处理:
1) 添加用户到必要的组
确保 `oracle` 用户和 `grid` 用户均被正确添加到 `oinstall` 组中,这是 Oracle 数据库和 Grid 控制集群所需的最基本权限组。
修改前:

修改后:
执行以下命令,将 `oracle` 和 `grid` 用户添加到 `oinstall` 组:
usermod
-
a
-
G oinstall grid
usermod
-
a
-
G oinstall oracle

2) 重启数据库
完成用户组权限修改后,重启数据库实例,确保新修改的权限生效。
3) 数据库成功启动
修改完权限并重启数据库后,数据库成功启动,并恢复到正常的 `OPEN` 状态。
