DB Control 创建失败主因是数据库未就绪、端口冲突或12c+版本不支持;需检查EM组件状态、SYSMAN用户、监听,指定并清理端口,修复证书及静态资源,12c+应改用EM Express。
emca 创建 DB Control 失败:常见报错和前置检查
直接运行 emca -config dbcontrol db 却提示 “ora-00942: table or view does not exist” 或 “em configuration failed”,大概率不是命令写错了,而是数据库实例没准备好。db control 依赖一组预置的 em 相关数据字典视图和包(比如 dbms_em、mgmt_target),这些在数据库创建时默认不启用,尤其在使用 dbca -silent 或手动建库后容易遗漏。
必须确认以下三点:
-
SELECT comp_name, status FROM dba_registry WHERE comp_name LIKE '%Enterprise Manager%';返回VALID -
SELECT username FROM dba_users WHERE username = 'SYSMAN';能查到用户(且状态为OPEN) -
lsnrctl status显示监听已启动,且数据库服务名注册正常(否则 emca 连不上实例)
emca 端口冲突:如何指定并验证 HTTP/HTTPS 端口
默认端口(1158)被占用是 emca 配置失败最常被忽略的原因——它不会自动换端口,也不会明确告诉你“端口已被占用”,而是卡在 “Configuring Database Control…” 后超时失败。关键在于:端口绑定发生在 emca 执行后期,此时数据库配置已完成,但 OC4J 容器起不来。
改端口不能只改参数,要分两步走:
- 执行前加
-PORT和-HTTP_PORT参数:emca -config dbcontrol db -PORT 1521 -HTTP_PORT 8080 -HTTPS_PORT 8443 - 改完必须手动清理残留:
emca -deconfig dbcontrol db -skipDbReload(否则下次还读旧配置) - 验证是否真生效:
netstat -an | grep 8080(Linux)或lsof -i :8080;同时检查$ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_<host>_<sid>/config/http-web-site.xml中<web-site port="8080">是否匹配
emca 配置后打不开页面:SSL、证书与静态资源路径问题
页面能打开但提示“无法建立安全连接”或空白,不是浏览器问题,而是 Oracle 自签名证书未被信任,或 OC4J 静态文件路径权限不对。DB Control 的 HTTPS 是硬编码强制启用的,哪怕你只配了 HTTP 端口,它仍会尝试加载 SSL 配置。
绕过或修复的关键点:
- 临时跳过证书校验:Chrome 访问时输入
chrome://flags/#unsafely-treat-insecure-origin-as-secure,把http://yourhost:8080加进去(仅测试用) - 真正解决需重生成证书:
emca -reconfig ports -port 8080会触发 OC4J 重建 keystore,但前提是$ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_*/config/ssl-config.xml里keystore-file路径可写 - 如果页面 CSS/JS 404,检查
$ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_*/applications/em.ear/em/下文件是否完整,缺失时需从同版本 Oracle 安装介质里复制补全
Oracle 12c 及以后:DB Control 已废弃,别再折腾 emca
从 12.1 开始,Oracle 官方停用 DB Control,改推 EM Express(https://host:5500/em),它不依赖 OC4J、不占额外端口、无需 sysman 用户。如果你用的是 12c+,运行 emca 本身就会报 EM Configuration Assistant is not supported for this database version。
替代方案极简:
- 确认数据库启用了 XDB(
SELECT dbms_xdb.gethttpport FROM dual;,若为 0 则执行EXEC DBMS_XDB.SETHTTPPORT(5500);) - 用
ALTER USER sys IDENTIFIED BY xxx;确保 sys 密码已设(EM Express 强制要求) - 直接浏览器访问
https://<host>:5500/em,用SYS用户 + OS 认证或密码登录
老环境升级到 12c+ 后还留着 emca 配置,反而会导致端口冲突和监听异常,这点最容易被运维忽略。

















