Oracle RAC无备份恢复:OCR和votedisk同时丢失的实战重建

发布时间:2026/11/14 7:44:58

Oracle RAC无备份恢复:OCR和votedisk同时丢失的实战重建 这个操作我做过不止一次每次做完都出一身汗。Oracle 19c RAC 环境下OCR和votedisk同时丢失、而且没有任何可用备份听起来像是DBA的末日场景——实际上没有备份不代表没救只要你脑子里的知识还热乎集群底层的运行态信息还活着这条路完全可以走通。这篇文章把我真实操作的流程、判断逻辑、踩过的坑全部拆开讲清楚适合正在面对类似故障、或者想在测试环境提前演练一遍的同行参考。1. 故障全景OCR和votedisk各司其职同时丢失意味着什么1.1 OCR是集群的“注册表”OCR全称Oracle Cluster Registry它存的是整个集群的核心配置信息——节点列表、集群资源定义、ASM实例配置、RAC数据库的注册信息、网络配置、GNS配置等等。可以把它理解成Windows注册表在Oracle集群里的亲戚所有组件启动时都要读它任何配置变更都要写它。OCR在正常部署时会有三份副本分布在不同的存储路径上任何一份坏了另外两份还能顶上。但问题恰恰出在“同时丢失”上存储阵列逻辑损坏、误格式化、人为删除文件、或者底层LUN映射错乱都可能把三份副本一锅端。这个时候你连集群都起不来更别提数据库。1.2 votedisk是集群的“投票箱”votedisk解决的是脑裂判定问题。集群里每个节点通过votedisk进行心跳仲裁当网络心跳中断、节点间无法通信时votedisk的票数决定哪部分节点继续存活、哪部分节点被逐出集群。votedisk在ASM环境下同样需要多个副本默认配置三份分布在不同的failgroup里。它丢失之后的直接后果是CSS进程无法确定集群法定人数所有节点都不敢贸然启动集群彻底瘫痪。1.3 “无备份”场景到底是怎么发生的很多人以为无备份就是没做备份策略其实我遇到的情况往往更复杂ocrconfig -showbackup能显示备份文件但文件本身损坏ocrconfig -restore恢复失败备份文件存放在本地盘而本地盘恰好跟OCR所在存储一起被误操作清掉了cdata目录权限被改、文件被手工挪走、或者备份目录所在文件系统损坏更常见的是存储级别的误操作——快照删除、卷回收、LUN重新映射导致OCR、votedisk和自动备份全部消失。所以“无备份”不一定是你没做备份而是备份和原件一起阵亡了。这种时候千万别慌着重新初始化集群一旦你执行了root.sh或者重装GI那才是真的万劫不复——所有节点信息和配置痕迹都可能被覆盖掉。2. 无备份恢复的真正思路不依赖归档靠运行态和GPNP2.1 常规思路为什么走不通正常情况下OCR恢复就两条路ocrconfig -restore从自动备份恢复或者从另一节点的副本同步。无备份场景下这两条路全部堵死但很多人忽略了一个关键事实集群没死透的时候OCR内容仍然残留在CSS进程的内存缓存里。即便集群因为votedisk问题无法正常启动节点本地的GPNP ProfileGrid Plug and Play Profile文件仍然保存了集群的关键元数据包括集群名称、OCR存储位置、ASM磁盘组信息等。GPNP相当于身份证CSS启动时即使读不到OCR也能通过GPNP拿到最基本的指纹信息。2.2 三个恢复路径的前提判断无备份重建不是一条路走到黑先要判断现状属于哪种情况现状可用的恢复思路节点仍在运行集群资源部分存活直接尝试ocrconfig -repair甚至可以从内存导出OCR信息集群已宕但ASM磁盘组完好以排他模式启动手动拉起ASM挂载磁盘组再重建OCR和votediskASM磁盘组本身也丢失/损坏先恢复ASM磁盘组这通常是另一个独立的大型恢复项目不在本文范围内这三个判断直接影响操作路径。我最怕的就是一上来就乱执行命令把还有机会利用的运行态信息搞丢。2.3 选定方案-repair 重建votedisk的路线图我这次要重点讲的方案适用于第二种情况集群已宕但ASM层和存储层完好丢失的只是ASM里的OCR文件与votedisk文件。整体路线是在其中一个节点以排他模式启动CRS跳过OCR读取手动拉起ASM实例挂载包含OCR的磁盘组使用ocrconfig -repair -add重新注册OCR位置恢复正常模式启动让集群从GPNP和内存信息中自动构建OCR内容使用crsctl replace votedisk重建votedisk验证集群资源和RAC数据库回归。这个方案不依赖任何备份文件核心逻辑是“让集群自己重新生成配置文件”。3. 动手前的环境盘点与信息锁定3.1 节点清单与GI_HOME核对动刀之前先把家底盘清楚。我习惯列一个清单逐项确认集群节点数量与主机名比如node1、node2每个节点的GI_HOME路径通常是/u01/app/grid/19.0.0/gridOracle用户和OSDBA组通常grid用户安装GI集群名称可以从/etc/oracle/olr.loc或者GPNP profile中读取。排他模式只能在单节点执行其他节点必须全部处于停止状态。如果你不确定其他节点的状态先通过ssh过去检查CRS进程是否存在必要时手动执行crsctl stop crs -f。3.2 关键参数锁定这个环节是我在多次事故中总结出来的必备动作千万别省。需要锁定的参数有# 查看OLR位置OLR是每个节点本地的OCR独立于共享OCR cat /etc/oracle/olr.loc # 查看GI版本信息 $GRID_HOME/bin/crsctl query crs softwareversion # 查看集群名称如果GPNP还能读 $GRID_HOME/bin/gpnptool get # 尝试查看自动备份情况确认无备份的结论 $GRID_HOME/bin/ocrconfig -showbackup如果ocrconfig -showbackup报错或者显示无备份文件那就坐实了无备份的判断。OLR文件如果完好至少说明这个节点还有本地身份信息排他模式启动时成功率会高很多。3.3 存储层面核验这一步很多人容易忽略。OCR和votedisk都存放在ASM磁盘组里所以必须先确认ASM磁盘组的状态。你需要用asmcmd或者通过ASM实例查询# 确认ASM实例的状态如果还能起来 ps -ef | grep asm_pmon # 用ASM用户进入检查磁盘组 sqlplus / as sysasm SQL select name, state, type, total_mb, free_mb from v$asm_diskgroup;重点确认磁盘组是否处于MOUNTED状态磁盘组可用空间是否够建OCR和votedisk。OCR对空间要求不大几百MB就够votedisk单副本也就几百MB但磁盘组本身必须健康。另外要记录下磁盘组名称和冗余模式。比如OCR放在DATA这个磁盘组冗余方式是NORMAL那votedisk也会放在同一个组里ASM会自动管理多副本。4. 重建OCR的完整执行步骤从维护模式到ocrconfig -repair4.1 先让CSS在排他模式下起来这一步是整个恢复的地基。排他模式exclusive mode可以让CSS不读取OCR和votedisk就直接启动相当于给了一个“无证驾驶”的入口。在node1上执行# 先确保本节点CRS进程是停止状态 crsctl stop crs -f # 以排他模式启动跳过OCR和CRSD crsctl start crs -excl -nocrs-excl表示排他模式-nocrs表示不启动CRSD资源守护进程。执行后观察集群日志确认CSS进程正常起来了tail -f $GRID_HOME/log/$(hostname)/cssd/ocssd.log正常情况下能看到CSS启动成功并进入“clustered”状态。如果CSS起不来多半是OLR损坏或者网络心跳配置丢失那就需要先处理这些前置问题。4.2 手动拉起ASM实例并挂载磁盘组排他模式下CRSD没有运行ASM资源不会自动启动需要手动拉起来# 切换到grid用户 su - grid # 启动ASM实例 export ORACLE_SIDASM1 sqlplus / as sysasm SQL startup nomount;如果ASM的spfile本身就在OCR磁盘组里startup nomount可能会报错找不到spfile。这时候需要手动指定参数文件SQL startup nomount pfile/tmp/asm_pfile.ora;有了实例之后手动挂载磁盘组SQL alter diskgroup DATA mount; SQL select name, state from v$asm_diskgroup;这一步如果执行失败说明ASM磁盘组本身也有问题。我遇到过磁盘组因为OCR丢失而处于“FORCED MOUNTING”状态直接alter diskgroup DATA mount会卡住。这种情况下需要先检查磁盘头asmcmd lsdsk -k -p如果磁盘组实在无法挂载那就得先用kfed修复磁盘头或从存储快照恢复磁盘组属于另一个战场本文暂不展开。4.3 用ocrconfig -repair -add写入新OCR位置手动拉起ASM并挂载磁盘组后核心操作就是ocrconfig -repair命令。这个命令的特殊之处在于它不依赖备份文件而是基于节点本地的GPNP信息和运行态信息直接修改OCR注册位置。# 查询当前OCR注册情况此时应该为空或全部失效 ocrconfig -repair -show # 添加新的OCR位置这里以DATA为例 ocrconfig -repair -add DATA执行成功后可以验证ocrcheck如果返回结果里能看到DATA设备并且显示Device/file integrity check succeeded说明OCR位置已经注册成功。-repair和-replace的区别要注意-repair是告诉集群“这个位置作为OCR”即使旧位置已经不可读也能强制执行-replace则是先读旧位置再换成新位置旧位置彻底不可读时可能失败。所以无备份场景下优先使用-repair -add。4.4 退出排他模式恢复正常启动新OCR位置注册完成之后需要退出排他模式让集群以正常模式重新启动# 回到root用户 exit # 停止排他模式下的CRS crsctl stop crs -f # 正常启动CRS crsctl start crs等CRS启动完成后重点检查CRSD是否正常接管crsctl stat res -t这时你可能会看到很多资源处于INTERMEDIATE或OFFLINE状态这正常因为集群刚恢复很多东西还在重建。关键的检查点是ocrcheck输出里应当能看到Status of Oracle Cluster Registry is as follows : Version : 3 Total space (kbytes) : 262144 Used space (kbytes) : 2048 Device/File Name : DATA Device/File integrity check succeeded看到“Device/File integrity check succeeded”就说明OCR已经在正常工作了。集群在启动过程中会自动将内存中保留的配置信息写入新OCR文件不需要你手动导入任何东西。5. 重建votedisk与集群回归验证5.1 判断votedisk是否真的需要重建OCR重建只是第一步votedisk如果不处理集群依然无法稳定运行。先用下面命令查看votedisk状态crsctl query css votedisk正常输出长这样## STATE File Universal Id File Name Disk group -- ----- ----------------- --------- --------- 1. ONLINE 5e4e2e... /dev/sdb DATA 2. ONLINE 8c1a2f... /dev/sdc DATA 3. ONLINE a3d5e7... /dev/sdd DATA如果输出里全是LOST、OFFLINE、或者根本没有记录那就需要重建。还有一种容易被忽略的情况OCR重建后集群虽然能启动但votedisk文件内容已经被破坏CSS在运行时会持续报心跳错误。这种情况下即使votedisk显示ONLINE也要强制重写。5.2 替换votedisk的具体命令确认需要重建后使用crsctl replace votedisk命令完成替换。这里要注意该命令要在CSS正常运行状态下执行同时要确保有足够的权限通常需要root或grid用户。# 把所有votedisk重写到DATA磁盘组 crsctl replace votedisk DATA这个命令的执行逻辑是先检查目标磁盘组可用性然后在磁盘组内创建新的votedisk副本再把集群的votedisk指向切过去。执行完成后再验证crsctl query css votedisk看到所有条目都是ONLINE状态第一步就成功了。接下来重启一次CRS确认votedisk信息保存正常crsctl stop crs -f crsctl start crs5.3 验证集群资源和RAC数据库回归集群起来之后光看OCR和votedisk还不够必须把整个栈验一遍# 检查集群整体状态 crsctl check crs # 查看所有资源状态 crsctl stat res -t # 检查ASM实例状态 crsctl stat res ora.asm -t # 检查数据库实例和监听状态 crsctl stat res ora.db -tRAC数据库通常会在CRS启动后自动注册并启动。如果数据库没有自动启动可以手动执行srvctl start database -d ORACLEDB然后验证数据库实例在多个节点上都处于OPEN状态sqlplus / as sysdba SQL select inst_id, instance_name, status from gv$instance;我还建议做一次数据库层面的快速验证——执行一个简单的查询、切换一次日志、或者跑一个AWR报告快照确认集群和数据库不是“表面活、内里死”。6. 这些坑我帮你踩过了6.1 最容易栽跟头的地方第一个坑排他模式启动顺序搞错。必须先在所有节点停掉CRS再在单节点执行crsctl start crs -excl -nocrs。如果其他节点还在运行排他模式根本起不来报错也不够直观容易让人误判是OCR损坏之外的问题。第二个坑ASM spfile放在OCR磁盘组里。当OCR磁盘组丢失时ASM实例可能也起不来因为spfile也在这个磁盘组里。这时候要提前准备好pfile。我习惯在正常环境的/tmp下保留一份ASM pfile备份这次就派上了大用场。第三个坑执行ocrconfig -repair -add之前没有检查磁盘组空间。虽然OCR占空间不大但如果磁盘组本身已经满了命令会一直卡住日志里也不会报明确错误。先执行磁盘组空间检查是最稳妥的。第四个坑votedisk重建后忘记重启CSS验证。crsctl replace votedisk返回成功不代表重启后依然有效。有些人重建完直接以为完事了结果下一次节点重启又起不来。必须完成一次完整的CRS停止再启动验证。第五个坑手滑执行了不必要的初始化。在无备份场景下任何类似$GRID_HOME/root.sh、cluvfy、或者修改GPNP的命令都可能覆盖掉当前存活的指纹信息让本来能恢复的局面变得不可恢复。操作前多想三秒。6.2 日常维护建议经历过这次事故之后我把OCR/votedisk的日常检查固化到了运维脚本里检查项命令频率OCR状态ocrcheck每天OCR自动备份ocrconfig -showbackup每周votedisk状态crsctl query css votedisk每天磁盘组空间asmcmd lsdg每周集群日志错误grep -i error $GRID_HOME/log/$(hostname)/crsd/crsd.log每天自动备份虽然叫“自动”但它依赖本地cdata目录这个目录既不在OCR磁盘组里也不在共享存储上很容易被忽略。我建议把cdata目录也纳入定时备份最好复制到独立于数据库存储之外的备份服务器。另外既然都走到重建这一步了顺手做一次OCR配置的导出留档也不亏ocrconfig -export /backup/ocr_export_$(date %Y%m%d).dat这个导出文件虽然不算正式备份但至少包含当前OCR里的全部配置后面如果要查某个资源参数、核对集群配置就不用去翻日志了。这次操作最大的体会是无备份不等于无解但能活着从这种故障里走出来靠的是平时把这些配置文件的结构、运行机制、恢复入口记在脑子里。真正到了存储阵列一锅端的那天手边没有文档、没有同事、没有互联网你能依赖的就是这些底层认知和肌肉记忆。希望各位永远用不上这篇文章但需要的时候它能帮你少走很多弯路。
延伸阅读

