我更改了主数据库上的 SYS 密码,并将 orapwd 复制到备用数据库中,如文档所述。这种方法对于多个数据库效果很好,但对于一个备用数据库,几分钟后就会出现 ORA-28000。
一旦发生这种情况,Data Guard 传输就会停止,并且延迟开始增加。我必须找到并消除原因。
用户帐户位于 Oracle 目录中,只有在数据库打开时才能访问。密码存储在目录中,锁定行为由配置文件(也在目录中)控制。根据用户的个人资料,过多的错误登录尝试将导致帐户锁定和“ORA-28000 帐户已锁定”。
然而,SYS 帐户的密码位于外部文件中。过多的错误登录尝试也会导致 ORA-28000。
在Data Guard中,直接在备机上修改SYS密码是不合适的。相反,有必要将更新的主 orapwd 复制到所有备用数据库。
当 Oracle 系统帐户受到 ORA-28000 影响时,通常意味着旧密码已配置在环境中的某处。成功的故障排除需要找到旧密码。
我们的 Data Guard 网络是 Linux 上 ASM 上的 Oracle 19c RAC 主网络,以及 RAC 或独立备用网络。
我执行了以下操作:
在orapwd中复制后,出现“ORA-28000 帐户被锁定”。 Data Guard 传输和 OEM 监控停止工作。
在我们的 Data Guard 网络中,有三个备用服务器。其中两台工作正常,一台备用设备受到此问题的影响。还有其他 Data Guard 网络,它们没有问题。
尝试了以下措施:
再次将 orapwd 复制到 ASM,或者从主服务器创建一个新的 orapwd 文件,然后将该文件复制到备用服务器。这只工作了 5 分钟,然后 SYS 帐户就被锁定了。
停止两个 RAC 节点上的 OEM 代理。这解决了问题。
启动 OEM 代理并删除集群数据库和实例目标。问题又出现了。
即使从 OMS 中删除目标后,代理的 Targets.xml 仍存在有问题的数据库的恶意条目。目标条目具有旧密码:
<Property NAME="password" VALUE="{ENC S}{AES-128}57FC02D10C5F59D0F6B8
29F68FF07B6125CA5255BB642C858595" ENCRYPTED="TRUE"/>
ORA-28000 清除,Data Guard 传输恢复,目标发现顺利进行。