ORA-12505报错:监听器无法识别连接描述符中给定SID如何排查
ORA-12505错误的本质是数据库监听进程运行时,未在自身注册列表中匹配到客户端连接串指定的SID,可按照以下方向逐层排查:
第一步:验证监听当前注册的SID列表
在数据库所在服务器执行lsnrctl status命令,查看输出的Services Summary段落,确认你使用的SID是否在已注册的服务列表中。如果未出现,说明数据库实例未成功注册到监听。
第二步:排查实例注册问题
- 确认数据库实例处于运行状态:Windows系统检查服务列表中
OracleService<你的SID>是否为启动状态;Linux/Unix系统执行ps -ef | grep pmon,确认存在对应SID的pmon进程。 - 若实例已运行,手动触发注册:使用sysdba身份登录数据库,执行
alter system register;,等待10秒后再次执行lsnrctl status查看SID是否已出现在注册列表中。 - 检查
local_listener参数配置:登录数据库执行show parameter local_listener,如果返回值非空,确认参数值指向的监听地址、端口和listener.ora中的实际配置完全一致,配置错误会导致实例无法注册到指定监听。
第三步:排查客户端连接配置问题
- 确认
tnsnames.ora中HOST参数填写的是数据库服务器的正确IP/主机名,使用主机名时要保证客户端能正常解析到对应IP。 - 确认
tnsnames.ora中PORT参数和listener.ora里监听的端口完全一致,默认端口为1521,修改为自定义端口后要同步更新客户端配置。 - 检查连接串拼写:如果使用直连模式不依赖tnsname,确认连接串中SID字段无拼写错误、前后无多余空格或特殊字符。
第四步:排查监听配置异常
- 重载监听配置:如果修改过
listener.ora后未重启监听,执行lsnrctl reload重载配置,或执行lsnrctl stop、lsnrctl start完整重启监听后再测试连接。 - 校验静态注册配置:如果使用静态注册方式,确认
listener.ora的SID_LIST配置段中,SID_NAME和GLOBAL_DBNAME和实际的数据库SID、服务名完全匹配,大小写敏感的操作系统要注意大小写完全一致。
内容的提问来源于stack exchange,提问作者Ezazulian
相关产品推荐
相关产品推荐

