背景介绍

在最近使用oracle11g 数据库时,出现报错为ORA-28000:the account is locked的错误,翻译一下:用户被锁了,网上查找报错原因,以下记录处理的的过程,方便备查。

1、原因

oracle database 11g中,默认在default概要文件中设置了“FAILED_LOGIN_ATTEMPTS=10”,当输入密码错误次数达到设置值将导致此问题。 推测原因: 可能是在本地开发中可能有人程序连接的账号或密码输入不正确,导致数据库被锁住了。 查看用户对应文件的语句如下

// 查看数据库中各个用户 对应的默认文件
select * from dba_profiles where profile='DEFAULT' and resource_name='FAILED_LOGIN_ATTEMPTS';

结果如下图所示。 在这里插入图片描述

2、处理方案

处理方案可以有两种

1)修改其为无次数限制,立即生效
alter profile default limit failed_login_attempts unlimited;
// 查看
select username,account_status from dba_users;

查询结果如下图所示 在这里插入图片描述

账号的状态分为以下几类: OPEN:正常 LOCKED:通过SQL语句进行的锁定 LOCKED(TIMED):超过最大错误登录次数被动锁定 EXPIRED或者EXPIRED(GRACE):密码过期状态 EXPIRED & LOCKED(TIMED):密码过期并超过了限制次数被锁定

2)手动解锁

借助数据库连接工具Navicat,可以打开同一连接下,选择用户–> 用户,找到被锁住对象,如下图所示。 在这里插入图片描述 右键–> 编辑对象,勾掉锁定对象按钮就可解锁。 在这里插入图片描述

参考博客

【1】https://www.cnblogs.com/holmes-cat/p/10365614.html