Oracle默认在default概要文件中设置了“PASSWORD_LIFE_TIME=180天”,导致密码过期,程序无法使用,业务进程会提示无法连接数据库等字样。
--查询默认密码过期时间 SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
密码过期规则是用Profile来管理的,系统默认只有一个Profile(DEFAULT),通过下面语句可查看到几乎所有的用户都使用该DEFAULT的profile,所以如果修改DEFAULT的过期规则会影响所有的用户。
--查询系统用户所使用的proifle SELECT username,PROFILE FROM dba_users;
所以,修改分为两种:
1. 修改所有用户的密码永不过期
--修改所有用户的密码过期时间为无限制 ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改之后会立即生效,还没有被提示ORA-28002警告的帐户不会再碰到同样的提示,已经被提示的帐户必须再改一次密码。
--再修改一次密码 alter user scott identified by 1234; --1234为scott用户原来的密码
2. 修改某个用户密码永不过期
需要三步:
1. 新建profile "TOOL_UNLIMITED",规则与DEFAULT一致(因为一个profile中包含很多的项目,我们此时只修改过期规则,其他的不变)
--创建新的profile(TOOL_UNLIMITED)复制DEFAULT的Script CREATE PROFILE "TOOL_UNLIMITED" LIMIT SESSIONS_PER_USER UNLIMITED CPU_PER_SESSION UNLIMITED CPU_PER_CALL UNLIMITED CONNECT_TIME UNLIMITED IDLE_TIME UNLIMITED LOGICAL_READS_PER_SESSION UNLIMITED LOGICAL_READS_PER_CALL UNLIMITED COMPOSITE_LIMIT UNLIMITED PRIVATE_SGA UNLIMITED FAILED_LOGIN_ATTEMPTS 10 PASSWORD_LIFE_TIME 180 PASSWORD_REUSE_TIME UNLIMITED PASSWORD_REUSE_MAX UNLIMITED PASSWORD_LOCK_TIME 1 PASSWORD_GRACE_TIME 7 PASSWORD_VERIFY_FUNCTION NULL;
2. 修改profile "TOOL_UNLIMITED",修改过期规则为UNLIMITED
--修改新建的profile(TOOL_UNLIMITED),密码过期为不过期 ALTER profile TOOL_UNLIMITED limit PASSWORD_LIFE_TIME UNLIMITED;
3. 将'TOOL'用户适用新的profile "TOOL_UNLIMITED"
--修改用户的Profile为新的profile alter user TOOL profile TOOL_UNLIMITED;