故障描述
用某个用户登录数据库,一直hang住,不报错
于是直接尝试用sqlplus连接数据库,发现连接该用户时hang在那里,过很久之后会返回ORA-04021错误,但是别的用户都没问题。
SQL> conn pingshen/pingshencs
ERROR:
ORA-04021: 等待锁定对象 时发生超时
警告: 您不再连接到 ORACLE。
问题排查与解决
通过检查等待事件,发现是library cache lock
并且发现,除了登录进程,还有一大堆的已经登录的进程被阻塞在library cache lock.
经过测试,这个问题只发生在一个用户上,使用这个用户登录需要等待很长时间才会返回登录失败的信息,而使用其他的用户登录则不存在问题。
通过V$SESSION_WAIT视图,可以看到对应的等待事件:
SQL> select sid,event from v$session_wait;
从V$SESSION_WAIT中查找有问题的wait
SQL> select event,count(*) from v$session_wait group by event;
EVENT COUNT(*)
---------------------------------------------------------------- ----------
SQL*Net message from client 125
rdbms ipc message 12
smon timer 1
pmon timer 1
library cache lock 97
Streams AQ: qmn slave idle wait 1
Space Manager: slave idle wait 1
SQL*Net message to client 1
Streams AQ: qmn coordinator idle wait 1
VKTM Logical Idle Wait 1
Streams AQ: waiting for time management or cleanup tasks 1
DIAG idle wait 2
已选择12行。
SQL> select distinct kglhdbsp,kglhdnsd from x$kglob;
KGLHDBSP KGLHDNSD
---------- ----------------------------------------------------------------
0 SQL AREA BUILD
0 SQL AREA
0 BODY
1 ACCOUNT_STATUS
15 SCHEMA
30 SQL AREA
0 SCHEDULER EARLIEST START TIME
19 SQL AREA
17 ACCOUNT_STATUS
1188 ACCOUNT_STATUS

本文深入分析了一种在Oracle数据库登录过程中遇到的librarycachelock等待问题,详细描述了问题的排查过程,包括如何通过V$SESSION_WAIT视图定位问题,以及如何通过分析DBA_HIST_ACTIVE_SESS_HISTORY找到根本原因。最终揭示了问题与11g新增的密码错误延迟验证特性有关,并提供了相应的解决方案。
最低0.47元/天 解锁文章
246

被折叠的 条评论
为什么被折叠?



