一、用户密码即将过期,导致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能解锁。

转载于:https://www.cnblogs.com/telwanggs/p/6477326.html

Oracle用户密码过期问题解决相关推荐

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

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

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

    Oracle用户密码过期和用户被锁解决方法[转] 参考文章: (1)Oracle用户密码过期和用户被锁解决方法[转] (2)https://www.cnblogs.com/paul8339/p/590 ...

  3. oracle禁止修改密码,Oracle 用户密码过期后不允许修改密码的示例代码

    --本人是初学者,不知道还有没有更好的方法create table PASSWD_CHANGED ( USER_NAME VARCHAR2(20), OLD_PASSWD VARCHAR2(100), ...

  4. oracle用户密码已过期,oracle用户密码过期的处理方法

    oracle用户密码过期?不要紧,下面就为您介绍一个oracle用户密码过期的处理方法,供您参考,如果您对此方面感兴趣的话,不妨一看. 在测试环境学习oracle,出现oracle用户密码过期的问题, ...

  5. Oracle用户密码过期,修改永不过期

    1.查询密码有效时长 select * from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME' ...

  6. oracle 用户密码过期及登录错误次数限制

    一般数据库默认是10次尝试失败后锁住用户 1.查看FAILED_LOGIN_ATTEMPTS的值 select * from dba_profiles where resource_name = 'F ...

  7. Linux操作Oracle(11)——Oracle用户密码过期 设置密码永不过期方法

    目录 1.使用管理员sys或其他有管理员权限的账号登录数据库 2.查看当前数据库所有用户

  8. 新装oracle密码过期,Oracle 11g密码过期问题及解决方案

    问题: 在自用的一个系统里,连接的是本地自建的一个数据库.用sqldeveloper登录数据库.提示如下图: 提示:密码过期 解决方案: 密码过期一般存在两种可能: 由于Oracle中默认在defau ...

  9. 关于Oracle数据库用户密码过期的预防和解决办法

    适用范围:各业务平台Oracle11g数据库 数据库软件:Oracle 故障现象: Oracle11g中默认在default概要文件中设置了"PASSWORD_LIFE_TIME=180天& ...

最新文章

  1. 百度人脸检测与识别项目资源
  2. 【翻译】CodeMix使用的语言和框架(二):PHP
  3. 支持驱动最好的linux软件,Linux平台设备和驱动
  4. MyBatis配置错误
  5. Ubicomp2018年论文列表
  6. c6x Linux 内核中断分析
  7. mac 鼓捣php 多版本切换
  8. jacob 详解 语音_JAVA 实现Jacob语音播报
  9. 前端导出 pdf 分页带表头,导出pdf 不分页
  10. 利用SPSS做数据分析②之数据处理1
  11. “百度开放云编程马拉松”成都赛区19件作品及团队介绍
  12. web前端工程师等级分布
  13. MYSQL 基础篇(补)
  14. 最简单的方式实现竖排文字显示
  15. 夕阳落山图(js 夕阳下山)
  16. windows AD域的特点
  17. freemarker 遍历 map
  18. vue 如何实现多个路由共用同一个页面组件
  19. 感谢默默无闻,致敬负重前行
  20. 非淡泊无以明志, 非宁静无以致远

热门文章

  1. CentOS 内核升级的总结
  2. Hive 之 导入导出数据
  3. html图片自动替换图片,十种图片替换文本CSS方法
  4. 华为鸿蒙理性,华为的理性,鸿蒙的节奏
  5. c++ vector排序_个性化推荐系统源代码之基于LR模型的推荐系统离线排序方案
  6. 从零开始学电脑办公_每天学一点 7天学会使用电脑办公操作
  7. php swich w3c,JS Switch
  8. L2TP协议笔记2---L2TP主要协议报文分析
  9. linux多线程学习(一)
  10. 深入理解ARM体系架构(S3C6410)---lcd 显示图片