CRS-5017是资源启动失败的通用包装错误,必须结合其后紧跟的真实错误(如ORA-27102、ORA-29760等)及oraagent_oracle.log日志定位根因,常见于内存参数超限、instance_number未指定或依赖资源(VIP/ASM)未就绪。

CRS-5017 不是独立错误,而是 CRS 启动某个资源失败时的通用包装,必须结合它后面紧跟的真实错误(如 ORA-、CRS-5818、ORA-16000 等)一起看,否则永远在兜圈子。
看日志:先定位真实错误来源
CRS-5017 本身不告诉你问题在哪,只说明“某资源启动失败”。关键要查它引用的日志路径和具体错误码:
- 错误行末尾通常带
For details refer to "(:CLSN00107:)" in "/path/to/oraagent_oracle.log"—— 这个oraagent_oracle.log是第一手线索,不是 CRS 的 alert.log - 进入该路径,用
grep -A 5 -B 5 "CRS-5017" oraagent_oracle.log查上下文,重点找紧挨着它的ORA-或CRS-错误(比如ORA-17503、ORA-27123、ORA-16000) - 如果日志里出现
service_died或maximum restart attempts reached,大概率是依赖资源(如 VIP、listener、ASM)没起来,导致上层数据库或 service 启动被阻塞
常见真实错误及对应检查点
根据知识库高频案例,CRS-5017 后面的真实错误往往指向这几个方向:
-
ORA-17503+ORA-27123:典型是$ORACLE_HOME/bin/oracle文件权限不对(尤其 AIX/HP-UX),需确认是否为-rwsr-sr-x(即 setuid/setgid 位已设),执行chmod 6755 /u01/11.2.0/grid/bin/oracle -
ORA-16000:ADG 备库上启 service 失败,因为备库只读,DBMS_SERVICE.START_SERVICE不允许在只读库运行;要么改用srvctl start service并确保 service 配置了ROLE=PRIMARY,要么确认当前库角色(SELECT DATABASE_ROLE FROM V$DATABASE) -
ORA-01565+ORA-17503找不到 spfile:不是文件真丢了,而是 OCR 中注册的db_unique_name和实际 ASM 路径不一致(例如 OCR 记的是dave,但 spfile 在+DATA/dave_st/...),需用srvctl config database -d <db>核对,并用srvctl modify database -d <db> -n <new_db_unique_name>同步 -
CRS-5818:12.2+ RAC 中 ASM 监听器连不上,常因私网 IP 未加进sqlnet.ora的SQLNET.INVITED_NODES白名单,补上后重启ora.asm资源即可
别跳过权限与依赖链验证
很多 CRS-5017 表面是数据库启不了,根子却在底层依赖没就绪:
- 用
crsctl stat res -t | grep -E "(asm|vip|listener|diskgroup)"检查 ASM、VIP、SCAN listener 是否 ONLINE;任一为 OFFLINE 或 INTERMEDIATE,上层数据库必然失败 - 确认 grid 用户对 ASM 磁盘组有访问权:
su - grid; sqlplus / as sysasm后执行SELECT NAME, STATE FROM V$ASM_DISKGROUP,若报错或状态非 MOUNTED,先解决 ASM 层 - 检查 OCR/votedisk 状态:
ocrcheck和crsctl query css votedisk必须返回正常;若提示PROT-602或Located 0 voting disk(s),说明集群注册层已损坏,不能只修数据库
真正卡住人的,往往是把 CRS-5017 当成终点去查,而它只是故障链上的一个回声。盯住日志里那个紧跟其后的错误码,再顺藤摸到它依赖的资源状态,比反复重启 crsctl stop/start crs 有效得多。


















