Oracle用户密码过期但SYS执行ALTER USER时报ORA-01918问题求助
Oracle密码过期但SYS提示用户不存在的问题解决
问题原因
你登录时使用的服务名指向的是可插拔数据库(PDB),目标用户是在这个PDB下创建的;而你以SYS身份登录时默认进入的是容器数据库(CDB)的根容器(CDB$ROOT),根容器中不存在该普通用户,因此执行ALTER USER会触发ORA-01918错误。
解决步骤
确认当前SYS会话所在容器:
SHOW CON_NAME;若返回
CDB$ROOT,说明处于根容器,需切换到目标PDB。查询所有可插拔数据库的状态:
SELECT NAME, OPEN_MODE FROM V$PDBS;找到用户所在的PDB(例如
PDBORCL),若其状态不是READ WRITE,先打开该PDB:ALTER PLUGGABLE DATABASE PDBORCL OPEN READ WRITE;切换到目标PDB:
ALTER SESSION SET CONTAINER = PDBORCL;修改用户密码:
ALTER USER username IDENTIFIED BY "newpassword";注:若密码包含特殊字符或需区分大小写,必须用双引号包裹;同时需符合数据库的密码复杂度规则。
(可选)设置密码永不过期并解锁账户:
ALTER USER username IDENTIFIED BY "newpassword" ACCOUNT UNLOCK PASSWORD EXPIRE NEVER;
内容的提问来源于stack exchange,提问作者user21967510
相关产品推荐
相关产品推荐

