oracle library cache lock,刚刚处理了一个library cache lock的问题

刚刚处理了一个 library cache lock 的问题,给大家分享下, 以便兄弟们遇到类似的问题多一个解决思路.

数据库版本11GR2, OS Oracle Linux

故障描述, 用某个用户登录,一直hang住,不报错

具体情况,接到反馈说,某个页面不能打开,检查了下该页面的日志,发现该页面对应的某个帐户A不能登录数据库。

于是直接尝试用sqlplus连接数据库,发现连接hang在那里。

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

并且发现,除了我们的登录进程,还有一大堆的已经登录的进程被阻塞在library cache lock.

立刻做了一个4分钟的statspack(没装EM,只能用statspack) , 发现如下异常

Time 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中数据源的密码,但是在设置密码的时候出现了错误,导致不正确的密码被保存进了中间件的数据源。

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

5f60efcaccfa40b26873a6a9cb266119.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值