视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Oracle11gR2修改用户后导致系统HANG住
2020-11-09 14:27:39 责编:小采
文档


【背景】今天中午的时候用户反馈需要修改数据库的和应用的连接密码,修改密码这种小事情,本以为不会不会出现问题的。没想到午休

【背景】今天中午的时候用户反馈需要修改数据库的和应用的连接密码,修改密码这种小事情,本以为不会不会出现问题的。没想到午休到一半的时候就接到用户的电话,系统连接不进去了。

【环境】

  • 操作系统 linux6.3_
  • 数据库版本11.2.0.3
  • 【症状】用户修改密码之后通过应用连接一直连接不上,我登录主机通过sqlplus连接的时候,也是一直处于hang住状态,但是sys、system用户进行连接的时候速度就很快;

    [Oracle@ekpdbtest ~]$ sqlplus / as sysdba (数据库可以正常登录)

    SQL*Plus: Release 11.2.0.1.0 Production on Fri Apr 10 17:37:42 2015

    Copyright (c) 1982, 2009, Oracle. All rights reserved.

    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    SQL>

    SQL> conn sale/oracle (HANG住了)

    【备注】操作系统的CPU、内存、网络、磁盘空间都没有发现异常;

    1、查看等待事件

    通过查看awr报告,library cache lock等待严重

    wait % DB
    Event Waits Time(s) (ms) time Wait Class
    ------------------------------ ------------ ----------- ------ ------ ----------
    library cache lock 866 145,056 2.E+05 92.0 Concurrenc
    row cache lock 195 9,155 46948 5.8 Concurrenc

    2、恢复用户到修改前的密码

    SQL> conn sale/sale (可以登录)

    【问题原因】经过一番查找发现该问题属于ORACLE 11的一个新特性,如果一个用户使用不正确的密码尝试登录数据库,那么随着登录失败次数的增加,每次登录验证前延迟等待的时间也会增加。这个特性主要用于避免一些程序采用错误的密码进行尝试性的登录;所有这一切都已经说明,当前有一个或多个中间件服务器在使用错误的密码连接数据库,由于密码延迟验数据证的策略,导致所有后续的连接都被HANG住。

    用户的环境是怎么触发这个特性的了?

    用户的环境中,连接数据库不仅有应用层,还有一些【地磅系统】,这些系统直接连接数据库,所以虽然更改了应用的密码,但是地磅系统由于数量众多且修改麻烦,,所以应用的连接密码修改后,地磅系统的连接密码并没有改,所以一直在用错误的密码进行登录,而触发了【密码延迟验证导致的系统HANG住】

    【解决方法】这个性特性可以提供系统的安全性,但同时也引入了bug,Oracle最强大之处就在于几乎所有的功能和特性都有对应的开关,通过设置EVENTS 28401可以屏蔽密码延迟验证,重启数据库后解决。

    SQL> ALTER SYSTEM SET EVENT = ‘28401 TRACE NAME CONTEXT FOREVER, LEVEL 1’ SCOPE = SPFILE;

    【总结】暂时性的关闭这个特性,然后再逐步修改每个系统的密码,又化解了一次危机;

    本文永久更新链接地址:

    下载本文
    显示全文
    专题