一、用户密码即将过期,导致autotrace无法打开

           如果用户密码即将过期,在登录数据库时会收到如下提示:
           ERROR:
            ORA-28002: the password will expire within 7 days
           当然,此时密码还未真正过期,用户在收到错误提示后依然可以登录数据库。但是,如果当收到密码即将过期的提示,想要开启autotrace就会有问题。

  1. SQL> conn darren/darren
  2. ERROR:
  3. ORA-28002: the password will expire within 7 days
  4. Connected.
  5. SQL> set autotrace on;
  6. ERROR:
  7. ORA-28002: the password will expire within 7 days
        SP2-0619: Error while connecting
       SP2-0611: Error enabling STATISTICS report

既然出现了密码即将过期的提示,说明profile中的PASSWORD_LIFE_TIME参数肯定没有设置成unlimited,可以查看dba_profiles进行验证:

  1. SQL> select profile,resource_name,limit from dba_profiles where resource_name='PASSWORD_LIFE_TIME';
  2. PROFILE RESOURCE_NAME         LIMIT
  3. ---------- -------------------------------- ----------
  4. DEFAULT PASSWORD_LIFE_TIME         1

如果生产环境没有对密码过期的特殊限制,可以把该参数修改为unlimitd:

  1. ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED

此时再尝试打开autotrace:

  1. SQL> select profile,resource_name,limit from dba_profiles where resource_name='PASSWORD_LIFE_TIME';
  2. PROFILE RESOURCE_NAME         LIMIT
  3. ---------- -------------------------------- ----------
  4. DEFAULT PASSWORD_LIFE_TIME         UNLIMITED
  5. SQL> conn darren/darren
  6. ERROR:
  7. ORA-28002: the password will expire within 7 days
  8. Connected.
  9. SQL> set autotrace on;
  10. ERROR:
  11. ORA-28002: the password will expire within 7 days
  12. SP2-0619: Error while connecting
  13. SP2-0611: Error enabling STATISTICS report

还是同样的错误,说明在用户密码即将过期时,再修改profile是不会对密码即将过期的用户生效的。应该采用重设用户密码(密码可以与之前的密码一样)的方法。

  1. SQL> alter user darren identified by darren;
  2. User altered.
  3. SQL> conn darren/darren
  4. Connected.
  5. SQL> set autotrace on;

此时成功开启autotrace功能。
        再尝试另外一种情景,在用户登录后修改用户密码,但不重新登录,尝试开启autotrace。

  1. SQL> alter user darren identified by darren
  2. 2 ;
  3. User altered.
  4. SQL> set autotrace on;
  5. ERROR:
  6. ORA-01017: invalid username/password; logon denied
  7. SP2-0619: Error while connecting
  8. SP2-0611: Error enabling STATISTICS report

同样的错误又出现了。
       到此,我们得出一个结论,在开启autotrace功能的时候,数据库会再创建一个会话,用新创建的会话来跟踪当前会话。所以,当用户密码即将过期时,开启autotrace功能时,创建新的会话时会因为返回ORA-2802而产生异常。

二、11g新特性,密码延迟认证

11g中,加入了用户密码延迟认证的特性,即用户如果在登录是输入了错误的密码,那么这个用户的登录验证会随着输入错误密码的次数的增加而增加,直到正确登录后重新计数。如下:

  1. SQL> set time on
  2. 13:32:45 SQL>
  3. conn darren/xxxxxx
  4. conn darren/xxxxxx
  5. conn darren/xxxxxx
  6. conn darren/xxxxxx
  7. conn darren/xxxxxx
  8. conn darren/xxxxxx
  9. conn darren/xxxxxx
  10. ERROR:
  11. ORA-01017: invalid username/password; logon denied
  12. Warning: You are no longer connected to ORACLE.
  13. 13:32:59 SQL> ERROR:
  14. ORA-01017: invalid username/password; logon denied
  15. 13:32:59 SQL> ERROR:
  16. ORA-01017: invalid username/password; logon denied
  17. 13:32:599 SQL> ERROR:
  18. ORA-01017: invalid username/password; logon denied
  19. 13:33:00 SQL> conn gyl/xxxxxx
  20. ERROR:
  21. ORA-01017: invalid username/password; logon denied
  22. 13:33:02 SQL>
  23. ERROR:
  24. ORA-01017: invalid username/password; logon denied
  25. 13:33:05 SQL>
  26. ERROR:
  27. ORA-01017: invalid username/password; logon denied
  28. 13:33:10 SQL>
  29. ERROR:
  30. ORA-01017: invalid username/password; logon denied

