ORA-20002: 不允许您更改关键模式的密码

ORA-20002: YOU ARE NOT ALLOWED TO CHANGE THE PASSWORD FOR CRITICAL SCHEMAS

我正在尝试更改 Oracle DB 用户的密码,但出现以下错误:

ORA-28003: password verification for the specified password
ORA-20002: YOU ARE NOT ALLOWED TO CHANGE THE PASSWORD FOR CRITICAL SCHEMAS

我尝试使用 sys 用户更改密码,但遇到了同样的错误。 数据库版本:12.2.0.1.0 客户端:SQLPlus

请帮忙

异常是由通过配置文件分配给用户的密码验证函数引发的。

您可以通过查询查看配置文件名称和正在应用的功能:

select du.profile, dp.limit
from dba_users du
join dba_profiles dp on dp.profile = du.profile
where du.username = '<YOUR_USER>'
and dp.resource_name = 'PASSWORD_VERIFY_FUNCTION';

然后,您可以使用在上一个查询中标识的名称查看其源代码,从而了解该函数实际执行的操作:

select text
from dba_source
where owner = 'SYS'
and name = '<FUNCTION_NAME>'
order by line;

从那里你可以看到它发生的时间和原因,方法是寻找像这样的一行:

raise_application_error(-20002, 'YOU ARE NOT ALLOWED TO CHANGE THE PASSWORD FOR CRITICAL SCHEMAS');

看看是什么逻辑导致它被提出。

您需要确定该规则是否(仍然)适合该用户 - 显然它存在是有原因的,因此在没有真正理解它并与 DBA 讨论的情况下不要删除它或更改用户的配置文件and/or 应用程序所有者等 - 基本上是对该用户帐户感兴趣的任何人。