Oracle RAC数据库异常关机怎么办?检查Clusterware日志

小瑶吖_8847

小瑶吖_8847

2026-04-15

1023人浏览

原创

crsctl check cluster 返回 CRS-4537/4529/4533 不全,说明 CSS、CRS 或 EVM 某守护进程未就绪;需依依赖链逐查 ocssd、ASM、OCR 状态,而非直接重启集群。

crsctl check cluster 返回 CRS-4537/4529/4533 不全怎么办

集群异常关机后,crsctl check cluster 常见返回不全(比如只显示 crs-4537,缺 crs-4529 或 crs-4533),说明某一层服务没起来。这不是“检查失败”的模糊提示,而是明确指向 css、crs 或 evm 某个守护进程未就绪。

别急着重启整个集群,先确认节点是否真正加入集群:olsnodes -n 如果只返回本节点或报错 CRS-2418: The node is not part of the cluster,说明 CSS 层已断开,此时 crsctl check cluster 必然缺 CRS-4529(CSS 离线)。

  • 优先查 /u01/app/11.2.0/grid/log//cssd/ocssd.log,搜索 ERROR 或 reboot,常见于网络心跳超时或磁盘仲裁失败
  • 若 ocssd.log 末尾有 Cluster is not configured,说明 OCR 无法访问,需验证 ASM 磁盘组状态(用 asmcmd lsdg)和 OCR 设备路径(ocrcheck -config)
  • crsctl check cluster -all 要在所有节点分别执行,不能只看一个节点的输出——不同节点可能处于不同状态

crsd.log 里出现 “Cannot connect to OCR” 怎么办

crsd.log 报这个错误,本质是 CRS 进程启动后无法读取 OCR 配置,不是 OCR 文件损坏,而是底层依赖没就绪。典型路径是:CSS 启动 → ASM 启动 → OCR 才能被挂载 → CRS 才能初始化。

直接去修 OCR 是徒劳的。必须按依赖链逐层验证:

  • 先确认 cssd 已运行:ps -ef | grep ocssd,无进程则回到上一步查 ocssd.log
  • 再确认 ASM 实例是否已启动:srvctl status asm -n ,若为 STOPPED,手动启动:srvctl start asm -n
  • 然后检查 OCR 是否可访问:ocrcheck,若报 PROT-602: Failed to retrieve data from Oracle Cluster Registry,说明 ASM 磁盘组未挂载或权限不对(ls -l /dev/oracleasm/disks/ 看属主是否为 grid:asmadmin)
  • 最后才重启 crsd:crsctl stop crs -f && crsctl start crs(注意:该命令会重启整个 Clusterware,生产环境慎用)

节点反复驱逐(eviction)后 crsd.log 大量 “reboot advisory”

日志里频繁出现 reboot advisory 或 Node is being evicted,说明集群认为该节点已失联,触发强制驱逐。这不是数据库层问题,而是底层心跳机制失效。

重点不在日志内容本身,而在时间戳对齐性:

QuantOracle
QuantOracle

63个确定性量化金融计算器 + 10个通过MCP的复合工作流。期权定价、Greeks、奇异衍生品、风险指标、投资组合优化……

下载
  • 对比所有节点的系统时间:date,误差超过 1 秒就可能引发驱逐(Oracle GI 要求严格同步)
  • 查 /u01/app/11.2.0/grid/log//ctssd/octssd.log,搜索 CTSS 和 clock drift,确认是否 CTSS 服务未接管或 NTP 冲突
  • 私网通信是否正常:ping -I ,同时抓包 tcpdump -i host 看是否有丢包或 ARP 失败
  • 不要忽略硬件层:私网网卡驱动版本过旧、交换机端口启用了 STP 或端口安全策略,都可能导致心跳包延迟突增

OCR 自动备份丢失导致恢复困难

OCR 自动备份默认存在 +GRID:/OCRBACKUP(ASM 磁盘组),但异常关机后若 ASM 无法启动,这个路径根本不可达。这时候依赖本地文件备份(/u01/app/11.2.0/grid/cdata//)才是救命稻草。

很多人只记得 OCR 物理位置,却忽略自动备份的时效性:

  • OCR 自动备份每天一次(凌晨 2 点),且只保留最近 3 份;异常发生在第 4 天,就只剩本地文件备份可用
  • 本地备份文件名含时间戳,如 backup_20260410_020000.ocr,用 ocrconfig -showbackup 查不到它,必须手动指定路径还原:ocrconfig -restore /u01/app/11.2.0/grid/cdata//backup_20260410_020000.ocr
  • 还原前务必确认当前 OCR 设备路径(ocrcheck -config),避免误写到错误设备;还原后必须重启 crsd,否则新配置不生效

最常被忽略的一点:OCR 本地备份目录权限必须是 root:oinstall,且 grid 用户要有读权限,否则 ocrconfig -restore 会静默失败,连错误都不报。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

oracle

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
C语言变量命名
C语言变量命名

c语言变量名规则是:1、变量名以英文字母开头;2、变量名中的字母是区分大小写的;3、变量名不能是关键字;4、变量名中不能包含空格、标点符号和类型说明符。php中文网还提供c语言变量的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.20

3509

3

c语言入门自学零基础
c语言入门自学零基础

C语言是当代人学习及生活中的必备基础知识,应用十分广泛,本专题为大家c语言入门自学零基础的相关文章,以及相关课程,感兴趣的朋友千万不要错过了。

2023.07.25

2408

9

c语言运算符的优先级顺序
c语言运算符的优先级顺序

c语言运算符的优先级顺序是括号运算符 > 一元运算符 > 算术运算符 > 移位运算符 > 关系运算符 > 位运算符 > 逻辑运算符 > 赋值运算符 > 逗号运算符。本专题为大家提供c语言运算符相关的各种文章、以及下载和课程。

2023.08.02

1340

5

c语言数据结构
c语言数据结构

数据结构是指将数据按照一定的方式组织和存储的方法。它是计算机科学中的重要概念,用来描述和解决实际问题中的数据组织和处理问题。数据结构可以分为线性结构和非线性结构。线性结构包括数组、链表、堆栈和队列等,而非线性结构包括树和图等。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.09

1298

4

c语言random函数用法
c语言random函数用法

c语言random函数用法:1、random.random,随机生成(0,1)之间的浮点数;2、random.randint,随机生成在范围之内的整数,两个参数分别表示上限和下限;3、random.randrange,在指定范围内,按指定基数递增的集合中获得一个随机数;4、random.choice,从序列中随机抽选一个数;5、random.shuffle,随机排序。

2023.09.05

1416

5

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

2023.09.20

2298

7

c语言get函数的用法
c语言get函数的用法

get函数是一个用于从输入流中获取字符的函数。可以从键盘、文件或其他输入设备中读取字符,并将其存储在指定的变量中。本文介绍了get函数的用法以及一些相关的注意事项。希望这篇文章能够帮助你更好地理解和使用get函数 。

2023.09.20

3780

8

c数组初始化的方法
c数组初始化的方法

c语言数组初始化的方法有直接赋值法、不完全初始化法、省略数组长度法和二维数组初始化法。详细介绍:1、直接赋值法,这种方法可以直接将数组的值进行初始化;2、不完全初始化法,。这种方法可以在一定程度上节省内存空间;3、省略数组长度法,这种方法可以让编译器自动计算数组的长度;4、二维数组初始化法等等。

2023.09.22

17695

6

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

2023.09.22

549

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程