可以看到,验证的时间越来越长,如果继续增加错误的登录次数,验证的时间还会继续加长。如果是多个会话同时不断的用错误的密码来连接数据库,那么将会导致该用户的登录HANG住。如果想关闭这个特性,可以设置如下事件:

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

三、sys用户是不受PASSWORD_LIFE_TIME参数限制的
        四、在用户密码过期后,用户的状态(dba_user.account_status)不会立即更新为expired,只有当用户尝试连接到数据库的时候,才会对用户状态进行更新
        五、用户密码相关的一些参数

  1. SQL> select * from dba_profiles where resource_name like '%PASSWORD%';
  2. PROFILE RESOURCE_NAME              RESOURCE      LIMIT
  3. ---------- -------------------------------- -------- ----------
  4. DEFAULT PASSWORD_LIFE_TIME         PASSWORD    UNLIMITED
  5. DEFAULT PASSWORD_REUSE_TIME         PASSWORD   UNLIMITED
  6. DEFAULT PASSWORD_REUSE_MAX          PASSWORD   UNLIMITED
  7. DEFAULT PASSWORD_VERIFY_FUNCTION     PASSWORD  NULL
  8. DEFAULT PASSWORD_LOCK_TIME          PASSWORD   1
  9. DEFAULT PASSWORD_GRACE_TIME         PASSWORD   7

PASSWORD_LIFE_TIME:
               设定口令的有效时间(天数),一旦超过这一时间,必须重新设口令。缺省为180天(11g,10gUNLIMITED).
               PASSWORD_REUSE_TIME:
               许多系统不许用户重新启用过去用过的口令。该资源项设定了一个失效口令要经过多少天,用户才可以重新使用该口令。缺省为UNLIMITED.
               PASSWORD_REUSE_MAX:
               重新启用一个先前用过的口令前必须对该口令进行重新设置的次数(重复用的次数)。
               PASSWORD_LOCK_TIME:
               设定帐户被锁定的天数(当登录失败达到FAILED_LOGIN_ATTEMPTS时)。
               PASSWORD_GRACE_TIME:
               设定在口令失效前,给予的重新设该口令的宽限天。当口令失效之后回,在登录时会出现警告信息显示该天数。如果没有在宽限天内修改口令,口令将失效。
               PASSWORD_VERITY_FUNCTION:
               该资源项允许调用一个PL/SQL 来验证口令。Oracle公司已提供该应用 的脚本,但是只要愿意的话,用户可以制定自己的验证脚本。该参数的设定就是PL/SQL函数的名称。缺省为NULL.
               FAILED_LOGIN_ATTEMPTS:
               设定登录到Oracle 数据库时可以失败的次数。一旦某用户尝试登录数据库的达到该值时,该用户的帐户就被锁定,只能由DBA能解锁。

