Linux服务器下Oracle用户被锁定解决方法

相关错误:ORA-28000: the account is locked

1、通过连接数据库,并查看锁定的用户,查看具体的被锁时间:

SQL> select username,lock_date from dba_users where username='TEST';

SELECT username, account_status,lock_date, PROFILE FROM dba_users; 

EXPIRED & LOCKED   口令到期并锁定
LOCKED(TIMED)      密码错误次数超过了系统设置的允许最大次数,用户被锁定
 

2、找到监听日志:

在Oracle安装服务器找到/oracle/diag/tnslsnr/ora11g_db2V10/listener/trace/listener.log文件,该文件会记录oracle的一些跟踪信息;

3、查看监听日志

在Linux服务器,找到该目录,执行tail -20 listener.log命令,查看该文件的最后20行内容;

或是通过工具连接Linux服务器,在对应目录下下载到本地,通过本地编辑工具查看对应时间的记录:

Mon Nov 14 11:32:53 2022

14-11月-2022 11:32:53 * (CONNECT_DATA=(SID=kcop)(CID=(PROGRAM=JDBC Thin Client)(HOST=jdbc)(USER=root))) * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=12352)) * establish * kcop * 0

4、分析:

造成Oracle的账号被锁定的原因是由于修改数据库密码后。服务器配置的连接数据库的信息没有修改完全,所以造成了该账号登录Oracle经常失败,在oracle11g中,默认在default概要文件中设置了FAILED_LOGIN_ATTEMPTS=10,当输入密码错误次数达到设置值将导致此问题。

确定用户所使用概要文件:

select username,profile from dba_users;

 

5、解锁:

解锁:

alter user username(用户名) account unlock;

锁定:

alter user username(用户名) account lock;

注:

一般数据库默认是10次尝试失败后锁住用户

5.1、查看FAILED_LOGIN_ATTEMPTS的值

select * from dba_profiles where RESOURCE_NAME = 'FAILED_LOGIN_ATTEMPTS';

 

5.2、修改次数:50

alter profile default limit FAILED_LOGIN_ATTEMPTS 50;

5.3、修改为无限次(为安全起见,不建议使用)

alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;

5.4、另外,小伙伴经常遇到数据库用户密码过期的情况,要定期去修改密码很麻烦,那么我们可以设置用户密码不过期:

5.4.1、查询指定概要文件的密码有效期设置:

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

5.4.2、修改为无限制:

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

5.4.3、若已出现 ora-28002 报错,则修改密码:

alter user 用户名 identified by 密码; 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值