场景

登录数据库,提示 密码已过期。

解决方案

前提是先有system用户权限,或者可以登录数据库服务器,有sysdba权限。

查看用户的策略都是哪些(默认应该都是default):
SELECT username,PROFILE FROM dba_users;


查看策略为default,并且resource_name='PASSWORD_LIFE_TIME'的数据:
SELECT * FROM dba_profiles s
WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';

如果上面查到的规则已经是UNLIMITED,那么无需修改。 如果是限制的,那么要设置为无限制。
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

然后就可以修改密码了:
alter user user_a identified by "user_a"; # 注:这里密码要用双引号,否则报错 ORA-00988: missing or invalid password(s)

应该就可以连上数据库了。