ORA-28001: the password has expired 错误处理--修改密码并设置永久有效

问题描述

登录数据库时遇到错误ORA-28001: the password has expired

原因分析

用户密码设置了过期时间

处理方式

治标:重置过期用户密码
治本:设置密码过期策略

实操演示

1、登录到oracle的服务器,切换到oracle 用户

# su - oracle

2、如果当前服务器安装多个实例,需要切换当前操作的实例名

$ echo $ORACLE_SID       --查看当前操作实例
$ export ORACLE_SID=XXX  --切换至指定实例

3、以dba身份登录

$ sqlplus / as sysdba

4、修改过期的用户密码

alter user XXX identified by XXX;

修改用户密码之后,重新使用修改的密码连接数据库就可以了。如果还有被锁定的用户,需要执行如下解锁命令:

alter user  XXX unlock;

5、设置密码永不过期

1)查看用户的 proifle 是哪个(一般是default)

SQL> SELECT username,PROFILE FROM dba_users;

USERNAME    PROFILE
------------------------------------------------------------
SYS         DEFAULT
SYSTEM      DEFAULT
ZABBIX      DEFAULT
......

2)查看对应的概要文件(如default)的密码有效期设置(一般默认为180天)

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

PROFILE   RESOURCE_NAME       RESOURCE_TYPE  LIMIT
------------------------------------------------------------
DEFAULT   PASSWORD_LIFE_TIME  PASSWORD       180

3)将概要文件(如default)的密码有效期由默认的“180天”修改为“无限制”

SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

Profile altered.

4)修改之后不需要重启动数据库,会立即生效

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

PROFILE   RESOURCE_NAME       RESOURCE_TYPE  LIMIT
------------------------------------------------------------
DEFAULT   PASSWORD_LIFE_TIME  PASSWORD       UNLIMITED

猜你喜欢

转载自blog.csdn.net/Ruishine/article/details/121630624