Oracle用户密码过期问题解决的更多相关文章

  1. Oracle用户密码过期和用户被锁解决方法【转】

    [原因/触发因素] 确定是由于Oracle11g中默认在default概要文件中设置了“PASSWORD_LIFE_TIME=180天”所导致. [影响和风险] 影响 密码过期后,业务进程连接数据库异 ...

  2. oracle 11g密码过期问题解决方法

    ORACLE 11G密码过期问题: 1.使用oracle用户进入sql编辑器中执行修改密码(原始密码,保持不变)的命令 sql>alter user 用户名 identified by &quo ...

  3. Oracle用户密码过期和用户被锁解决方法

    [原因/触发因素] 确定是由于oracle11g中默认在default概要文件中设置了"PASSWORD_LIFE_TIME=180天"所导致. [影响和风险] 影响    密码过 ...

  4. Oracle用户密码过期后重置SYS用户密码

    问题状况: SYS.SYSTEM用户的密码过期,无法登陆. 运行EM控制台后,出现错误——ORA-28001: the password has expired (DBD ERROR: OCISess ...

  5. 11g oracle 用户密码过期问题

    Oracle 11g 之前默认的用户时是没有密码过期的限制的,在Oracle 11g 中默认的profile启用了密码过期时间是180天.如下:select * from dba_profiles w ...

  6. oracle用户密码过期!the password has expired

    Oracle提示错误消息ORA-28001: the password has expired,是由于Oracle11G的新特性所致, Oracle11G创建用户时缺省密码过期限制是180天(即6个月 ...

  7. Oracle 11g oracle 用户密码过期问题 (ZT)

    http://www.blogjava.net/freeman1984/archive/2013/04/23/398301.html Oracle 11g 之前默认的用户时是没有密码过期的限制的,在O ...

  8. Oracle用户密码过期的处理方法

    受影响版本:Oracle11g以上版本.   导致密码消失的原因:Oracle 11g中默认的DEFAULT概要文件中口令有效期PASSWORD_LIFE_TIME默认值为180天.   当以客户端登 ...

  9. Oracle 11g密码过期问题解决方案

    [问题描述]近日,使用sqlplus登陆短消息Oracle(Oracle培训 )数据库时提示“ORA-28000: 帐号被锁定”.[原因/触发因素]确定是由于oracle11g中默认在default概 ...

随机推荐

  1. Oracle 删表前验证表名是否存在并且删除

    DECLARE num NUMBER; BEGIN SELECT COUNT(1) INTO num FROM USER_TABLES WHERE TABLE_NAME = UPPER('tableN ...

  2. SQLServer转MYSQL的方法(连数据)

    本次转换需要依赖使用工具Navicat Premium. 首先,将数据库移至本地SQLServer,我试过直接在局域网上其他SQLServer服务器上想转到本地Mysql好像有问题,想将远程数据库备份 ...

  3. 在XML序列化时去除默认命名空间xmlns:xsd和xmlns:xsi

    摘 自: http://blog.csdn.net/fxhflower/article/details/7276820 可使用以下代码: //Create our own namespaces for ...

  4. pig命令行快捷键

    删除 ctrl + d 删除光标所在位置上的字符相当于VIM里x或者dl ctrl + h 删除光标所在位置前的字符相当于VIM里hx或者dh ctrl + k 删除光标后面所有字符相当于VIM里d ...

  5. [转]从两道经典试题谈C/C++中联合体(union)的使用

    宋宝华 21cnbao sweek@21cn.com 试题一:编写一段程序判断系统中的CPU是Little endian还是Big endian模式? 分析: 作为一个计算机相关专业的人,我们应该在计 ...

  6. JQuery.tmpl()的用法

    动态请求数据来更新页面是现在非常常用的方法,现在通过Ajax请求返回的数据更多的是json对象, 为了解决js动态拼接数据这方面的问题,JavaScript 也可以利用模版来解决这些问题,比如基于 j ...

  7. 开始安装 ASP.NET (4.0.30319.18408)。 出现了错误: 0x8007b799 必须具有此计算机的管理员权限才能运行此工具

    在Visual Studio命令提示符安装ASP.NET .出现了错误: 0x8007b799 必须具有此计算机的管理员权限才能运行此工具:如下图: 解决方案如下: 1.打开“C:\Windows\S ...

  8. Miniprofiler在普通net项目中的使用

    1.Global.asax中配置 Void Application_BeginRequest(Object sender, EventArgs e){ If(Request.IsLocal){ //请 ...

  9. Java 8 Lambda表达式

    Java 8 Lambda表达式探险 http://www.cnblogs.com/feichexia/archive/2012/11/15/Java8_LambdaExpression.html 为 ...

  10. mysql给root开启远程访问权限,修改root密码

    1.MySql-Server 出于安全方面考虑只允许本机(localhost, 127.0.0.1)来连接访问. 这对于 Web-Server 与 MySql-Server 都在同一台服务器上的网站架 ...