作者简介:

作者:LuciferLiu
中国DBA联盟(ACDU)成员。目前从事Oracle DBA工作,曾从事 Oracle 数据库开发工作,主要服务于生产制造,汽车金融等行业。现拥有Oracle OCP,OceanBase OBCA认证,擅长Oracle数据库运维开发,备份恢复,安装迁移,Linux自动化运维脚本编写等。

前言

今天,有客户私聊说他们的数据库用户密码过期了,有没有办法修改为永不过期?(数据库版本:11204)

答案:可以,Oracle这么强大,怎么可能会没考虑到这个呢,只需要修改 user profile 即可。

实操之前先来了解下概念:

1、PROFILES是什么?

PROFILES是从 Oracle 8 版本引入是一组资源限制,用于限制用户可以使用的系统资源。 它允许我们通过为每个数据库用户创建和分配配置文件来调节每个数据库用户使用的资源量。数据库创建后,系统中存在名为DEFAULT的默认PROFILE,若不做特殊指定,创建用户时用户默认使用的PROFILE就是DEFAULT。可以用来控制session或sql能使用的CPU、控制用户的密码管理策略等。

Oracle设置用户密码永不过期_password

2、PASSWORD_LIFE_TIME的作用?

注意:Oracle 11204版本的PASSWORD_LIFE_TIME默认值为180天。12C以后默认值已修改为UNLIMITED 。

PASSWORD_LIFE_TIME指定同一密码可用于用户身份验证的天数。 如果您还为 PASSWORD_GRACE_TIME 设置了一个值,则如果在宽限期内没有更改密码,则密码将过期,并且拒绝进一步的连接。 如果您没有为 PASSWORD_GRACE_TIME 设置值,其默认值 UNLIMITED 将导致数据库发出警告但让用户无限期地继续连接。

Oracle设置用户密码永不过期_oracle_02

 

解决方案:

1、检查用户所属profile

注意:需要有dba权限用户进行查询

select username,profile from dba_users where username='LUCIFER';

Oracle设置用户密码永不过期_profiles_03

2、检查DEFAULT的密码策略

SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';

Oracle设置用户密码永不过期_密码永不过期_04

3、修改密码过期天数为无限期

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

Oracle设置用户密码永不过期_DBA_05

至此,密码永不过期设置完毕。一般建议建库后,立刻更改无限期。

参考官方文档:Profiles