开发登录数据库时报如下错误:
ERROR:ORA-28002: the password will expire within 7 days
原来Oracle 11g 之前默认的profile是没有密码过期的限制的,在Oracle 11g 中默认的profile启用了密码过期时间是180天,去除这个限制便可。
查询默认的profile的密码过期参数的设置
sys@ www.linuxidc.com>select * from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';
PROFILE RESOURCE_NAME RESOURCE LIMIT
------- ------------------ -------- ------
DEFAULT PASSWORD_LIFE_TIME PASSWORD 180
设置default profile密码永不过期,立即生效,不需重启
sys@ www.linuxidc.com>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
Profile altered.
对于已经过期的,要重新设置密码,可以和之前的密码一样
sys@ www.linuxidc.com>alter user APP identified by xxxapp;
User altered.
顺便解释一下和密码相关的参数:
sys@ www.linuxidc.com>select * from dba_profiles where profile='DEFAULT' and RESOURCE_NAME like 'PASSWORD%';
PROFILE RESOURCE_NAME RESOURCE LIMIT
------------------------------ -------------------------------- -------- -----------
DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10
DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED
DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL
DEFAULT PASSWORD_LOCK_TIME PASSWORD 1
DEFAULT PASSWORD_GRACE_TIME PASSWORD 7
FAILED_LOGIN_ATTEMPTS 整数
设定登录到ORACLE 数据库时可以失败的次数。一旦某用户尝试登录数据库的达到该值时,该用户的帐户就被锁定,只能由DBA能解锁。
PASSWORD_LIFE_TIME
设定口令的有效时间(天数),一旦超过这一时间,必须重新设口令。缺省为UNLIMITED.
PASSWORD_REUSE_TIME
许多系统不许用户重新启用过去用过的口令。该资源项设定了一个失效口令要经过多少天,用户才可以重新使用该口令。缺省为UNLIMITED.
PASSWORD_REUSE_MAX
重新启用一个先前用过的口令前必须对该口令进行重新设置的次数(重复用的次数)。
PASSWORD_LOCK_TIME
设定帐户被锁定的天数(当登录失败达到FAILED_LOGIN_ATTEMPTS时)。
PASSWORD_GRACE_TIME
设定在口令失效前,给予的重新设该口令的宽限天。当口令失效之后回,在登录时会出现警告信息显示该天数。如果没有在宽限天内修改口令,口令将失效。
PASSWORD_VERITY_FUNCTION
该资源项允许调用一个PL/SQL 来验证口令。ORACLE公司已提供该应用 的脚本,但是只要愿意的话,用户可以制定自己的验证脚本。该参数的设定就是PL/SQL函数的名称。缺省为NULL.