解决Oracle数据库ORA-28001

        今天客户突然来找我说服务器起不来了,启动报错,我一看不得了,这可是大事,还好客户的系统面向内部,使用的人比较少,于是我让他们把日志发给我,经过查看日志,发现一段java报错日志:

Caused by: java.sql.SQLException: ORA-28001: the password has expired

        经过查资料发现,这是因为Oracle 11G在安装时默认的安全协议是密码每180天修改一次(如果我们的实施人员部署环境时不把这个修改成无限制的话,可能会在半年后对客户造成损失和给开发人员挖坑),现在,我们以sysdba权限连接数据库用下面这句SQL可以查询我们的Oracle数据库是否有每180天需要修改数据库的设置。

如果要在CMD中操作,先以sysdba连接数据库,进入Oracle自带的工具SQL Plus:

sqlplus/nolog 
conn / as sysdba;
conn sys/123@orcl as sysdba;

然后执行查询安全协议定时修改密码的设置的SQL语句查询:

SELECT * FROM DBA_PROFILES WHERE PROFILE = 'DEFAULT' AND RESOURCE_NAME = 'PASSWORD_LIFE_TIME';

(因为我这里已经修改成无限制了,之前的也没有截图,我就语言描述一下)

        查询出来看到LIMIT字段下的值是"180"的话,那就是说明当前已连接的Oracle数据库需要在每隔180天时修改用户的密码。

这时我们执行把安全协议的设置改为无限制,不限时修改密码的SQL语句:

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
COMIT;

        执行完可以再执行上面查询安全协议设置的语句,当LIMIT字段是"UNLIMITED"时就说明已经修改成功了。

然后执行修改密码过期的用户的密码的SQL语句:

ALTER USER 用户名 IDENTIFIED BY 密码;

这个时候如果用户已被锁定,需要执行解锁用户的SQL语句:

ALTER USER 用户名 IDENTIFIED BY ORACLE ACCOUNT UNLOCK;

 

转载于:https://my.oschina.net/NamiZone/blog/1840232

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值