必须用srvctl和v$passwordfile_info确认密码文件为ASM路径且TYPE=ASM,禁用orapwd本地生成;仅允许asmcmd pwcopy原子同步或统一软链接至ASM文件,并确保remote_login_passwordfile=SHARED。
别靠猜,直接查。在 grid 用户下执行:srvctl config database -d <db_unique_name>,重点看输出中 password file 字段。如果显示的是本地路径(如 /u01/app/oracle/product/19c/db_1/dbs/orapwcdb1),说明配置错误;如果为空或报错,说明集群根本没加载密码文件。再补查一次:select * from v$passwordfile_info;——返回必须有且仅有一行,type 列值必须是 asm,file_name 是类似 +data/cdb1/password/pwdcdb1.256.123456789 的 asm 路径。
orapwd 在各节点分别生成文件orapwd 在 19c RAC 中不能用于同步,这是最常踩的坑。它生成的是本地独占式(EXCLUSIVE)二进制文件,含唯一 SCN 和内部结构绑定,哪怕内容一致,RAC 也无法跨节点共享加载。更糟的是:若你指定路径为 $ORACLE_HOME/dbs/orapw$ORACLE_SID,该文件会被集群忽略或启动时被 ASM 托管文件覆盖。现象就是改完密码后,只有当前节点生效,其他节点仍认旧密码,sqlplus / as sysdba 报 ORA-01017 或 ORA-12641。
方式一(推荐):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 是符号链接,例如: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")。
ALTER USER
ALTER USER sys IDENTIFIED BY xxx 只更新数据字典,不写入密码文件。RAC 各节点密码文件不会自动同步,DG 主备之间也不复制。所以改完密码,必须立刻用 orapwd 重建(orapwd file='+DATA/ORCL/PASSWORD/pwdrac19c' format=12.2 force=y),然后把新文件通过 pwcopy 或软链接方式覆盖所有节点。RAC 多节点、DG 主备多实例,每个实例名对应的 orapw<INSTANCE_NAME> 都得严格匹配,漏一个就会触发 ORA-16191。
最容易被忽略的是:密码文件时间戳新 ≠ 内容新。哪怕文件是刚拷过去的,如果没用 force=y 重建或没走 pwcopy,里面还是旧口令。
MIBR 与 Nongshim 拿下 EWC 季后赛最后两席
克里斯托弗·诺兰作品《致命魔术》将重返影院
TP-Link Deco 7 Pro BE10000 Wi-Fi 7 全屋 Mesh 系统 6.4 折优惠现享
《自由足球怀旧服》大乱斗模式开启:强势中场登场:S3赛季任务及奖励重磅更新!
网易冷兵器新作《诡影藏锋》实机首曝:女鬼魅惑,恐怖拉满
炉石传说: Escape from Violet Hold 今日上线——探索游戏背后的人生哲理