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-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 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是不会对密码即将过期的用户生效的。应该采用重设用户密码(密码可以与之前的密码一样)的方法。
- 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/password; 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/password; logon denied
- Warning: You are no longer connected to ORACLE.
- 13:32:59 SQL> ERROR:
- ORA-01017: invalid username/password; logon denied
- 13:32:59 SQL> ERROR:
- ORA-01017: invalid username/password; logon denied
- 13:32:599 SQL> ERROR:
- ORA-01017: invalid username/password; logon denied
- 13:33:00 SQL> conn gyl/xxxxxx
- ERROR:
- ORA-01017: invalid username/password; logon denied
- 13:33:02 SQL>
- ERROR:
- ORA-01017: invalid username/password; logon denied
- 13:33:05 SQL>
- ERROR:
- ORA-01017: invalid username/password; logon denied
- 13:33:10 SQL>
- ERROR:
- ORA-01017: invalid username/password; 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 PASSWORD UNLIMITED
- DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED
- DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED
- DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL
- DEFAULT PASSWORD_LOCK_TIME PASSWORD 1
- 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用户密码过期问题解决的更多相关文章
- Oracle用户密码过期和用户被锁解决方法【转】
[原因/触发因素] 确定是由于Oracle11g中默认在default概要文件中设置了“PASSWORD_LIFE_TIME=180天”所导致. [影响和风险] 影响 密码过期后,业务进程连接数据库异 ...
- oracle 11g密码过期问题解决方法
ORACLE 11G密码过期问题: 1.使用oracle用户进入sql编辑器中执行修改密码(原始密码,保持不变)的命令 sql>alter user 用户名 identified by &quo ...
- Oracle用户密码过期和用户被锁解决方法
[原因/触发因素] 确定是由于oracle11g中默认在default概要文件中设置了"PASSWORD_LIFE_TIME=180天"所导致. [影响和风险] 影响 密码过 ...
- Oracle用户密码过期后重置SYS用户密码
问题状况: SYS.SYSTEM用户的密码过期,无法登陆. 运行EM控制台后,出现错误——ORA-28001: the password has expired (DBD ERROR: OCISess ...
- 11g oracle 用户密码过期问题
Oracle 11g 之前默认的用户时是没有密码过期的限制的,在Oracle 11g 中默认的profile启用了密码过期时间是180天.如下:select * from dba_profiles w ...
- oracle用户密码过期!the password has expired
Oracle提示错误消息ORA-28001: the password has expired,是由于Oracle11G的新特性所致, Oracle11G创建用户时缺省密码过期限制是180天(即6个月 ...
- Oracle 11g oracle 用户密码过期问题 (ZT)
http://www.blogjava.net/freeman1984/archive/2013/04/23/398301.html Oracle 11g 之前默认的用户时是没有密码过期的限制的,在O ...
- Oracle用户密码过期的处理方法
受影响版本:Oracle11g以上版本. 导致密码消失的原因:Oracle 11g中默认的DEFAULT概要文件中口令有效期PASSWORD_LIFE_TIME默认值为180天. 当以客户端登 ...
- Oracle 11g密码过期问题解决方案
[问题描述]近日,使用sqlplus登陆短消息Oracle(Oracle培训 )数据库时提示“ORA-28000: 帐号被锁定”.[原因/触发因素]确定是由于oracle11g中默认在default概 ...
随机推荐
- 学习练习 java 程序设计园的周长面积
编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果. 注:系统类Math位于java.lang包中,圆周率π可以由Math类的静态属性PI得到,其定义为“public static fin ...
- PowerDesigner之PDM(物理概念模型)
一.PDM概述 PDM(物理数据模型),通俗地理解,就是在PowerDesigner中以图形化的方式展示和设计数据库. PDM中涉及到的基本概念包括: 表: 列: 视图: 主键: 候选键: 外键: 存 ...
- js基础笔记
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF- ...
- c++ builder TreeView控件节点遍历
void __fastcall TForm1::GetRootNodes(TTreeView *DestTreeView)//得到所有根节点 { TTreeNode *vNode = NULL; vN ...
- js怎样改变div的宽度
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ubuntu下使用nethogs监控网络流量
NetHogs是一款小巧免费的开源命令行工具,用来按进程或程序实时统计网络带宽使用率. 对于使用类似于“repo tool”.“depot_tools”等工具checkout源码时非常有用,可以查看当 ...
- python yield用法举例说明
1 yield基本用法 典型的例子: 斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到.1 2 3 5 8…… def fab(ma ...
- CentOS学习笔记--SCSI 设备热插拔
CentOS学习笔记--SCSI 设备热插拔 处于运行中的服务器,因业务要求也许不允许重启机器,而新添加的SCSI设备(主要是硬盘)如何实现热插拔呢? 首先需要查看一下设备: #cat /proc/s ...
- Centos6.5系统初学者基本系统配置1
作为一个初步接触linux-Centos的菜鸟来说,Centos在基本软件安装是一件比较令人头疼的事情,下面我将我初步使用linux的一些问题进行了汇总和记录,希望对大家有所帮助,这些东西也是在网友的 ...
- Linux rename命令
转载:http://blog.csdn.net/sea_shore/article/details/6102437 1.rename命令批量修改文件名, 其实linux下可以使用别的办法来批量修改文件 ...