java.sql.SQLException: ORA-28000: the account is locked

1、现象:项目启动时报了“the account is locked”–用户账号被锁

2、查询oracle相关文档,用户账户被锁可能的产生原因如下:

 1. 尝试多次登录未成功(可能密码不正确);
 2. 此用户被管理员手工锁定;
 3. 用户密码到期、未按时修改密码,等等。

根据自己的情况,第一感觉是因为用户密码到期,然后自己进行的验证过程,如下:

第一步:查询用户的proifle
查询用户的proifle

第二步:查看指定概要文件(如default)的密码有效期:
查看密码有效期

第三步:将密码有效期由默认的180天修改成“无限制”(修改之后不需要重启动数据库,会立即生效
这里写图片描述

修改成功之后,还是发现还是不能登录!
以上用到的sql:

–查看用户的proifle是哪个,一般是default
SELECT username,PROFILE FROM dba_users;

–查看指定概要文件(如default)的密码有效期设置
SELECT * FROM dba_profiles s WHERE s.profile=’DEFAULT’ AND resource_name=’PASSWORD_LIFE_TIME’;

–将密码有效期由默认的180天修改成“无限制”: 修改之后不需要重启动数据库,会立即生效。
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
–执行成功后,再次查询用户密码有效期
SELECT * FROM dba_profiles s WHERE s.profile=’DEFAULT’ AND resource_name=’PASSWORD_LIFE_TIME’;

3、解决方法:遇到这个账号被锁,淡定的通过超级管理员来解锁
如下:
解锁账户

语法:alter user username account unlock;

解锁后,账户就可以正常登录了!!

4、思考:实际项目中,通过用户模块进行创建的新用户,是否存在有效期的问题!

  • 实际项目有有效期的需求:一个账户只能使用30天,之后必须修改密码
  • 实际项目中没有这个需求:那么在界面新建账户,应该考虑设置新账户的有效期为“UNLIMITED”
### SQL Server 连接时遇到 Java 抛出 ORA-28000 帐户被锁定的问题 当尝试通过 JDBC 连接到 Oracle 数据库并收到 `java.sql.SQLException: ORA-28000: the account is locked` 错误时,表明用于连接数据库的用户账户已被锁定。此错误通常发生在以下几个场景之一: - 多次登录失败导致账户自动锁定 - 账户由管理员手动锁定 - 密码过期而未能及时更改[^1] #### 解决方案概述 为了恢复访问权限,需执行一系列操作来诊断和修复问题。 #### 查询当前配置文件设置 首先确认受影响用户的 profile 设置,这有助于了解具体的锁定策略和其他安全参数。可以使用如下命令查询指定用户的 profile: ```sql SELECT * FROM dba_profiles WHERE profile IN (SELECT DEFAULT_PROFILE FROM DBA_USERS WHERE USERNAME='YOUR_USERNAME'); ``` 上述语句中的 `'YOUR_USERNAME'` 应替换为实际用户名[^3]。 #### 验证账户状态 接着检查目标账户的状态以确定其是否确实处于锁定状态。可以通过运行下面这条 SQL 语句完成这项工作: ```sql SELECT ACCOUNT_STATUS, LOCK_DATE FROM DBA_USERS WHERE USERNAME = 'YOUR_USERNAME'; ``` 如果结果显示该账号已经被锁定,则需要采取进一步措施解锁它[^4]。 #### 执行解锁操作 对于拥有适当权限的操作员来说,可以直接利用 SYSDBA 权限解除特定用户的锁定状况。具体做法是在具有相应权限的情况下输入以下指令: ```bash $ sqlplus / as sysdba SQL> ALTER USER YOUR_USERNAME ACCOUNT UNLOCK; ``` 这里同样要记得把 `'YOUR_USERNAME'` 替换成真实的用户名字符串。 #### 修改密码(如有必要) 考虑到可能存在由于忘记更新而导致的有效期限届满的情况,在解锁之后还应该考虑重置或延长现有密码的有效时间。例如: ```sql ALTER USER YOUR_USERNAME IDENTIFIED BY new_password REPLACE old_password; ``` 或者简单地改变密码而不涉及旧密码: ```sql ALTER USER YOUR_USERNAME IDENTIFIED BY "new_secure_password"; ``` 请注意选择强健的新密码,并遵循公司内部的安全政策指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值