Oracle RAC实例注册失败主因是local_listener未指向本节点VIP;必须配置为本节点VIP地址,禁用localhost、127.0.0.1及物理IP,并确保/etc/hosts正确解析、listener.ora绑定该VIP、防火墙放行端口且PMON日志无注册失败报错。

local_listener 指向 localhost 或物理 IP 导致注册失败
Oracle RAC 要求每个实例的 local_listener 必须指向本节点 VIP,而非 localhost、127.0.0.1 或物理网卡 IP。否则 PMON 尝试注册时会连到不可达地址,监听器收不到注册请求,lsnrctl status 里始终看不到该实例的服务条目。
- 检查当前值:
show parameter local_listener—— 若返回空、localhost或非 VIP 地址,即为错误配置 - 确认本节点 VIP:
srvctl config nodeapps -n <node_name></node_name>,提取输出中的 VIP(如node1-vip) - 验证 DNS 解析:
nslookup node1-vip,必须解析为本节点真实 VIP 地址,且不能被其他节点复用 - 设置正确值(以节点 rac1 为例):
ALTER SYSTEM SET LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=node1-vip)(PORT=1521))' SCOPE=BOTH SID='rac1'; - 立即触发重注册:
ALTER SYSTEM REGISTER;,等待约 30 秒后查lsnrctl services LISTENER确认服务状态是否变为READY
listener.ora 中未绑定本节点 VIP 地址
即使 local_listener 配对了 VIP,若 $GRID_HOME/network/admin/listener.ora 里对应监听器(通常是 LISTENER)没在 ADDRESS 列表中显式包含该 VIP,监听进程启动后也不会监听该地址,导致注册包被丢弃。
- 打开
listener.ora,定位到LISTENER的DESCRIPTION_LIST块 - 确保至少有一条
(ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1521))—— 注意 HOST 必须与local_listener一致 - 不要只改
HOST = localhost;RAC 环境下必须写 VIP 主机名(非 IP),且该主机名需在/etc/hosts中正确定义 - 修改后不执行
lsnrctl stop/start,而用lsnrctl reload—— 避免监听中断,同时可即时验证语法是否合法 - 再运行
lsnrctl status,检查Listening Endpoints Summary是否列出该 VIP:1521
RAC 多节点共用同一 VIP 名称或配置未按实例隔离
多个节点误配相同 VIP 主机名(如都设为 rac-vip),或用 SCOPE=BOTH SID='*' 批量设置 local_listener,会导致注册冲突、监听器拒绝重复注册,或仅第一个节点生效。
-
SID参数必须指定单个实例名(如rac1、rac2),不能用通配符*—— RAC 中各实例独立运行,无全局 SID 上下文 - 每个节点的
/etc/hosts中,VIP 主机名必须唯一映射到本节点 VIP,禁止跨节点解析 - 检查
lsnrctl services输出:若某节点的服务名反复显示UNKNOWN或BLOCKED,大概率是 VIP 名称冲突或解析错乱 - 验证方式:在节点 rac1 上执行
ping node1-vip,应通;在节点 rac2 上执行ping node1-vip,应不通(或解析失败)
监听器运行但注册静默失败的底层依赖缺失
即便配置全对,以下三项任一缺失都会让 local_listener 形同虚设:PMON 发出注册请求,但网络层或内核直接丢弃,日志里几乎不留痕迹。
- 防火墙未放行 VIP 对应网卡的 1521 端口(尤其云环境或 hardened OS):
iptables -L -n | grep 1521或firewall-cmd --list-ports - ARP 缓存异常:新 VIP 绑定后,交换机或客户端缓存了旧 MAC 地址,导致 TCP SYN 包无法抵达 —— 可临时执行
arp -d <vip_ip></vip_ip>清理 - PMON 日志静默失败:检查
$ORACLE_BASE/diag/rdbms/<db_name>/<inst_name>/trace/alert_<inst_name>.log</inst_name></inst_name></db_name>,搜索failed to register或TNS-12535,而非只看lsnrctl输出
/etc/hosts 里 VIP 主机名的单点解析验证和防火墙端口放行确认。


















