游乐游手机版
首页/数据库/文章详情

Oracle RAC密码文件不同步导致登录失败的解决方法

时间:2026-07-09 07:02
在RAC环境中,密码文件必须位于ASM存储且类型为ASM,避免用orapwd在各节点单独生成。同步应通过asmcmdpwcopy或统一软链接到ASM文件实现,并设置remote_login_passwordfile=SHARED。修改SYS密码后需重建密码文件并分发至所有节点,否则导致登录失败。

在Oracle RAC环境下管理密码文件时,有几个关键点必须严格把控,遗漏任何一项都可能导致隐患。简单概括就是:确认密码文件存放在ASM存储且文件类型为ASM,切勿再用orapwd在各节点单独生成,同步操作只认asmcmd pwcopy或统一软链接指向ASM文件,并且务必把remote_login_passwordfile设为SHARED。搞定这几个环节,就能从根源上解决密码文件不同步引发的登录问题。

确认密码文件是否被集群识别为共享文件

别凭感觉猜测,直接执行查询。在grid用户下运行 srvctl config database -d ,重点关注输出中的 password file 字段。如果显示的是本地路径(如 /u01/app/oracle/product/19c/db_1/dbs/orapwcdb1),说明配置有误;若该字段为空或直接报错,则集群根本未将密码文件纳入管理。接着补充检查 select * from v$passwordfile_info;——返回结果必须仅有一行,且 type 列为 asmfile_name 是形如 +data/cdb1/password/pwdcdb1.256.123456789 的ASM路径。这一步确认无误后,后续处理才能顺理成章。

如何处理Oracle RAC环境中由于密码文件不同步导致的登录失败

避免使用 orapwd 在各节点分别生成文件

说起orapwd,这堪称19c RAC管理中极易踩雷的操作之一。在各节点分别通过orapwd生成密码文件,初衷虽好,但它创建的其实是本地独占式(EXCLUSIVE)二进制文件,内部绑定唯一的SCN及其他结构信息。即便你将文件内容完全复制过去,RAC各节点也无法跨节点共享加载。更糟糕的是,如果指定路径写成了 $ORACLE_HOME/dbs/orapw$ORACLE_SID,该文件极有可能被集群直接忽略,或启动时被ASM托管文件覆盖。最终结果是:你在一个节点修改密码后,只有该节点认新密码,其他节点依然沿用旧密码,执行 sqlplus / as sysdba 时会弹出 ORA-01017ORA-12641 这类令人头疼的错误。

只采用两种Oracle官方认可的同步方式

方式一(推荐):利用 asmcmd pwcopy 进行原子级同步。首先在主节点执行 ALTER USER sys IDENTIFIED BY newpass;(此步骤后面还会再强调),然后通过 asmcmd pwcopy +DATA/CDB1/PASSWORD/pwdcdb1.256.123456789 /tmp/pwdcdb1 将文件导出,经scp传输至其他节点,再反向执行 pwcopy /tmp/pwdcdb1 +DATA/CDB1/PASSWORD/pwdcdb1.256.123456789。注意:必须使用 pwcopy 而非 cp,否则文件的元数据和内部校验可能损坏,导致文件拷贝成功但实际无效。

方式二(最稳妥):统一创建软链接指向ASM文件。让所有节点的 $ORACLE_HOME/dbs/orapw$ORACLE_SID 均指向同一ASM路径,例如执行 ln -sf +DATA/CDB1/PASSWORD/pwdcdb1.256.123456789 $ORACLE_HOME/dbs/orapwcdb1。此软链接必须由 oracle 用户创建,同时确保 remote_login_passwordfile=SHARED 已生效,通过 srvctl modify database -d cdb1 -p "remote_login_passwordfile=SHARED" 完成设置。

修改SYS密码后必须重新生成并分发,不能仅依赖 ALTER USER

很多人以为,在某个节点上执行一条 ALTER USER sys IDENTIFIED BY xxx 就万事大吉。实则不然——该命令只更新数据字典中的记录,密码文件并未发生任何变化。RAC各节点间的密码文件不会自动同步,DG主备之间也不会复制。因此,修改SYS密码后,必须立即用 orapwd 重建密码文件,参数中加入 file='+DATA/ORCL/PASSWORD/pwdrac19c' format=12.2 force=y,然后通过 pwcopy 或软链接方式覆盖所有节点。对于RAC多节点、DG主备多实例的场景,每个实例名对应的 orapw 都必须严格匹配,遗漏任何一个就会引发 ORA-16191 等同步错误。

还有一个容易忽略的细节:密码文件的时间戳更新了,并不代表内容也随之更新。即使你刚刚把文件拷贝过去,若未使用 force=y 重建或未走 pwcopy 流程,文件中存储的仍可能是旧口令。这一点千万不要想当然。

来源:https://www.php.cn/faq/2784778.html
上一篇MongoDB 4.4 unionWith 联表查询使用详解 下一篇Oracle存储过程日志打印及高性能日志表设计方案
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
MySQL主从复制表结构不一致错误修复方法
数据库 · 2026-07-17

MySQL主从复制表结构不一致错误修复方法

MySQL主从复制中表结构不一致会导致SQL线程中断,报错ERROR1054或1146。可通过mysqldump--no-data对比结构差异,在从库执行ALTERTABLE前需确保主库无写入、停止从库并验证同步。pt-table-checksum能间接发现不兼容问题,建议定期检查。

phpMyAdmin主题解压后不被系统识别的解决方法
数据库 · 2026-07-17

phpMyAdmin主题解压后不被系统识别的解决方法

phpMyAdmin主题解压后无法识别,常见原因:目录结构错误、配置文件缺失或Web服务器权限不足。主题目录须直接置于themes 根下,并包含theme json或info inc php;$cfg[ ThemePath ]必须正确,且Web服务器应允许访问静态资源,确保主题文件夹名称正确且无多余嵌套。

如何在MySQL中安全地给已有表添加自增主键的方法
数据库 · 2026-07-17

如何在MySQL中安全地给已有表添加自增主键的方法

直接给已有表添加自增主键易因已有主键、NULL值或重复数据失败。MySQL8 0+推荐用ROW_NUMBER()分步生成序号,或显式指定ALGORITHM=INPLACE降低锁影响。大表可建新表后原子重命名切换。需验证字段非空与唯一性。

用SQL触发器自动维护社交应用粉丝数和关注数
数据库 · 2026-07-17

用SQL触发器自动维护社交应用粉丝数和关注数

社交应用中,应在关注关系表上创建触发器,通过INSERT和DELETE自动更新用户表的粉丝数和关注数,避免频繁COUNT(*)查询的性能瓶颈,同时配合数据校验与监控机制,确保数据一致性。

MySQL为什么需要空间索引来处理多维地理数据
数据库 · 2026-07-17

MySQL为什么需要空间索引来处理多维地理数据

MySQL中普通B-tree索引对POINT字段无效,因WKB二进制格式不支持字典序比较。空间查询依赖R-tree索引,通过剪枝将扫描量从O(n)降至O(logn)。建空间索引需字段为空间类型、NOTNULL且存储引擎支持。MBRContains快速粗糙,需配合ST_Contains精筛。坐标须统一用WGS84。