gnsctl start报“gns is not running”的根本原因是/etc/hosts缺少gns vip静态解析或1521端口被占用,而非gns进程未启动;scan vip与gns vip必须独立,ocr缺失gns资源定义需补全后重启ohasd。

gnsctl start 报 “GNS is not running” 不是服务没启,而是解析卡在第一步
根本原因不是 GNS 进程挂了,而是 grid 用户下根本查不到 GNS VIP 的 IP 地址——/etc/hosts 缺少静态条目,或该 VIP 被其他进程(比如残留的旧 CRS 实例)占用了端口。RAC 安装时若跳过 GNS 配置,后续手动启用极易漏掉这层依赖。
实操建议:
- 确认
/etc/hosts中存在 GNS VIP 的静态解析,例如:192.168.56.100 gns-vip.example.com gns-vip;别只写短名,FQDN 必须完整 - 用
netstat -tuln | grep :1521检查端口冲突(GNS 默认监听 1521,和数据库监听器冲突时会静默失败) -
gnsctl start前必须先运行crsctl check crs,确保全部返回ONLINE;否则 OHASD 未就绪,GNS 无法启动 - 启动后立刻跑
gnsctl status,别只看返回码;若显示UNKNOWN,大概率是 OCR 中 GNS 资源注册异常,需用crsctl stat res -t | grep gns核对状态
SCAN VIP 和 GNS VIP 共用一个 IP 就会解析错乱
SCAN VIP 是客户端接入点,由 DNS 或 GNS 解析;GNS VIP 是 GNS 服务自身监听地址。两者逻辑层级不同,不可复用同一个 IP。一旦复用,srvctl add scan 会拒绝注册,或导致客户端 nslookup 扫描时随机返回 GNS 自身地址,连接被重定向到 GNS 监听器而非 SCAN 监听器。
实操建议:
- GNS VIP 必须独立于所有 SCAN VIP、节点 VIP、public IP,且不能落在 DHCP 地址池范围内——GNS 不支持从 DHCP 获取自身地址
- SCAN VIP 数量固定为 3 个(即使只有 2 个节点),由 GNS 动态分配给存活节点;但分配逻辑只看 CRS 状态,不看网络连通性,所以心跳中断但 CRS 未降级时,SCAN VIP 可能“卡”在故障节点上
- 验证方式:用
nslookup scan-cluster.example.com查三次,应返回三个不同 IP;再用ping -c1测试每个 IP 是否响应,不响应说明对应节点上的 SCAN VIP 实际未激活
OCR 缺失 GNS 资源定义,srvctl add nodeapps 就报 PRCN-2061
这个错误不是 GNS 没装,而是 OCR 里压根没存 GNS 配置元数据。常见于克隆环境或手动升级后未运行 roothas.pl -postpatch。强行删资源重建风险高,优先修复元数据。
实操建议:
- 先运行
oifcfg getif确认 public 网络接口已定义;GNS 依赖它发布子网信息,缺失会导致元数据写入失败 - 执行
crsctl add resource ora.gns -type ora.local_resource.type -attr "AUTO_START=1, CHECK_INTERVAL=30, START_DEPENDENCIES='hard(ora.cluster_interconnect.haip)'"补全资源定义(注意引号与空格) - 补完后重启 OHASD:
crsctl stop has && crsctl start has,再检查crsctl stat res -t | grep gns
DNS 延迟或返回单 A 记录,SCAN 解析就会静默降级
tnsping 卡在 “Attempting to contact” 超 3 秒,基本可断定是 DNS 环节拖慢;Oracle 12c 要求 SCAN 域名至少返回 2 个独立 IPv4 A 记录,否则客户端会认为 SCAN 不可用,自动降级到节点 VIP 连接——不仅失去负载均衡,还可能因 VIP 未注册导致 ORA-12514。
实操建议:
- 确认
sqlnet.ora中NAMES.DIRECTORY_PATH=(HOSTNAME, TNSNAMES, EZCONNECT),且HOSTNAME必须排第一;否则/etc/hosts条目等于没写 -
/etc/hosts必须覆盖全部 SCAN VIP 对应的 FQDN(如192.168.10.50 rac-scan.example.com),不能只写短名 - 用
dig rac-scan.example.com @<your-dns-server></your-dns-server>直连你配置的 DNS 服务器,确认返回 ≥2 个不重复的 A 记录;返回 CNAME 或仅 1 条 A 记录都会触发降级
roothas.pl -postpatch 和 oifcfg getif 这两步几乎总是被跳过。











