用户登录后hang住,library cache lock

系统环境

RHEL5u4,Oracle11GR2

故障现象

某用户登陆后一直hang住,不报错,其他用户无此问题

具体情况

接到反馈说,某个页面不能打开,检查了页面日志之后,发现该页面对应的某用户无法登陆数据库,于是用sqlplus连接数据库,发现hang在那里

解决过程

检查等待事件,发现是library cache lock

并且除了我们的登陆进程,还有一大堆已经登陆的进程被阻塞在library cachelock

做了一个statspck(没装em),发现异常

ime Model System Stats  DB/Inst: xxxxx/xxxxx  Snaps: 1-2
-> Ordered by % of DB time desc, Statistic name
Statistic                                                                            Time (s) %      DB time
----------------------------------- -------------------- ---------
connection management call elapsed                      384,100.8     100.0
DB CPU                                                                            30.1                .0
sql execute elapsed time                                             16.7                 .0
PL/SQL execution elapsed time                                  4.5                   .0
parse time elapsed                                                       1.2                   .0


                                                             Avg          %Total
                                          %Tim Total Wait   wait    Waits   Call
Event                               Waits  out   Time (s)   (ms)     /txn   Time
---------------------------- ------------ ---- ---------- ------ -------- ------
library cache lock                    250    0    384,116 ######      0.0   99.9
library cache: mutex X             19,736    0        162      8      3.3     .0
log file sync                         518    0         11     21      0.1     .0
db file sequential read                44    0          1     32      0.0     .0
write complete waits                   47    0          1     16      0.0     .0

和之前的现象一样,大量library cache lock导致登陆hang住,时间全部消耗在了 connection management call elapsed
看看下面的top sql 没发现特别的发现。
通过查询x$kgllk等相关表,发现持有锁的对象名是1488, 查了查dba_object表,没找到这个名字开头的对象, 进程也是来自一个weblogic 的模块,没什么特别的, 所以一时没了头绪。

后来查了下metalink, 发现一篇文章 LIBRARY CACHE LOCKS DUE TO INVALID LOGINATTEMPTS [ID 1309738.1].
这个是Oracle的一个bug, 用户多次尝试登陆失败会产生library cache lock, 这个很好的解释了我的问题

下面的问题就简单了,找到产生library cache lock的源头(可以参照文档How to Find whichSession is Holding a Particular Library Cache Lock [ID 122793.1] )
来源于weblogic的某个模块, 检查了该模块对应管理服务器的日志,果然发现了某个数据源多次连接失败的记录。
打开该数据源的配置,发现对应的帐户果然是存在问题的那个帐户。
询问了下管理员,他们是昨天晚上修改了DB帐户的密码,同时也修改了weblogic中数据源的密码,但是在设置密码的时候出现了错误,导致不正确的密码被保存进了中间件的数据源。

找到问题以后,解决就简单了,重新配置下这个数据源的密码,然后重启相关的管理服务器。之后又检查了下,一切都正常了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值