更多相关文章

2026/11/11 23:24:55

STM32三轴机械臂实战:舵机PWM控制、逆解与直线插补

简介:基于STM32的三轴机械臂控制源码工程,面向嵌入式爱好者、机械臂控制初学者以及正在做课设或毕设的STM32开发者,可用于快速搭建三轴机械臂的控制原型。压缩包共169个文件、约3.39MB,内容以H头文件和C源文件为主体,配…

2026/11/7 18:23:47

AD7192嵌入式ADC驱动开发:SPI通信、Linux IIO集成与硬件调试

简介:本资源是一套面向嵌入式开发工程师与电子类专业学生的AD7192高精度ADC驱动实现方案,聚焦STM32F103平台下的工业级传感器信号采集需求,解决24位Σ-Δ模数转换器在实际项目中初始化、配置与数据读取等核心集成难题。压缩包为4KB的ZIP文件&…

2026/11/7 18:50:15

单片机FFT实战:从ADC采样到频谱显示的全流程嵌入式实现

简介:本资源是一套面向嵌入式初学者与单片机开发者的FFT频谱分析实践方案,聚焦于在资源受限的单片机平台上实现快速傅里叶变换并实时显示频谱结果。项目完整覆盖信号采样、复数运算优化、蝶形算法移植、LCD液晶驱动显示等关键环节,特别适合电…

