在使用Oracle 11g数据库时,经常会遇到账号相关的报错,其中ORA-28002和ORA-28000是最常见的问题,前者提示密码即将过期,后者代表用户因为密码输错次数过多被锁定,两类问题都和默认的default profile配置相关。

一、问题原因分析
Oracle 11g默认会创建名为DEFAULT的profile,这个配置会限制用户的密码有效期、密码错误锁定次数等规则。默认情况下,密码有效期是180天,密码错误超过10次就会锁定用户,当密码剩余有效期不足7天时就会触发ORA-28002提示,输错次数达到阈值就会触发ORA-28000错误。
二、查看当前default profile配置
首先需要查看当前default profile的具体规则,确认相关参数的当前值,执行以下SQL语句:
-- 查看default profile的密码相关配置 SELECT profile, resource_type, resource_name, limit FROM dba_profiles WHERE profile = 'DEFAULT' AND resource_type = 'PASSWORD';
执行后会返回类似如下的结果,重点关注PASSWORD_LIFE_TIME(密码有效期,单位天)、FAILED_LOGIN_ATTEMPTS(允许输错密码次数)、PASSWORD_LOCK_TIME(锁定时间,单位天)这几个参数。
三、修改default profile解决密码过期问题
如果不想让密码过期,可以将PASSWORD_LIFE_TIME设置为无限制,执行以下SQL:
-- 修改密码有效期为无限制,解决ORA-28002问题 ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改后已经出现ORA-28002提示的用户,只需要重新修改一次密码即可消除提示,执行语句如下:
-- 修改指定用户的密码,替换username和new_password为实际值 ALTER USER 用户名 IDENTIFIED BY 新密码;
四、解决用户被锁定的问题
如果用户已经被锁定,首先需要解锁用户,然后可以根据需求调整允许输错密码的次数,避免后续再次被锁:
-- 解锁被锁定的用户,替换username为实际用户名 ALTER USER 用户名 ACCOUNT UNLOCK; -- 可选:修改允许输错密码的次数为无限制,避免ORA-28000问题 ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED; -- 可选:修改锁定时间为1小时,而不是默认的天数 ALTER PROFILE DEFAULT LIMIT PASSWORD_LOCK_TIME 1/24;
五、注意事项
- 修改default profile会影响所有使用这个profile的用户,如果是生产环境,建议先评估影响范围再操作。
- 如果只针对单个用户调整规则,可以新建一个自定义profile分配给该用户,而不是直接修改default profile。
- 修改配置后不需要重启数据库,设置会立即生效。
提醒:如果是严格的安全合规场景,不建议将密码有效期设置为无限制,可以根据实际需求调整为更长的天数,比如365天,平衡安全性和使用便利性。
Oracle_11gORA-28002ORA-28000default_profile密码过期修改时间:2026-06-01 22:07:39