在使用Oracle数据库的过程中,sysman是OEM(Oracle Enterprise Manager)的默认管理用户,当这个用户的密码过期时,就会出现OEM无法登录、功能无法正常加载的情况,很多运维人员第一次遇到这类问题时往往不知道从何下手。下面我们就一步步讲解完整的解决方法。

问题排查确认
首先我们需要确认OEM无法使用确实是因为sysman密码过期导致的,而不是其他网络或者配置问题。可以通过以下步骤排查:
- 尝试使用sysman账号通过sqlplus登录数据库,如果提示密码过期,就可以确定是密码问题
- 查看数据库的告警日志,看是否有密码过期的相关报错信息
- 检查OEM的启动日志,通常会有认证失败的相关记录
具体解决步骤
1. 登录数据库修改sysman密码
使用具有DBA权限的用户(比如sys用户)登录数据库,然后重置sysman的密码,同时设置密码永不过期或者延长有效期。以下是具体的SQL操作示例:
-- 使用sys用户登录数据库,这里以sqlplus为例 sqlplus / as sysdba -- 查看sysman用户的密码状态,确认是否过期 SELECT username, account_status, expiry_date FROM dba_users WHERE username = 'SYSMAN'; -- 重置sysman用户的密码,这里将密码设置为新的强密码,替换成你自己的密码 ALTER USER sysman IDENTIFIED BY New_Passw0rd_2024; -- 设置sysman用户的密码永不过期,避免后续再次过期 ALTER USER sysman PROFILE DEFAULT; -- 或者单独修改密码有效期,比如设置为365天 ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 365;
2. 同步OEM中的密码配置
修改完数据库中的sysman密码后,还需要同步OEM的配置文件,否则OEM还是会用旧的密码去连接数据库,导致依然无法使用。操作步骤如下:
首先停止OEM服务,不同版本的Oracle停止命令略有区别,以11g为例:
-- 切换到Oracle用户,进入OEM的bin目录 cd $ORACLE_HOME/bin -- 停止OEM服务 emctl stop dbconsole
然后修改OEM的配置文件,将里面的sysman密码更新为刚设置的新密码,配置文件路径通常在$ORACLE_HOME/sysman/config目录下,找到emoms.properties文件,修改里面的oracle.sysman.eml.mntr.emdRepPwd字段的值为新密码,注意密码需要做base64编码处理,也可以使用Oracle提供的工具来更新:
-- 使用emctl工具重新配置OEM的密码 emctl config emrep -sysman_pwd New_Passw0rd_2024
3. 重启OEM服务
完成密码同步后,重新启动OEM服务即可:
emctl start dbconsole -- 查看OEM服务状态,确认是否正常启动 emctl status dbconsole
注意事项
- 重置密码时尽量使用符合Oracle密码复杂度要求的密码,避免设置过于简单的密码导致后续安全问题
- 如果数据库有多个实例,需要确认修改的是对应OEM所使用的实例的sysman用户
- 修改完密码后建议测试一下sysman用户能否正常登录数据库,再启动OEM,避免重复操作
- 如果是生产环境,操作前建议备份相关的配置文件和用户状态,防止操作失误影响业务
如果完成以上步骤后OEM还是无法正常使用,可以查看OEM的详细日志,日志路径通常在$ORACLE_HOME/sysman/log目录下,根据日志中的报错信息进一步排查问题。
只要按照上述步骤操作,基本都可以解决sysman密码过期导致的OEM无法使用的问题,后续也可以通过定期检查用户密码状态,提前处理即将过期的密码,避免影响业务使用。