You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure部署Oracle Server连接报ORA-12514错误求排查方案

ORA-12514错误排查方案

ORA-12514错误和网络连通性、防火墙无关,核心是Oracle监听器未识别到应用连接串中指定的服务名,可按以下步骤依次排查:

步骤1:确认监听器已注册的服务列表

登录Oracle所在的Linux服务器,切换到oracle用户,执行命令:
lsnrctl status
查看输出末尾的Services Summary段落,核对列出的服务名是否和应用连接串中填写的服务名完全一致(注意区分大小写)。

注意:不要混淆服务名(SERVICE_NAME)和实例ID(SID),大部分用户报错都是误将SID填到了连接串的服务名位置。

步骤2:修复服务未注册问题

如果步骤1中没有找到你需要的服务名,可选以下两种方案配置:

方案A:配置动态注册

  1. 以管理员身份登录数据库:
    sqlplus / as sysdba
  2. 手动触发服务注册:
    alter system register;
  3. 等待60秒后重新执行lsnrctl status查看服务是否出现。如果仍未出现,检查local_listener参数配置:
show parameter local_listener;
-- 若参数为空或指向地址错误,执行以下修改,替换为你Oracle服务器的实际IP
alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.x.x)(PORT=1521))' scope=both;
-- 重新触发注册
alter system register;

方案B:配置静态注册(更稳定,适合固定对外提供服务的场景)

  1. 编辑监听器配置文件$ORACLE_HOME/network/admin/listener.ora,添加以下内容:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = 对外暴露的服务名,可自定义,需和连接串一致)
      (ORACLE_HOME = 你的Oracle安装路径,示例:/u01/app/oracle/product/19c/dbhome_1)
      (SID_NAME = 数据库实例SID,示例:orcl)
    )
  )
  1. 重启监听器生效:
    lsnrctl restart
  2. 执行lsnrctl status确认静态服务已注册。

步骤3:核对应用连接串配置

以JDBC连接串为例,正确的服务名连接格式为:
jdbc:oracle:thin:@//<Oracle服务器IP>:1521/<服务名>
不要使用SID格式的连接串:
jdbc:oracle:thin:@<Oracle服务器IP>:1521:<SID>


补充:你已经正确开放了1521端口,且连通性测试正常,不需要关闭Linux端防火墙,关闭防火墙反而会带来安全风险。

内容的提问来源于stack exchange,提问作者Patterson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:54:03