oracle静态监听配置需确保listener.ora位于$oracle_home/network/admin/,由oracle用户读写;listener与sid_list_listener必须成对存在,host须填实际ip而非localhost,且需reload或重启后验证lsnrctl status中服务状态为ready。

listener.ora 文件位置和权限必须正确
配置前先确认 $ORACLE_HOME/network/admin/listener.ora 存在且可写,Oracle 用户必须拥有该文件的读写权限。常见错误是用 root 编辑后忘记改回 oracle 用户属主,导致 lsnrctl start 报 TNS-01106: Listener using listener name LISTENER has already been started 或静默失败。
- Linux 下检查:
ls -l $ORACLE_HOME/network/admin/listener.ora,输出中 owner 应为oracle - 若属主错误:
chown oracle:oinstall $ORACLE_HOME/network/admin/listener.ora - Windows 下注意路径中的空格和反斜杠,建议统一用正斜杠或双反斜杠,例如
C:/app/oracle/product/19c/dbhome_1/network/admin/listener.ora
LISTENER 和 SID_LIST_LISTENER 必须成对出现
只写 LISTENER=... 而漏掉 SID_LIST_LISTENER=...,监听能启动但数据库实例无法被识别——客户端连不上,lsnrctl status 显示 “Services Summary…” 下为空或只有 PLSExtProc。
-
LISTENER定义监听地址(协议、IP、端口),SID_LIST_LISTENER才真正注册实例;两者名字不必一致,但默认监听器名是LISTENER,对应静态注册块必须叫SID_LIST_LISTENER - 静态注册时,
SID_DESC内三项必须全:SID_NAME(实例名,如test19)、ORACLE_HOME(绝对路径,不能用变量)、GLOBAL_DBNAME(对外服务名,常与SID_NAME相同,但也可不同) - 若用 RAC 或多实例,每个实例需单独一个
SID_DESC块,不要合并写成一行
HOST 值填错会导致监听绑定失败或拒绝远程连接
填 localhost 或 127.0.0.1 是最常见错误——监听只绑本地回环,外部机器 ping 得通但 telnet 1521 超时,lsnrctl status 显示 Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))) 就是这个原因。
- 生产环境一律填实际监听 IP(如
192.168.56.109)或主机名(前提是/etc/hosts或 DNS 能正向解析) - 不推荐用主机名而没配 DNS,尤其 Windows 服务器名含中文或下划线时,解析失败概率高
- 想监听所有网卡?填
0.0.0.0不被 Oracle 支持;正确做法是留空HOST字段或填服务器实际 IP;部分版本支持HOST = *,但非所有版本兼容
改完必须 reload 或重启,且要验证动态注册是否覆盖静态
编辑完 listener.ora 后执行 lsnrctl reload 或 lsnrctl stop && lsnrctl start,但别以为这就完了——如果数据库实例已启动且 PMON 正常运行,它会动态注册服务名,可能把你在 SID_LIST_LISTENER 里写的 GLOBAL_DBNAME 给“覆盖”掉,导致 lsnrctl status 里看到的服务名跟预期不符。
- 检查当前注册方式:连上数据库执行
SELECT instance_name, database_status FROM v$instance;,再查SELECT * FROM v$parameter WHERE name = 'remote_listener'; - 强制使用静态注册:在数据库中执行
ALTER SYSTEM SET remote_listener='' SCOPE=BOTH;,再ALTER SYSTEM REGISTER; - 验证最终效果:运行
lsnrctl status,看 “Services Summary…” 下列出的服务名是否与GLOBAL_DBNAME一致,且状态为READY
实际配置中最容易被忽略的是 HOST 值和动态注册干扰——这两点不处理,哪怕语法全对,客户端照样连不上。