2026/11/14 7:42:24

江苏电工证年审复审千万别踩坑,实操考试心里没底怕挂科

江苏电工证年审复审千万别踩坑,实操考试心里没底怕挂科 实操考试心里没底怕挂科,这是很多准备报考江苏电工证的从业者最真实的想法。尤其是在当前政策不断收紧、考试要求越来越高的背景下,很多人担心自己会因为经验不足或者准备不充分而“翻车”。尤其是对…

2026/11/14 7:42:24

建筑电工证难不难学 良心建议帮你少走弯路

建筑电工证难不难学 良心建议帮你少走弯路 实操考试心里没底怕挂科?别慌,今天咱们就来聊聊【建筑电工证难不难学】这个事儿,从考试难度、备考建议到薪资前景,一文说透,让你少踩坑。 一、建筑电工证报考门槛有多高? 说实话,现在考建筑电工证,…

2026/11/14 7:42:24

有电工证和无证值不值得考?别怕考不过白交培训费

有电工证和无证值不值得考?别怕考不过白交培训费 怕考不过白交培训费?你不是一个人。现在越来越多的焦作水利工程从业者开始关注电工证的考取问题,尤其是“有电工证和无证值不值得考”这个话题,直接关系到大家的岗位机会和薪资待遇。但现实中,很多人因为…

