当前位置: 首页
数据库
Oracle RAC密码文件不同步导致登录失败的解决方法

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

热心网友 时间:2026-07-09
转载

在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

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
SQL嵌套查询与窗口函数结合使用技巧

SQL嵌套查询与窗口函数结合使用技巧

窗口函数不能直接用于WHERE、GROUPBY或HAVING,需先放入子查询或CTE计算,再在外层引用。典型错误如WHERE中写ROW_NUMBER(),需先用子查询生成编号再过滤。窗口函数排序必须显式写在OVER子句中,CTE比嵌套子查询更可靠。

时间:2026-07-18 18:17
phpMyAdmin导出的Laravel SQL文件生产环境报错原因

phpMyAdmin导出的Laravel SQL文件生产环境报错原因

当使用phpMyAdmin工具导出SQL文件时出现报错,最常见的主要原因包括MySQL版本不匹配(例如8 0特有语法用于5 7)、时区设置语句导致错误、字符集编码不一致等。推荐的解决方法主要包括:注意需要仔细检查文件头部注释内容尤其是版本号,避免使用高版本特有语法,请务必删除SETtime_zone这行语句,并将字符集统一设置为utf8mb4编。

时间:2026-07-18 18:16
MySQL读已提交RC隔离级别减少间隙锁死锁原理

MySQL读已提交RC隔离级别减少间隙锁死锁原理

RC隔离级别默认不加间隙锁,只对命中行加记录锁,通过半一致性读减少锁竞争,且执行后立即释放未命中行的锁,降低了死锁概率。RR隔离级别默认加临键锁,扫描范围全加锁并保持到事务结束,死锁风险更高。但RC在唯一键冲突等场景下仍可能隐式加间隙锁。

时间:2026-07-18 18:16
MySQL批量更新表中特定字段值的方法

MySQL批量更新表中特定字段值的方法

批量更新MySQL表字段,推荐使用CASEWHEN、INSERT…ONDUPLICATEKEYUPDATE或UPDATEJOIN,避免逐行循环。注意语法正确、类型统一,单次更新控制500-1000行,超10万行需分片提交并显式提交事务。

时间:2026-07-18 18:16
phpMyAdmin查询窗口为何无法执行超30秒SQL

phpMyAdmin查询窗口为何无法执行超30秒SQL

phpMyAdmin超时源于$cfg[ ExecTimeLimit ]默认30秒,修改php ini无效,需在config inc php中设为0。MySQL的max_allowed_packet不足也会导致假性超时,需调整配置并重启服务。命令行导入可绕过Web层限制。

时间:2026-07-18 18:16
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