记一次oracle数据库用户被锁定的问题--非常见

客户反馈关键业务用户被锁定,需要处理和排查,干了这么多年的DBA处理这类问题简直都不是事(过于自信)

1、登录服务器对用户进行解锁(解锁之前查看了用的状态为lock(timed)-->表示尝试使用错误密码登录次数超过限制,数据库限制是10次,10次后就会锁定。

官方解释如下

用户状态为LOCK(TIMED)是由客户端发起登录尝试失败导致,登录尝试失败次数由FAILED_LOGIN_ATTEMPTS参数决定,用户锁定时间未设置(长期),FAILED_LOGIN_ATTEMPT允许失败登录最大次数为默认即10次,锁定时间为长期:

2、检查记录登录错误的触发器,居然为空 0行,--->正常情况下,输入错误密码会提示ora-1017错误,这次咋没有呢,但是可以确认是密码输入错误导致的问题;

3、(由于数据库则未找到根源,联系应用厂商未果)为了尽快找到原因,打开数据库审计并增加了数据库审计防火墙,期间又发生了2次用户锁定(相隔20天左右),和客户沟通是否能调整密码次数上线,得到了否决(防止暴力破解),必须找到根源。。。

4、第四次用户锁定,通过审计防火墙发现端倪(某一个服务器出现连续登录失败的报错)--终于抓到你了

5、反复和客户以及开发商掰扯(终于在服务器中一个小应用中发现了关键问题,完全想不到的情况,应用日志中出现如下错误;

真操蛋呀,居然是空密码,难怪触发器没有记录下来。

找到原因后及时更新了触发器

CREATE OR REPLACE TRIGGER sys.logon_trigger

AFTER SERVERERROR ON DATABASE

BEGIN

IF (IS_SERVERERROR(1017)or S_SERVERERROR(1005)) THEN

INSERT INTO logon_trigger VALUES(SYS_CONTEXT('USERENV', 'AUTHENTICATED_IDENTITY'), SYS_CONTEXT('USERENV', 'HOST'), SYSDATE,SYS_CONTEXT('USERENV','IP_ADDRESS'));

COMMIT;

END IF;

END;

/

防范与建议:

开启用户错误登录尝试审计代码如下:

AUDIT CREATE SESSION BY ACCESS WHENEVER NOT SUCCESSFUL;

AUDIT CONNECT BY ACCESS WHENEVER NOT SUCCESSFUL;

select name,lcount from user$ where name='xXX';

  select username,

os_username,

userhost,

client_id,

trunc(timestamp),

count(*) failed_logins

from dba_audit_trail

where returncode in( 1017 ,01005)--1017 is invalid username/password

timestamp > sysdate -7

group by username,os_username,userhost, client_id,trunc(timestamp);

 

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果Oracle数据库表被锁定,一般可以采取以下步骤进行解决。 1. 了解锁定类型 在解决问题之前,需要了解表的锁定类型。有时锁定可能是正常的,比如表正在被修改或删除等。如果确定锁定是异常的,才可以进行下一步的解决。 2. 确认锁定原因 可以使用Oracle锁定统计信息或诊断工具来确认锁定原因。诊断工具可以显示哪些会话正在使用表以及它们的锁定类型。 3. 杀死相关会话 如果锁定的原因是某些会话在占用表,可以使用Oracle的系统管理工具或SQL语句来杀死相关的会话。需要注意的是,杀死会话可能会导致数据丢失或不完整,所以要谨慎操作。 4. 检查数据库参数 有些数据库参数可能会影响表的锁定。比如,如果SGA不足,可能会导致过多的锁定,需要增加SGA大小。另外,也可以调整数据库参数来优化锁定机制。 5. 避免死锁 死锁是指多个会话彼此等待对方的资源而陷入无法解开的状态。要避免死锁,可以使用事务隔离级别,比如READ COMMITTED,SERIALIZABLE等来控制并发访问。此外,还可以按照一定的顺序获取资源,比如按照表名的字母顺序来获取锁定,以避免死锁的发生。 6. 优化SQL查询 有些查询可能会占用太多的资源,导致锁定。可以使用优化查询的方法来降低资源消耗,比如使用索引、尽量减少锁定行数等。 总之,解决Oracle数据库锁定问题,需要综合考虑多种因素,既包括技术方面的优化,也包括管理方面的规范。只有全面改进,才能达到让数据库运转更加稳定高效的效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值