2026/11/14 7:42:24

防城区电工证含金量高吗?工地太忙根本没时间复习考试

防城区电工证含金量高吗?工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,这几乎是所有一线施工人员的共识。尤其是在防城区,电工证作为特种作业操作证之一,不仅影响你的日常工作权限,更关系到你在项目中的晋升与收入。很多人在拿到电工证后,对…

2026/11/14 7:37:24

青海市低压电工证实操考试心里没底?良心建议帮你稳过

青海市低压电工证实操考试心里没底?良心建议帮你稳过 实操考试心里没底怕挂科,这几乎是每个准备报考 青海市低压电工证 的人都会经历的心理状态。尤其对于新手来说,理论考试可能还有些底气,但一到实操,现场操作、设备使用、流程规范,每一步都可能出错…

2026/11/13 22:33:32

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/14 0:06:39

土木特种工考证官方报名入口怎么找 之前考的证在外省能不能转过来

土木特种工考证官方报名入口怎么找 之前考的证在外省能不能转过来 之前考的证在外省能不能转过来?这个问题我太熟悉了,作为一名干了十几年的特种作业证书办理从业者,每年都会遇到不少像你一样在外地考了证,回来却发现无法直接使用的学员。别急,今天我就…

2026/11/14 0:06:39

电工证要多久多钱保姆级教程:工地太忙根本没时间复习考试

电工证要多久多钱保姆级教程:工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,你不是一个人。在信阳浉河区,很多刚进入工地的电工都面临这样的困境:工作强度大,时间碎片化,根本没有系统复习考试的机会。但电工证是上岗的硬门槛,…

2026/11/13 22:32:11

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/13 12:14:39

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