当前位置:  数据库>oracle

Oracle用户密码问题

    来源: 互联网  发布时间:2017-06-18

    本文导语: 关于Oracle用户的密码很少去关注,一般都只在安装完数据库后将密码过期时间设置为永不过期,但是一次在开启autotrace时遇到了错误,引起我对用户密码的关注。我们在工作中遇到的环境是千差万别的,你不可能知道下一个客户...

关于Oracle用户的密码很少去关注,一般都只在安装完数据库后将密码过期时间设置为永不过期,但是一次在开启autotrace时遇到了错误,引起我对用户密码的关注。我们在工作中遇到的环境是千差万别的,你不可能知道下一个客户的环境是什么样子,不可能知道安装你所使用的库的DBA是按什么套路安装的数据库,这是实际工作的一个难点所在,当然也是乐趣所在。生产环境的千差万别也是催促我们学习的动力之一。下面介绍三点关于Oracle用户密码的注意点:

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

如果用户密码即将过期,在登录数据库时会收到如下提示:

ERROR:

ORA-28002: the password will expire within 7 days

当然,此时密码还未真正过期,用户在收到错误提示后依然可以登录数据库。但是,如果当收到密码即将过期的提示,想要开启autotrace就会有问题。

SQL> conn darren/darren

  •       ERROR:
  •       ORA-28002: the password will expire within 7 days
  •       Connected.
  •       SQL> set autotrace on;
  •       ERROR:
  •       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进行验证:
           

  • SQL> select profile,resource_name,limit from dba_profiles where resource_name='PASSWORD_LIFE_TIME';
  • PROFILE RESOURCE_NAME        LIMIT
  • ---------- -------------------------------- ----------
  • DEFAULT PASSWORD_LIFE_TIME        1
  •             如果生产环境没有对密码过期的特殊限制,可以把该参数修改为unlimitd:

  • ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED
  •             此时再尝试打开autotrace:

  • SQL> select profile,resource_name,limit from dba_profiles where resource_name='PASSWORD_LIFE_TIME';
  • PROFILE RESOURCE_NAME        LIMIT
  • ---------- -------------------------------- ----------
  • DEFAULT PASSWORD_LIFE_TIME        UNLIMITED
  • SQL> conn darren/darren
  • ERROR:
  • ORA-28002: the will expire within 7 days
  • Connected.
  • SQL> set autotrace on;
  • ERROR:
  • ORA-28002: the will expire within 7 days
  • SP2-0619: Error while connecting
  • SP2-0611: Error enabling STATISTICS report
  •           还是同样的错误,说明在用户密码即将过期时,再修改profile是不会对密码即将过期的用户生效的。应该采用重设用户密码(密码可以与之前的密码一样)的方法。

  • SQL> alter user darren identified by darren;
  • User altered.
  • SQL> conn darren/darren
  • Connected.
  • SQL> set autotrace on;
  •          此时成功开启autotrace功能。
            再尝试另外一种情景,在用户登录后修改用户密码,但不重新登录,尝试开启autotrace。

  • SQL> alter user darren identified by darren
  •   2 ;
  • User altered.
  • SQL> set autotrace on;
  • ERROR:
  • ORA-01017: invalid username/; logon denied
  • SP2-0619: Error while connecting
  • SP2-0611: Error enabling STATISTICS report
  •         同样的错误又出现了。
           到此,我们得出一个结论,在开启autotrace功能的时候,数据库会再创建一个会话,用新创建的会话来跟踪当前会话。所以,当用户密码即将过期时,开启autotrace功能时,创建新的会话时会因为返回ORA-2802而产生异常。

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

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

  • SQL> set time on
  • 13:32:45 SQL>
  • conn darren/xxxxxx
  • conn darren/xxxxxx
  • conn darren/xxxxxx
  • conn darren/xxxxxx
  • conn darren/xxxxxx
  • conn darren/xxxxxx
  • conn darren/xxxxxx
  • ERROR:
  • ORA-01017: invalid username/; logon denied
  • Warning: You are no longer connected to ORACLE.
  • 13:32:59 SQL> ERROR:
  • ORA-01017: invalid username/; logon denied
  • 13:32:59 SQL> ERROR:
  • ORA-01017: invalid username/; logon denied
  • 13:32:599 SQL> ERROR:
  • ORA-01017: invalid username/; logon denied
  • 13:33:00 SQL> conn gyl/xxxxxx
  • ERROR:
  • ORA-01017: invalid username/; logon denied
  • 13:33:02 SQL>
  • ERROR:
  • ORA-01017: invalid username/; logon denied
  • 13:33:05 SQL>
  • ERROR:
  • ORA-01017: invalid username/; logon denied
  • 13:33:10 SQL>
  • ERROR:
  • ORA-01017: invalid username/; logon denied
  •        可以看到,验证的时间越来越长,如果继续增加错误的登录次数,验证的时间还会继续加长。如果是多个会话同时不断的用错误的密码来连接数据库,那么将会导致该用户的登录HANG住。如果想关闭这个特性,可以设置如下事件:

  • SQL> ALTER SYSTEM SET EVENT = ‘28401 TRACE NAME CONTEXT FOREVER, LEVEL 1’ SCOPE = SPFILE;
  •         三、sys用户是不受PASSWORD_LIFE_TIME参数限制的
            四、在用户密码过期后,用户的状态(dba_user.account_status)不会立即更新为expired,只有当用户尝试连接到数据库的时候,才会对用户状态进行更新
            五、用户密码相关的一些参数

  • SQL> select * from dba_profiles where resource_name like '%PASSWORD%';
  • PROFILE RESOURCE_NAME              RESOURCE      LIMIT
  • ---------- -------------------------------- -------- ----------
  • DEFAULT PASSWORD_LIFE_TIME            UNLIMITED
  • DEFAULT PASSWORD_REUSE_TIME           UNLIMITED
  • DEFAULT PASSWORD_REUSE_MAX          UNLIMITED
  • DEFAULT PASSWORD_VERIFY_FUNCTION      NULL
  • DEFAULT PASSWORD_LOCK_TIME             1
  • DEFAULT PASSWORD_GRACE_TIME           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能解锁。


        
     
     

    您可能感兴趣的文章:

  • Linux平台下Oracle 密码文件重建
  • ORACLE 中修改用户密码的方法
  • 安装Oracle 10g忘记sys密码
  • 登录oracle数据库时密码忘记的解决方法
  • Oracle 忘记密码的找回方法
  • Linux下修改Oracle用户密码
  • 修改Oracle默认用户密码有效期时间
  • Oracle密码文件的使用和维护第1/3页
  • oracle修改scott密码与解锁的方法详解
  • oracle 重置sys密码的方法介绍
  • Oracle 11G密码180天过期后的修改方法
  • 将oracle用户密码设置成只有数字的
  • Oracle用户密码含特殊字符时登陆失败问题
  • Oracle数据库密码文件的使用与维护
  • oracle忘记sys/system/scott用户密码的解决方法
  • oracle中不知道某数据库用户密码的情况下也能登陆
  • Oracle 密码丢失解决方法祥述
  • 怎样拒绝Oracle数据库的密码出现@符号
  • Oracle数据库密码出现@符号的解决
  • Oracle用户密码含有特殊字符导致无法登陆解决方法
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • oracle创建删除用户示例分享(oracle删除用户命令及授权)
  • linux6.0下安装oracle11g, 新建用户后,在用户目录下为什么没有.bash_profile文件生成? 求教高手。谢谢!
  • Oracle一个用户如何访问其它用户的表应用指南
  • oracle用户口令丢了
  • 修改oracle用户的.bash_profile之后无法正常登陆
  • linux下如何查看是什么用户安装的oracle
  • oracle+jsp 多用户查询系统讨论:
  • linux中定时任务 oracle用户该如何做?
  • 杀掉oracle在线用户脚本分享
  • linux能够通过执行脚本添加oracle数据库的用户吗
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 问一个简单的问题,我装了oracle 8.05,我并没有发有发现JDBC这个目录,是不是我要下载jdbc for oracle。
  • Linux下的Oracle安装问题(非常问题)
  • Oracle 10g中导出到Oracle 9的问题小结
  • oracle JDBC的问题
  • Suse linux使用oracle问题
  • 请教: Javaswing 和 Oracle JDBC thin 连接的问题
  • oracle版本问题
  • 关于oracle的一个恼火的小问题!
  • Javabeen+oracle的问题
  • 安装ORACLE的问题
  • 再问java 连接oracle 问题,急!
  • Oracle 监听内存泄露问题
  • Oracle乱码问题
  • oracle环境变量保存问题求教
  • Oracle高级官员回答Sun雇员的问题
  • 请问一个oracle的jdbc问题
  • Jsp连接Oracle的问题 ???
  • oracle的job不能运行问题的解决方法
  • 请教JSP与ORACLE连接问题。
  • JAVA连接ORACLE问题(100分)
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • 问一个简单的问题,我装了oracle 8.05,我并没有发有发现JDBC这个目录,是不是我要下载jdbc for oracle。 iis7站长之家
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


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

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3