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

Oracle 11g express edition报ORA-12505监听错误频繁复发求助

ORA-12505周期性报错排查解决方案

报错原理

ORA-12505本质是TNS监听程序的服务列表中,不存在你连接描述符中填写的SID,无需每次重装数据库,按以下步骤排查即可解决:

第一步:先确认监听服务状态

报错时无需立刻重装,先登录数据库所在服务器,执行监听状态查询命令:
lsnrctl status
查看输出的Services Summary区块,确认是否存在你连接使用的SID对应的服务条目:

  • 无对应条目:实例未成功向监听注册,走后续排查
  • 有对应条目:检查你SQL Developer/ODBC配置的SID、IP、端口是否和监听输出一致,注意大小写敏感
    报错截图1

第二步:修复动态注册异常

Oracle默认通过PMON进程自动向监听注册实例信息,注册失败是90%以上偶发ORA-12505的诱因:

  1. 登录数据库实例,执行命令查看本地监听配置参数:
    show parameter local_listener
  2. 如果参数值为空、或填写的监听地址/端口与实际监听配置不符,执行修改命令(替换成你实际的服务器IP、监听端口):
    alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.xxx.xxx)(PORT=1521))' scope=both;
  3. 手动触发实例注册,无需重启实例:
    alter system register;
    等待10秒后再次执行lsnrctl status即可看到对应SID的服务条目。
    监听配置截图

第三步:定位周期性触发根因

每3天复发属于有规律的触发,优先排查以下场景:

  • 检查服务器是否有每3天运行的定时任务,涉及重启监听、重启服务器、重置网络配置的操作
  • 检查服务器IP是否为DHCP分配,是否每3天续租更换IP,导致local_listener配置的旧IP失效
  • 查看监听运行日志(默认路径$ORACLE_BASE/diag/tnslsnr/[主机名]/listener/alert/log.xml),确认报错时间点是否有监听异常重启的记录

第四步:配置静态注册兜底

如果动态注册始终不稳定,直接配置静态注册即可彻底解决该问题:

  1. 打开监听配置文件$ORACLE_HOME/network/admin/listener.ora,添加静态注册配置:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = 你的全局数据库名,可通过`show parameter db_name`查询)
      (ORACLE_HOME = 你的ORACLE_HOME绝对路径,例如/u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = 你连接使用的SID)
    )
  )
  1. 重载监听配置使修改生效:
    lsnrctl reload
    静态注册生效后,只要数据库实例处于启动状态,监听就会始终保留对应SID的服务条目,不会再出现识别不到SID的问题。
    ODBC配置截图

验证

配置完成后先在服务器本地测试连接:
sqlplus 用户名/密码@'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=服务器IP)(PORT=1521))(CONNECT_DATA=(SID=你的SID)))'
本地连接成功后,再更新SQL Developer、ODBC DSN的配置即可正常连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 12:42:03