UNKNOWN表示CRS无法确认资源真实存活状态,源于IPC通信中断、SCAN VIP绑定异常或GNS/OCR故障,需优先检查oraagent_grid.log、VIP实际持有节点及IPC残留。
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,搜索关键词:Failed to bind address、TNS-12560、IPC send failed。若日志里反复出现这些,基本锁定是 IPC 层故障,不是配置或网络问题。
SCAN VIP 必须真实运行在当前节点,且 DNS/GNS 解析一致,否则监听器启动时会绑定失败,后续所有状态反馈都失效。不要只信 srvctl config scan 输出,要实测:
srvctl config scan 查出三个 SCAN IP,再逐节点执行 ip addr show,确认当前持有该 VIP 的节点(别只查本节点)ps -ef | grep LISTENER_SCAN1 仍有残留进程,说明监听器在错误节点上僵死——先 kill -9 <pid>,再 srvctl start scan_listener -i 1
C:WindowsSystem32driversetchosts:SCAN 名不能硬解析到 127.0.0.1 或错误 IP,RAC 启动阶段会读 hosts,导致绑定失败Oracle 11g–19c RAC 异常终止后,常遗留 shm(共享内存段)和 sem(信号量),CRS 启动时因 key 冲突或空间不足无法注册资源,表现为整体资源状态为 UNKNOWN。这不是数据库配置问题,是 OS 级资源冲突。
安全清理必须按顺序:
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,否则大概率重启失败当 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 有效得多。