执行emca前须确认:①数据库实例状态为OPEN;②监听器正常运行并注册实例;③HTTP端口(默认1158)未被占用。
emca命令执行前必须确认的几件事
oracle 11g 的企业管理器(db control)默认在安装时自动配置,但常见于重装、主机名变更、监听异常或端口被占后失效。此时不能直接运行 emca,否则大概率报错 severe: failed to allocate port(s) 或 ora-20001: sysman already exists。先确认三点:
- 数据库实例已启动且状态为
OPEN(用sqlplus / as sysdba执行select status from v$instance;) - 监听器正常运行(
lsnrctl status能看到对应实例的服务名) - 未被占用的 HTTP 端口(默认 1158),可用
netstat -an | grep 1158(Linux)或netstat -ano | findstr :1158(Windows)检查
重建 DB Control 配置的标准 emca 命令流程
重建不是“重装”,而是清空旧配置并重新生成。关键在于顺序和参数组合——漏掉 -deconfig 直接 -config 会失败。
- 先清理残留配置:
emca -deconfig dbcontrol db -repos drop(会删除 SYSMAN 用户及 EM 相关 schema) - 再重建仓库与控制台:
emca -config dbcontrol db -repos create - 若需指定端口(如 1159):
emca -config dbcontrol db -repos create -HTTPPort 1159 - 若数据库使用非默认服务名(如不是
ORCL):emca -config dbcontrol db -repos create -SERVICE_NAME mydb
执行中会提示输入 SYS 和 DBSNMP 密码;SYSMAN 密码可自设,但建议记牢——后续登录 EM 控制台即用此密码。
常见报错及绕过方法
emca 报错大多源于环境不干净或权限不足,不是命令写错。
-
ORA-20001: SYSMAN already exists:说明上一步-deconfig没成功,手动删掉用户:drop user sysman cascade;,再删掉同义词:drop public synonym MGMT_TARGET_MEMBERS;(如有) -
SEVERE: Failed to allocate port(s):端口被占或防火墙拦截。改用空闲端口(如-HTTPPort 1160),或临时关闭防火墙验证 -
EM Configuration failed后无具体错误:检查$ORACLE_HOME/network/admin/listener.ora中是否包含HOST =对应当前主机名(不能是localhost或 IP),否则 EM 无法反向连接数据库
验证与访问控制台
命令执行成功后,输出末尾会显示类似 https://myhost:1158/em 的 URL。但别急着浏览器打开——先确认两个服务进程存在:
- Linux 下运行
ps -ef | grep emagent,应看到emagent进程 - Windows 下检查服务列表是否有
OracleDBConsole<sid></sid>(如OracleDBConsoleORCL),且状态为“正在运行” - 首次访问需用 HTTPS,浏览器可能因自签名证书报“不安全”,点“高级→继续访问”即可
- 登录用户名是
sys(非 SYSMAN),身份选Sysdba,密码为SYS用户密码
如果页面加载卡在“Loading...”,大概率是 emagent 没起来或数据库监听没注册动态服务,此时看 $ORACLE_HOME/hostname_sid/sysman/log/emagent.log 最靠后的 ERROR 行,比猜更快。











