不能。srvctl start nodeapps 在11gR2后已弃用,执行会报错PRCR-1076或提示命令不存在;节点网络资源由Clusterware自动托管,应检查crsctl check crs状态并让其自动恢复。
srvctl start nodeapps 能不能直接拉起宕机节点?
不能。oracle rac 中 srvctl start nodeapps 已在 11gr2 后弃用,执行会报错 prcr-1076: failed to start resource ora.ora11g.vip 或直接提示命令不存在。节点级网络资源(vip、gsd、ons)现在由 oracle clusterware 自动托管,不再允许手动启停。
真正该做的是确认 CRS 是否正常运行,并让 Clusterware 自动恢复节点服务:
- 先检查
crsctl check crs—— 若返回CRS-4638: Oracle High Availability Services is online,说明集群心跳正常,宕机节点大概率已在自动重启中 - 若 CRS 本身离线(如
CRS-4639: Could not contact Oracle High Availability Services),需先启动 OHAS:运行crsctl start crs(注意:必须以root用户执行) - 不要强行调用
srvctl start nodeapps或srvctl start vip,这些操作可能破坏 OCR 状态一致性
srvctl start instance 恢复数据库实例前要确认什么?
单个实例宕机后,srvctl start instance 是最常用且安全的恢复手段,但必须满足三个前提条件:
-
crsctl check cluster -all显示该节点的 CRS 和 CSSD 进程已在线(否则实例无法注册到集群) - 该节点的 Oracle Grid Infrastructure 完整启动(包括
ora.asm、ora.cssd、ora.diskmon),可通过crsctl stat res -t | grep -E "(asm|cssd|diskmon)"快速核对 - 数据库资源状态为
OFFLINE而非UNKNOWN—— 若是UNKNOWN,说明 OCR 中记录异常,需先运行srvctl status database -d <db_name></db_name>查看具体实例状态,再决定是否用srvctl remove instance+srvctl add instance重建注册
执行示例:srvctl start instance -d orcl -i orcl1(启动 orcl 数据库的 orcl1 实例)
节点反复宕机时 srvctl stop/start database 有没有用?
没有用,反而可能掩盖真实问题。频繁节点宕机通常是底层故障(如网络闪断、存储 I/O hang、内存泄漏或 CRS 日志中持续出现 ORA-29740),此时仅靠 srvctl stop database + srvctl start database 只是重启应用层,无法解决节点驱逐(node eviction)根因。
必须立即收集以下信息再操作:
- 查看
ocssd.log(路径通常为$GRID_HOME/log/<hostname>/cssd/ocssd.log</hostname>),搜索"reboot"、"eviction"、"missed heartbeat" - 检查系统日志:
dmesg -T | tail -50(看 OOM killer 或硬件错误)、tail -20 /var/log/messages(看网络/存储中断) - 确认
srvctl config database -d <db_name></db_name>输出中Start Options是否为open(避免实例启动后自动关闭)
如果发现 CSSD 因网络超时被 kill,临时缓解可调大 misscount(需停 CRS 修改,风险高,不推荐线上随意改动)
srvctl 命令执行失败常见报错及对应动作
遇到报错别急着重试,先看错误类型再定位:
-
CRS-2672: Attempting to start 'ora.<db>.db' on '<node>'</node></db>+CRS-2674: Start of 'ora.<db>.db' on '<node>' failed</node></db>:说明实例进程启动失败,立刻查$ORACLE_HOME/rdbms/log/alert_<instance>.log</instance>和$GRID_HOME/log/<node>/agent/crsd/oraagent_oracle/oraagent_oracle.log</node> -
PRCR-1079: Failed to start resource ora.<db>.db</db>+ORA-01078: failure in processing system parameters:参数文件损坏或 ASM 磁盘组未挂载,运行sqlplus / as sysasm后执行select name,state from v$asm_diskgroup; -
CRS-4000: Command Start failed, or completed with errors.且无更详细输出:说明 CRS 通信异常,检查olsnodes -s -t是否显示所有节点为Active,否则先修复集群连通性
所有 srvctl 操作都依赖 OCR 和 Voting Disk 的可用性,任何恢复动作前,务必确认这两者状态正常——这是最容易被跳过的一步。










