正如 Rice 上面提到的,用户 ORDS_PUBLIC_USER 必须从到期中释放。在使用容器数据库时,此用户可以存在于容器数据库和根数据库中。您必须检查根数据库,在那里它也不能过期。
Cioanta 建议的重新安装不是一个可持续的解决方案。错误的主要原因是 ORDS_PUBLIC_USER 被分配给 DEFAULT 用户配置文件,因此它的密码在 180 天后过期。这应该为连接服务的非交互式用户提供,即使它是 oracle 设置脚本之后的默认设置。
为避免每 180 天出现复发问题,请执行以下操作:
select profile from DBA_USERS where username = 'ORDS_PUBLIC_USER';
--> DEFAULT
select * from V$PARAMETER where name like 'common_user_prefix';
-- > C##
CREATE PROFILE C##UNLIMITED_PWD_EXPIRATION LIMIT
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL UNLIMITED
CONNECT_TIME UNLIMITED
IDLE_TIME UNLIMITED
SESSIONS_PER_USER UNLIMITED
LOGICAL_READS_PER_SESSION UNLIMITED
LOGICAL_READS_PER_CALL UNLIMITED
PRIVATE_SGA UNLIMITED
COMPOSITE_LIMIT UNLIMITED
PASSWORD_LIFE_TIME UNLIMITED
PASSWORD_GRACE_TIME DEFAULT
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_LOCK_TIME 1
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION_11G;
-- optional, ist hier ja schon gesetzt
alter profile <User_profile> limit password_life_time UNLIMITED;
ALTER USER ORDS_PUBLIC_USER PROFILE C##UNLIMITED_PWD_EXPIRATION;
SELECT username, account_status, created, lock_date, expiry_date FROM dba_users where username = 'ORDS_PUBLIC_USER';
-- no expiration date set nomore