当前位置:  数据库>oracle

批量错误用户名与密码导致业务用户HANG住(library cache lock)

    来源: 互联网  发布时间:2017-05-30

    本文导语: 批量错误用户名与密码导致业务用户HANG住(library cache lock) 数据库版本SQL> select * from v$version; BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionPL/SQL Releas...

批量错误用户名与密码导致业务用户HANG住(library cache lock)

数据库版本
SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
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 HPUX: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

问题如下
SQL> conn doudou/oracle (HANG住了)

查看等待事件
select
count(*),
CASE WHEN state != 'WAITING' THEN 'WORKING'
ELSE 'WAITING'
END AS state,
CASE WHEN state != 'WAITING' THEN 'On CPU / runqueue'
ELSE event
END AS sw_event
FROM
v$session_wait
GROUP BY
CASE WHEN state != 'WAITING' THEN 'WORKING'
ELSE 'WAITING'
END,
CASE WHEN state != 'WAITING' THEN 'On CPU / runqueue'
ELSE event
END
ORDER BY
1 DESC, 2 DESC
/

library cache lock WAITING 585
rdbms ipc message WAITING 16
Space Manager: slave idle wait WAITING 3
jobq slave wait WAITING 2
Streams AQ: waiting for time management or cleanup tasks WAITING 1
VKRM Idle WAITING 1
smon timer WAITING 1
Streams AQ: qmn coordinator idle wait WAITING 1
pmon timer WAITING 1
Streams AQ: qmn slave idle wait WAITING 1
DIAG idle wait WAITED KNOWN TIME 1
DIAG idle wait WAITING 1
library cache lock WAITED KNOWN TIME 1
VKTM Logical Idle Wait WAITING 1
asynch descriptor resize WAITED SHORT TIME 1
SQL*Net message from client WAITING 1

结合等待事件去分析
1.library cache lock 等待严重,另一方面考虑只有单独的这个业务用户doudou不能登录,其他业务类型的用户doudou01不受任何影响。再次怀疑可能是11g 密码延迟机制导致的这个问题。

2.然后查看了一下用户修改密码的时间
select * from sys.user$ where name='DOUDOU';
PTIME=2013/11/6 11:22:09    --PTIME is the date the password was last changed
CTIME=2013/11/6 11:22:09    --CTIME is the date the user was created
从这里可以看出我们DOUDOU用户,没有修改过密码,但是为什么会出现大量的library cache lock,没有修改密码,但是新业务配置的用户密码会不会有错误呢,这样询问了开发人员,原来他们的配置有错误,用户密码配置错误了。也就是错误的用户和密码批量请求导致了大量的library cache lock。

搜索MOS找到了类似的案例
Library Cache Locks Due to Invalid Login Attempts (Doc ID 1309738.1)

Cause
Numerous failed logins attempts can cause row cache lock waits and/or library cache lock waits.
Set the below event in the spfile or init.ora file and restart the database:

alter system set event ="28401 TRACE NAME CONTEXT FOREVER, LEVEL 1" scope=spfile;

or

EVENT="28401 TRACE NAME CONTEXT FOREVER, LEVEL 1"


3.问题解决,正确的用户密码配置之后,并设置参数EVENT="28401 TRACE NAME CONTEXT FOREVER, LEVEL 1",大量的library cache lock逐渐减少,最后消除。新业务也正常使用了

 

附表

user$ 视图解释
Test cases below show:

