在 Oracle RAC 中,ASM 无法启动通常是由于以下几个原因:
- ASM 实例启动脚本中指定的用户名或密码错误。
- ASM 实例所在的 Oracle home 中 tnsnames.ora 文件中指定的用户名或密码错误。
- ASM 实例所在的 Oracle home 中 sqlnet.ora 文件中指定的认证方式错误。
在本文中,我们将讨论第三种情况,即 ASM 实例所在的 Oracle home 中 sqlnet.ora 文件中指定的认证方式错误导致 ASM 无法启动的问题。
问题描述
在本文中,我们将使用以下场景来进行说明:
- 集群中包含两个节点,分别为 node1 和 node2。
- ASM 实例所在的 Oracle home 为 /u01/app/11.2.0.4/grid。
- sqlnet.ora 文件中指定的认证方式为 TCPS 和 NTS。
在这种情况下,当我们尝试启动 ASM 实例时,会出现以下错误:
[ora.asm][3219122496]{0:0:2} [start] ORA-01017: invalid username/password; logon denied
问题分析
在 Oracle RAC 中,ASM 实例使用 SYSASM 用户登录。当我们在 sqlnet.ora 文件中指定的认证方式为 TCPS 和 NTS 时,ASM 实例将使用 TCP 协议连接到 Oracle Listener 进行身份验证。
在这种情况下,如果 ASM 实例所在的 Oracle home 中 tnsnames.ora 文件中指定的用户名或密码错误,则 ASM 实例将无法连接到 Oracle Listener,并会出现 ORA-01017 错误。
解决方案
要解决此问题,我们需要将 sqlnet.ora 文件中指定的认证方式修改为 NTS。
修改 sqlnet.ora 文件后,重启 ASM 实例,ASM 实例将能够正常启动。
修改 sqlnet.ora 文件
在 sqlnet.ora 文件中,找到以下行:
SQLNET.AUTHENTICATION_SERVICES = (TCPS,NTS)
将其修改为:
SQLNET.AUTHENTICATION_SERVICES = (NTS)
重启 ASM 实例
在修改 sqlnet.ora 文件后,需要重启 ASM 实例才能使修改生效。
在 node1 和 node2 节点上,执行以下命令重启 ASM 实例:
crsctl stop asm
crsctl start asm
验证 ASM 实例是否启动成功
在 node1 和 node2 节点上,执行以下命令验证 ASM 实例是否启动成功:
crsctl status asm
如果 ASM 实例启动成功,则将显示以下输出:
ASM is running
总结
在 Oracle RAC 中,ASM 实例无法启动通常是由于以下几个原因:
- ASM 实例启动脚本中指定的用户名或密码错误。
- ASM 实例所在的 Oracle home 中 tnsnames.ora 文件中指定的用户名或密码错误。
- ASM 实例所在的 Oracle home 中 sqlnet.ora 文件中指定的认证方式错误。
在本文中,我们讨论了第三种情况,即 ASM 实例所在的 Oracle home 中 sqlnet.ora 文件中指定的认证方式错误导致 ASM 无法启动的问题。解决此问题的方法是将 sqlnet.ora 文件中指定的认证方式修改为 NTS,并重启 ASM 实例。




