首页 > 代码库 > Oracle11g账户密码过期以及无法用sysdba身份进去sqlplus

Oracle11g账户密码过期以及无法用sysdba身份进去sqlplus

现象

        系统运行的时候突然无法进入系统了,通过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步开始即可。