•CTIME is the date the user was created.
•LTIME is the date the user was last locked. (Note that it doesn't get NULLed when you unlock the user).
•PTIME is the date the password was last changed.
•LCOUNT is the number of failed logins.

记录用户登录失败触发器:
CREATE OR REPLACE TRIGGER logon_denied_to_alert
  AFTER servererror ON DATABASE
DECLARE
  message  VARCHAR2(168);
  ip        VARCHAR2(15);
  v_os_user VARCHAR2(80);
  v_module  VARCHAR2(50);
  v_action  VARCHAR2(50);
  v_pid    VARCHAR2(10);
  v_sid    NUMBER;
  v_program VARCHAR2(48);
BEGIN
  IF (ora_is_servererror(1017)) THEN
 
    -- get ip FOR remote connections :
    IF upper(sys_context('userenv', 'network_protocol')) = 'TCP' THEN
      ip := sys_context('userenv', 'ip_address');
    END IF;
 
    SELECT sid INTO v_sid FROM sys.v_$mystat WHERE rownum < 2;
    SELECT p.spid, v.program
      INTO v_pid, v_program
      FROM v$process p, v$session v
    WHERE p.addr = v.paddr
      AND v.sid = v_sid;
 
    v_os_user := sys_context('userenv', 'os_user');
    dbms_application_info.read_module(v_module, v_action);
 
    message := to_char(SYSDATE, 'YYYYMMDD HH24MISS') ||
              ' logon denied from ' || nvl(ip, 'localhost') || ' ' ||
              v_pid || ' ' || v_os_user || ' with ' || v_program || ' – ' ||
              v_module || ' ' || v_action;
 
    sys.dbms_system.ksdwrt(2, message);
 
  END IF;
END;
/


    
 
 

您可能感兴趣的文章:

  • 我装了中软Linux3.1,启动时要求输入用户名和口令,但安装时并没有提示指定用户名,所以现在输入用户名老是错误,不能进入系统,请问该怎
  • 急!请教高手:在Solaris系统中,对于远程telnet方式,发现只有root用户登录成功,其他用户不能登录,报no shell错误,是什么原因?
  • SQL Server"错误 21002: [SQL-DMO]用户 * 已经存在问题解决
  • 一个登录问题,tomcat4.0.3,当用户登录时如何限制用户输入用户名和密码的错误次数?
  • 为什么每次进入informix用户都会提示错误
  • Ubuntu下编译(c++)的程序,在redhat 9.0的root用户下执行报权限不够的错误
  • 在LINUX系统下编译用户态的代码时提示undefined refirence to "函数名"错误请求帮助?谢谢!!
  • sql server 2005删除用户时“数据库主体在该数据库中拥有架构,无法删除”错误的解决办法
  • 普通用户不能切换到root,提示密码错误
  • xdm配置问题,输入用户名后输入密码,没有看到******,光标也没有动,但是用户名是看得到的。然后就报登陆错误。
  • CI使用Tank Auth转移数据库导致密码用户错误的解决办法
  • 手动执行应用程序ok,但用crontab(在正确的用户名下)运行应用程序就报-12545(tns连接错误),怎么解决?
  • 用户"sa"登陆失败 SQLServer 错误18456的解决方法
  • 一个添加50用户的shell程序,执行完毕后新建的账户登录密码错误。帮忙看下哪有问题,谢谢!
  • process '/sbin/getty -L ttyS0 115200 vt100' (pid 79) exited. Scheduling it for restart.登陆用户时报这个错误,请各位高手帮帮忙,谢谢
  • 进入linux用户编辑界面为什么总是提示JAVA路径错误
  • mysql SKIP-NAME-RESOLVE 错误的使用时机造成用户权限
  • 在一个页面出现时,弹出一个文本框,让用户输入name,password.错误不显示这个页面,正确则显示。谢谢
  • solaris10 启动自动进入单用户状态(付错误信息贴图)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 【求助】急:Fedora 9 SELinux 配置错误导致启动不了怎么办?
  • 升级gc3.2后,导致程序运行错误.大家聊聊.
  • ubuntu mysql配置错误导致无法启动mysql,希望达人前来帮助。
  • 使用WINGRUB引导安装FC5时,出现如下错误,导致不能安装。
  • 是什么导致我的这个错误
  • 权限问题导致Nginx 403 Forbidden错误的解决方法
  • 是什么导致程序编译错误?望达人指教
  • 关于SQL执行计划错误导致临时表空间不足的问题
  • C++ I/O 成员 bad():如果出现错误则返回true
  • Unmounting initrd failed 错误表示什么错误?可能是由什么引起的?系统原来一直运行正常,突然发现系统登陆错误,重启提示以上错误。
  • C++ I/O 成员 fail():如果出现错误则返回true
  • 在inter版solaris 8上编socket程序,在read时遇到错误,错误号14,用strerror()看不到错误描述,请解决,多谢!
  • 重装服务器后IIS网站错误(应用程序中的服务器错误)
  • 请问段错误是什么错误啊
  • Mysql查询错误:ERROR:no query specified原因
  • linux安装codeblock 编译错误make: *** [all-recursive] 错误 1
  • windows server2008上PowerBuilder程序系统错误解决方法
  • 求教:文件打包移植错误发生排序错误,小弟努力送分送分啦!59~~~
  • 错误:将'const x'作为'x'的'this'实参时丢弃了类型限定问题解决
  • 解决服务器应用程序不可用,错误:0x80070005拒绝访问的错误
  • 几个windows平台C++开发错误举例
  • iis8.5显示ASP的详细错误信息500 内部服务器错误解决方法
  • 安装hadoop时出现内存不够及其它一些常见的hadoop错误解决办法
  • http错误404-文件或目录未找到 错误的解决方法
  • PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
  • mysql启动错误之mysql启动报1067错误解决方法
  • linux/centos安装nginx常见错误及解决办法
  • gnu c++如何得到对于编译错误和运行错误的帮助?
  • 紧急求救:在LINUX下如何根据错误代码,查出对应的错误描述?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,