Oracle教程:OEM错误之ORA-28001


为了学习,把数据库的verify_function功能打开,自动将default概要文件的密码过期时间设置成60天,密码重用的天数为18000天,密码满足复杂性要求等等,关闭verify_function功能后,没有及时修改default概要文件,导致sysman和dbsnmp用户密码过期后,打开OEM界面直接报错如下图,其他部件均正常!

查看sysman和dbsnmp用户的状态均为密码过期,修改密码后重新登录OEM,依然报错如下图!

SQL> select username,account_status from dba_users where username='SYSMAN';
USERNAME                       ACCOUNT_STATUS
SYSMAN                         EXPIRED

SQL> alter user sysman identified by "123456";
User altered.

SQL> alter user dbsnmp identified by "123456";
User altered.


再次查询sysman和dbsnmp用户的状态,这次的状态为LOCKED(TIMED)
SQL> select username,account_status from dba_users where username='SYSMAN';
USERNAME                       ACCOUNT_STATUS
SYSMAN                         LOCKED(TIMED)

原因:
dbsnmp和sysman这两个用户和oem紧密相关,dbsnmp用户启动Oracle智能代理,用于收集oracle系统运行状态的相关数据,sysman是oem的超级管理员。如果配置了oem后,又使用alter user <用户名> identified by <新口令>;修改了这两用户的口令,就会出现dbsnmp 和sysman  "LOCKED(TIMED)". 的情况。

解决方法:
还必须同步修改oem中记录的dbsnmp和sysman用户的口令。

$emca  -config  dbcontrol db

根据提示修改sysman和dbsnmp的口令即可。

相关内容