`

orcle 11g 密码延迟验证害死人

阅读更多
http://www.itpub.net/thread-1606530-1-1.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

故障描述:

    领导需求要修改在线生成数据库用户fonewapuser的密码,修改密码完成后过了不一会程序员就反应用户fonewapuser连接不上,使用fonewapuser用户登陆数据显示一直等待状态。

问题现象后,在数据库中使用如下语句查询等待事件出现大量的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 
  (SELECT KGLLKSES FROM X$KGLLK LOCK_A 
   WHERE KGLLKREQ = 0
     AND EXISTS (SELECT LOCK_B.KGLLKHDL FROM X$KGLLK LOCK_B
                 WHERE KGLLKSES = 'saddr_from_v$session' /* BLOCKED SESSION */
                 AND LOCK_A.KGLLKHDL = LOCK_B.KGLLKHDL
                 AND KGLLKREQ > 0)
  );


现在问题就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
  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;
/

如有登录失败则在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
分享到:
评论

相关推荐

    Oracle密码延迟验证导致的系统HANG住.docx

    Oracle数据库在11g版本引入了一项名为"密码延迟验证"的安全特性,这一特性在特定情况下可能导致系统响应缓慢,甚至hang住。这个问题通常出现在修改了应用程序账户密码之后,如果应用服务器未能及时更新数据库连接...

    Oracle11g密码设置不过期

    oralce11g密码设置不过期,可通过sql脚本设置和查看

    Oracle 11gR2创建PASSWORD_VERIFY_FUNCTION对应密码复杂度验证函数步骤.doc

    总结,Oracle 11g R2中的密码策略管理是通过创建资源文件和自定义的密码验证函数来实现的。这不仅可以强制执行密码复杂度,还可以限制登录尝试次数、设定密码过期时间等,从而提高数据库的整体安全性。通过以上步骤...

    oracle11g密码180天过期解决方法

    oracle11g密码180天过期解决方法

    Oracle11g中文文档.zip

    oracle11g官方中文帮助 Oracle 11g:ORACLE ACTIVE DATA GUARD.pdf Oracle Database 11g 高可用性.pdf Oracle 数据库 11g 中的分区.pdf Oracle 数据库 11g :真正应用测试与可管理性概述.pdf Oracle 数据库 11g...

    oracle11g官方中文文档完整版

    Oracle 11g 官方中文文档 包括一下部分文档: Oracle 11g:ORACLE ACTIVE DATA GUARD.pdf Oracle Database 11g 高可用性.pdf Oracle 数据库 11g :真正应用测试与可管理性概述.pdf Oracle 数据库 11g 中的分区....

    oracle10G和oracle11G的OCI.dll

    6. 安全性增强:Oracle 11G在安全性方面做了大量改进,包括增强了身份验证机制、加密功能以及审计策略,oci.dll在其中起到了关键作用,确保了数据在传输和存储过程中的安全性。 总结来说,oci.dll是Oracle数据库与...

    欧拉系统安装oracle 11g

    欧拉系统安装 Oracle 11g 本资源摘要信息将详细介绍欧拉系统安装 Oracle 11g 的过程,包括安装依赖包、安装 Oracle 11g 等步骤。 安装依赖包 在安装 Oracle 11g 之前,需要安装一些依赖包,以确保安装过程的顺利...

    oracle11g驱动包

    这个压缩包中的"oracle11g驱动jar包"很可能包含`ojdbc6.jar`或`ojdbc7.jar`,这两个是Oracle 11g JDBC驱动的主要文件。将这些jar文件添加到项目的类路径(classpath)中,然后可以使用以下代码示例建立数据库连接: ...

    oracle11g 百度盘下载

    在这个“Oracle11g 百度盘下载”资源中,用户可以获取到Oracle 11g的安装包,以便在自己的计算机上搭建数据库环境。下面将详细阐述Oracle 11g的一些核心特性和关键知识点。 1. **数据库版本**:Oracle 11g是Oracle...

    oracle 11g默认用户名密码.zip

    总之,Oracle 11g的默认用户名和密码对于初学者和管理员都是重要的信息,而安装过程中的问题解决和连接测试是确保数据库系统正常运行的关键步骤。通过理解这些基础知识,你可以更好地管理和维护你的Oracle 11g数据库...

    Oracle11G密码重置

    总之,Oracle11G密码重置是一个涉及数据库管理基本操作的过程,需要对SQL语句有基本的理解,同时也提醒我们在日常管理中应注重数据安全和访问控制。通过上述步骤和注意事项,你可以有效地处理忘记密码的情况,并确保...

    Red hat linux 安装oracle 11g

    "Red Hat Linux 安装 Oracle 11g" 本文将详细介绍如何在 Red Hat Linux 中安装 Oracle 11g。首先,需要准备好安装环境,包括关闭防火墙、检查 RPM 包是否安装等。然后,安装 Oracle 11g 的过程可以分为多个步骤,...

    oracle 11g 下载地址

    Oracle 11g增强了安全特性,如密码管理、数据加密等功能,确保数据的安全性和隐私保护。 #### 5. 数据压缩 通过引入数据压缩技术,Oracle 11g能够有效降低存储空间的需求,提高I/O性能,进而改善整体数据库性能。 ...

    个人版oracle 11g安装图解

    "Oracle 11g 安装图解" 本文将指导读者如何下载和安装 Oracle 11g 数据库,通过截屏图的形式展示安装过程,帮助读者顺利安装 Oracle 11g 数据库。 一、前提条件 在安装 Oracle 11g 之前,需要确保系统满足以下...

    oracle11G的linux下的离线安装教程.pdf

    "Oracle 11g 在 Linux 下的离线安装教程" 一、查看和修改主机名称 在 Oracle 11g 的安装过程中,需要查看和修改主机名称。可以使用 hostname 命令来查看当前主机名称,并使用 hostname 命令来修改主机名称。 二、...

    oracle11g密码区分大小写问题

    ### Oracle 11g 密码区分大小写问题详解 #### 一、Oracle 11g 版本特性概述 自 Oracle 11g 版本开始,Oracle 数据库默认开启了密码大小写敏感(case sensitivity)功能。在早期版本如 10g 及其之前的版本中,默认...

Global site tag (gtag.js) - Google Analytics