今天在使用sqlplus登录Oracle数据库时提示密码过期了
ERROR:
ORA-28002: the password will expire within 7 days
原因
Oracle11g默认在default概要文件中设置了"PASSWORD_LIFE_TIME=180”,Oracle用户的密码必须在180天内更改,否则启动数据库时会提示连接失败
解决方法:将密码设为永不过期
- 使用具有管理权限的用户(eg. sys,system)登录
(注:这点肥肠重要!!我的情况是自己的scott用户快要过期了,而scott用户没有dba权限,在执行第二步操作时会报’ORA-00942: 表或视图不存在’错误)
sqlplus sys/<sysの密码> as sysdba
或
sqlplus system/<systemの密码>
- 查看用户的profile设置,一般是default
SELECT username,profile FROM dba_users;
- 查看指定概要文件(如default)的密码有效期,一般是180天
SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
PROFILE RESOURCE_NAME RESOURCE LIMIT
------------------------------ -------------------------------- -------- ----------------------------------------
DEFAULT PASSWORD_LIFE_TIME PASSWORD 180dys
- 将密码有效期由默认的180天修改成“无限制”
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改后设置立即生效,不需要重启数据库,此时密码永远不会过期。