详情:
最近一段时间突然收到Nagios上的一条Oracle报警:
CRITICAL - ORA-28002: the password will expire within 7 days
在多方资料查询下得知是Oracle下的默认是使用系统的安全策略,这些安全策略都是写在初始化配置文件profile中,一般都是在运行Oracle的用户的家目录中
[root@localhost sql]# su - oracle
[oracle@localhost ~]$ ls -al
…略…
-rw-r--r--. 1 oracle oinstall 441 12月 23 13:44 .bash_profile
…略…
一般运行Oracle时都是给它分配普通用户权限,所以常规下普通用户的缺省密码时间是180天,到期前7天使用账号连接Oracle时会有ORA-28002的错误提示,所需要做的就是对Oracle的用户重置一次密码即可。操作也很简单:
[oracle@localhost ~]$ sqlplus / as sysdba #使用DBA账户系统身份验证
SQL> SELECT username,profile FROM dba_users; #查看用户的profile设置,一般用户的profile设置都为DEFAULT
SQL> SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME'; #查看系统profiles中PASSWORD_LIFE_TIME设置,一般默认创建的用户账户LIMIT字段一般都是‘180days’
PROFILE RESOURCE_NAME RESOURCE
------------------------------ -------------------------------- --------
LIMIT
----------------------------------------
DEFAULT PASSWORD_LIFE_TIME PASSWORD
180
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;#把Oracle默认的过期时间设置为永不过期
Profile altered.
SQL> ALTER USER username IDENTIFIED BY youpassword;#此时再重置一次快要过期的用户密码,用户密码可以和原来的一致,平时用户密码忘记也是通过DBA账户系统身份验证进入Oracle来重置用户密码
此时再用普通用户的用户密码登录Oracle就可以正常的登录,没有ORA-28002的错误提示