1、被百度逼的,为获得积分,转载他人文档.感谢原创者!今天发现服务器上的Oracle11g突然登录不上去了,提示ORA-28002错误,说是口令过期。不当DBA还真不知道Oracle有这神秘功能。上网上一查,有类似遭遇的朋友在论坛上求助,人家让他找DBA。汗。。。好在有的DBA乐于分享,终于找到了解决方案:1.用DBA账户登录SQLPLUS。我用的是sysman。2.系统会提示口令失效,但是会马上让你重置新密码。3.重置之后,进入SQLPLUS控制台。4.查看口令失效用户的profile文件SQL>SELECT username,profile FROM dba_user
2、s;EM(Web界面的控制台):服务器>用户,查看口令失效的用户对应的概要文件,这里假设为DEFAULT,下同。5.查看对应的概要文件的口令有效期设置SQL>SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';EM(Web界面的控制台):服务器>概要文件>选择刚刚查到的概要文件DEFAULT>查看,查看口令下面的有效期值。6.将口令有效期默认值180天修改成“无限制”(此项要慎重!除非你真得不想要这个密码失效的机制!)SQL>ALTER PR
3、OFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;EM:服务器>概要文件>选择刚刚查到的概要文件DEFAULT>编辑>口令,在有效期输入或选择你需要的值,保存。该参数修改实时生效。出于数据库安全性考虑,不建议将PASSWORD_LIFE_TIME值设置成UNLIMITED,即建议客户能够定期修改数据库用户口令。在修改PASSWORD_LIFE_TIME值之前已经失效的用户,还是需要重新修改一次密码才能使用。SQL>ALTER USER test INDENTIFIED BYpassword也可以从SQLDeveloper
5、localhost:1158/em/ 但是却发现如下问题, 刚开始以为是instance没有起来,但是执行如下SQL语句,发现数据库已经Open了, sys@ORCL> select open_mode from v$database;OPEN_MODE----------READ WRITE 那么是啥问题呢???注意到上图中有个ORA-28001错误,提示password过期了!!那么是那个user的密码过期了呢,很容易想到是SYSMAN。 那么查下SYSMAN的状态, sys@ORCL> select username, account_status, lo
6、ck_date, expiry_date from dba_users 2 where username = 'SYSMAN';USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DA------------------------------ -------------------------------- --------- ---------SYSMAN EXPIRED
7、 22-APR-10sys@ORCL> 可以看到SYSMAN的密码早就过期了!! 找到问题所在,接下来就进行解决吧,先改动SYSMAN的密码试下看看,sys@ORCL> alter user SYSMAN identified by sysman;User altered.sys@ORCL> select username, account_status, lock_date, expiry_date from dba_users 2 where username = 'SYSMAN';USERNAME