【现象】
系统运行的时候突然无法进入系统了,通过FF浏览器调试,发现错误原因是"ORA-28001: the password has expired"是oracle 账户密码过期。
【原因/触发因素】
通过百度查询是由于Oracle11G的新特性所致, Oracle11G创建用户时缺省密码过期限制是180天(即6个月), 如果超过180天用户密码未做修改则该用户无法登录。 Oracle公司是为了数据库的安全性默认在11G中引入了这个默认功能,但是这个默认的功能很容易被DBA或者是开发人员给疏忽,一旦密码180天未修 改过,就会出现这样的问题。
【解决方案】
1>CMD 进入DOS系统,输入"sqlplus /nolog"。
2>已sysdba身份连接,输入"conn /as sysdba"。
3>查看用户的proifle是哪个,一般是default 输入"SELECT username,PROFILE FROM dba_users;" 注:sql语句需要加";"。
4>查看指定概要文件(如default)的密码有效期设置。输入"SELECT * FROM dba_profiles s WHERE s.profile=‘DEFAULT‘ AND resource_name=‘PASSWORD_LIFE_TIME‘;"。
5>将密码有效期由默认的180天修改成“无限制”输入"ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;"。此时修改之后应该能够进入系统了。
6>重新执行步骤4,可以看出密码有效期已经修改成了UNLIMITED。
【解决过程】
执行"解决方案"第2步的时候,出现"ERROR:ORA-12560:TNS:协议适配器错误。"
此问题解决过程:
1>首先确保监听以及实例已经运行起来了。
2>设置环境变量:oracle_sid="实例名",oracle_name=oracle安装地址(例:E:\app\ZHANGZHEN\product\11.2.0\dbhome_1),需要重启实例以及监听。或者在dos中执行"set oracle_sid= 实例名"
3>按照解决方案第3步开始即可。
Oracle11g账户密码过期以及无法用sysdba身份进去sqlplus