网友碰到的问题,记录一下
源自:http://www.itpub.net/thread-1606530-1-3.html
系统:LINUX
数据库版本:
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
故障描述:
问题现象后,在数据库中使用如下语句查询等待事件出现大量的library cache lock。
select * from gv$session_wait where event like 'library cache lock';
在v$session视图中查询library cache lock等待相关的会话信息,发现username为空而且不是oracle后台进行。这就是说这些会话还没有连接到数据库,一直在等待验证状态。
select * from gv$session_wait where event like 'library cache lock';
因为以前也遇到过'library cache lock'等待事件的问题直接使用下面的语句查占用'library cache lock'的会话,但是返回的确实没有结果这可就神奇了。难道没人阻塞它自己就产生library cache 锁了吗?诡异啊
SELECT SID,USERNAME,STATUS,SCHEMANAME,PROCESS,MACHINE,SQL_ID,TERMINAL,PROGRAM FROM V$SESSION
WHERE SADDR in
现在问题就hang这里了,library cache lock等待的会话不断的增加,而又找不到那个会话阻塞了它。最后数据库连接满了,没有办法把数据库重启了。
数据库起来以后,检查library cache lock等待事件没有输出数据库显示正常。不过等待1个小时之后library cache lock又大量的出现,不过一会又消失了,有点诡异。在网上看到yangtingkun的一篇关于oracle 11g 密码延长验证的文章感觉和上面的问题很像,于是写了个记录登录失败的触发器,过了不一会就在alert中发现大量的连接失败记录,找到负责192.168.0.234这个台机器的程序员让他查程序连接用户和密码是否正确。结果发现密码不对,而且这个程序是每隔一段时间就向数据库发送连接请求,把密码修改正确后library cache lock就没有在出现过。
哎,oracle 11g 密码延长验证真是害死人啊!!!11g的新特性确实很好,很强的,但是你要是不熟悉、不了解它,它很容易害死你。从出事开始经理占我后面足足监视了4小时快压死我了。4个多小时在线生成库无法使用钱哗哗的没,我被经理骂,经理上面领导骂。
最后问下,有没有倒霉的童鞋遇到过这样的情况,嘿嘿!
记录用户登录失败触发器:
CREATE OR REPLACE TRIGGER logon_denied_to_alert
DECLARE
BEGIN
END;
/
如有登录失败则在alert中记录如下信息:
Thu Apr 26 20:16:45 2012
20120426 201645 logon denied from 192.168.0.234 29458 root with JDBC Thin Client ? JDBC Thin Client
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
![]() | ![]() |