unknown表示crs无法确认资源真实存活状态,源于ipc通信中断、scan vip绑定异常或gns/ocr故障,需优先检查oraagent_grid.log、vip实际持有节点及ipc残留。

srvctl status 显示 UNKNOWN 不代表进程挂了
UNKNOWN 的本质是 CRS 无法确认资源真实存活状态,不是监听器或实例真死了,而是 oraagent_grid 没拿到进程心跳、IPC 通信中断,或共享内存段损坏。常见现象包括:lsnrctl status LISTENER_SCAN1 卡在 “Connecting to…”、crsctl stat res -t 中 SCAN 相关资源标为 UNKNOWN、但 ps -ef | grep pmon 仍能看到进程。
优先检查路径:$GRID_HOME/log/<node>/agent/oraagent_grid.log</node>,搜索关键词:Failed to bind address、TNS-12560、IPC send failed。若日志里反复出现这些,基本锁定是 IPC 层故障,不是配置或网络问题。
SCAN VIP 绑定异常是 UNKNOWN 最常见诱因
SCAN VIP 必须真实运行在当前节点,且 DNS/GNS 解析一致,否则监听器启动时会绑定失败,后续所有状态反馈都失效。不要只信 srvctl config scan 输出,要实测:
- 用
srvctl config scan查出三个 SCAN IP,再逐节点执行ip addr show,确认当前持有该 VIP 的节点(别只查本节点) - 若 VIP 不在本节点,但
ps -ef | grep LISTENER_SCAN1仍有残留进程,说明监听器在错误节点上僵死——先kill -9 <pid></pid>,再srvctl start scan_listener -i 1 - Windows 下务必检查
C:\Windows\System32\drivers\etc\hosts:SCAN 名不能硬解析到127.0.0.1或错误 IP,RAC 启动阶段会读 hosts,导致绑定失败
IPC 资源残留直接导致 CRS 失联
Oracle 11g–19c RAC 异常终止后,常遗留 shm(共享内存段)和 sem(信号量),CRS 启动时因 key 冲突或空间不足无法注册资源,表现为整体资源状态为 UNKNOWN。这不是数据库配置问题,是 OS 级资源冲突。
安全清理必须按顺序:
- 以 root 执行
crsctl stop crs,确保无任何 CRS 进程残留 - 确认
ps -ef | grep pmon无输出,再执行:ipcs -m | awk '$5 == "oracle" {print $2}' | xargs -I {} ipcrm -m {}ipcs -s | awk '$5 == "oracle" {print $2}' | xargs -I {} ipcrm -s {} - 清理后必须运行
ipcs -m -s,输出应为空;再crsctl start crs,否则大概率重启失败
OCR/GNS 故障会让 UNKNOWN 扩散成全局失联
当 crsctl stat res -t 里不止一个资源是 UNKNOWN,且 srvctl status scan 报错或返回不一致(如节点1说 ONLINE,节点2说 STOPPED),问题已超出单资源层面,指向 OCR 损坏或 GNS 宕机。
立即验证:
-
crsctl stat res -t | grep gns:若非 ONLINE,先srvctl start gns -
srvctl config scan若输出少于 3 个 IP 或为空,说明 SCAN VIP 资源未注册——必须先srvctl start scan,成功后再srvctl add scan_listener(不带参数)重建监听器资源 - 切勿跳过
srvctl status scan直接加监听器,否则srvctl add scan_listener会静默失败,且不报错
UNKNOWN 看似只是状态显示异常,但背后可能是 IPC 残留、VIP 漂移失败、GNS 解析中断三者之一在作祟——它们不会单独出现,往往一环扣一环。动手前先看 oraagent_grid.log 和 ip addr show,比盲目重启 CRS 有效得多。











