如何重新配置Oracle数据库RAC集群的Voting Disk?

来源:XML-XSL教程作者:宋琮安头衔:草根站长
导读:本期聚焦于宋琮安创作的《如何重新配置Oracle数据库RAC集群的Voting Disk?》,敬请观看详情。在Oracle RAC集群维护中,Voting Disk(表决磁盘)的损坏或误配置往往会引发节点重启甚至集群脑裂,但直接使用dd清空或粗暴重建的做法可能让问题扩大。重新配置Voting Disk需要先理解其在集群仲裁中的核心作用,并区分ASM磁盘组与裸设备两种存储方式的操作差异。本文将重点介绍在丢失Voting Disk或需要迁移存储时的安全处理流程,涵盖备份OCR、停止集群服务、使用crsctl命令替换表决磁盘、恢复资源等关键步骤,同时提醒磁盘权限、ASM实例状态以及备份验证等容易忽略的环节,帮助DBA稳妥完成这项高风险操作。

Oracle RAC集群中的Voting Disk(表决磁盘)承载着节点成员资格与集群健康状态的关键信息,Oracle Clusterware通过多数派算法来决定哪些节点可以继续存活,避免脑裂。当Voting Disk因存储故障、人为误删或迁移需求而损坏时,集群可能无法正常启动,或者出现节点意外驱逐。重新配置Voting Disk并不是简单地把文件删掉再建一个,而是需要结合当前集群的运行状态、存储模型以及已有的OCR备份,制定一套严谨的操作流程。

如何重新配置Oracle数据库RAC集群的Voting Disk?

下文将从Voting Disk的仲裁机制讲起,分析需要重新配置的典型场景,然后分别给出ASM磁盘组和裸设备两种环境的详细操作步骤,最后介绍验证方法与常见故障排查思路。

Voting Disk的仲裁机制与重配场景

Voting Disk存放的是集群成员列表和心跳计数等信息。Clusterware的CSS(Cluster Synchronization Services)进程会定期写入心跳,节点之间通过共享的Voting Disk交换状态。当集群出现网络隔离或节点故障时,拥有多数Voting Disk访问权的节点组可以继续运行,而少数派节点将被强制重启,这就是所谓的投票仲裁机制。因此Voting Disk的数量通常是奇数个,例如1个、3个或5个,以保证任何分区都能获得明确的多数。

需要重新配置Voting Disk的常见情况包括:底层LUN或磁盘盘符发生变化导致原路径失效;ASM磁盘组被误删除;存储阵列迁移后需要将Voting Disk重新定位到新的磁盘组;或者管理员在维护过程中使用dd等命令直接清空了表决磁盘内容。无论哪种原因,只要命令显示状态异常,或集群启动时报错无法定位表决磁盘,就应该考虑重新配置。

这里有一个容易忽视的细节:Voting Disk与OCR(Oracle Cluster Registry)并不完全相同。OCR保存集群资源配置,而Voting Disk负责成员仲裁。重新配置Voting Disk前,必须确认OCR仍然可用或者有可靠备份,否则即便表决磁盘恢复,集群也无法加载资源配置。如果OCR也损坏了,则需要先恢复OCR,再处理Voting Disk。

重新配置前的关键准备与风险控制

在进行任何变更之前,必须备份OCR并记录当前集群状态。OCR备份可以使用ocrconfig命令导出,该操作不会影响在线集群。执行如下命令将OCR内容导出到本地文件:

# 备份OCR到本地路径
ocrconfig -export /tmp/ocr_backup_$(date +%Y%m%d).exp

同时,查看当前Voting Disk的配置和状态,确认问题范围。下面的命令可以列出集群中所有Voting Disk的路径和状态:

# 查询当前Voting Disk信息
crsctl query css votedisk

如果集群仍然可以启动,建议先停止相关资源以减少操作期间的数据写入。以grid用户执行可以停止整个集群栈,但这会中断所有数据库服务,只应在维护窗口内执行。如果是单节点或需要保留服务,可以只停止相关数据库实例和监听,但重新配置Voting Disk通常需要在集群停止状态下进行,以确保一致性。

对于使用ASM的场景,还需要确认ASM实例能够正常启动并挂载目标磁盘组。例如使用srvctl status asm或者登录sqlplus查看v$asm_diskgroup。磁盘权限也是常见问题,grid用户需要拥有对原始设备或ASM磁盘的读写权限,必要时使用chown和chmod调整。

通过ASM重新配置Voting Disk的详细步骤

在Oracle 11g及之后的版本中,Voting Disk可以存放在ASM磁盘组中。这种方式的优势是管理统一,可以利用ASM的镜像和条带。重新配置时,如果原磁盘组已经损坏且无法挂载,可以新建一个磁盘组,然后把Voting Disk替换到新磁盘组。

第一步,以grid用户登录ASM实例,创建新的磁盘组。假设新磁盘组名为VOTE_DG,包含一块磁盘/dev/sdd1:

-- 以sysasm登录ASM实例
sqlplus / as sysasm
-- 创建新的磁盘组用于存放Voting Disk
create diskgroup VOTE_DG external redundancy disk '/dev/sdd1' name vote_disk1;

如果使用的是ASMLib设备,则磁盘路径可能是ORCL:VOTE_DISK1。创建完成后,确认磁盘组处于MOUNTED状态。

第二步,使用crsctl replace命令将Voting Disk替换到新磁盘组。该命令必须由root用户或具有相应权限的grid用户执行,并且要求集群处于停止状态或者至少CSS以独占模式运行。典型命令如下:

# 将Voting Disk替换到ASM磁盘组VOTE_DG
crsctl replace votedisk +VOTE_DG

如果集群仍在运行,可以使用-force选项,但这不是推荐做法,因为可能引发节点重启。最好先停止集群:以root用户执行crsctl stop crs,然后在其中一个节点上执行替换命令。替换完成后,再次查询votedisk应该显示新磁盘组。

第三步,如果旧磁盘组仍然在线且希望回收空间,可以在确认Voting Disk已经迁移后,将旧磁盘组中的votedisk删除。不过ASM磁盘组中的Voting Disk无法单独删除,只能通过替换到新位置,然后重建旧磁盘组来移除。如果旧磁盘组已损坏,可以直接忽略。

裸设备环境下重新配置Voting Disk的注意事项

在较老的RAC版本或某些非ASM架构中,Voting Disk直接使用裸设备或块设备文件。重新配置时需要逐个添加新的表决磁盘路径,并删除失效路径。先查看当前配置:

crsctl query css votedisk

假设原路径为/dev/raw/raw1,需要替换为/dev/raw/raw2,可以先添加新设备,再删除旧设备:

# 添加新的表决磁盘
crsctl add votedisk /dev/raw/raw2
# 删除旧的表决磁盘
crsctl delete votedisk /dev/raw/raw1

注意添加和删除的顺序非常重要:必须先添加成功并验证集群能访问新设备,再删除旧设备,否则可能造成多数派丢失。另外,裸设备文件的属主和权限必须正确,通常为grid:asmadmin,权限660。可以使用ls -l /dev/raw/raw2检查,如果权限不对,执行chown grid:asmadmin /dev/raw/raw2和chmod 660 /dev/raw/raw2。

另一个常见问题是磁盘设备名在节点之间不一致。裸设备配置必须保证所有节点都能通过相同的路径访问同一个共享设备,否则会出现部分节点无法读取Voting Disk,导致启动失败。在多路径环境下,建议使用多路径设备如/dev/mapper/vote1,而不是底层物理设备。

重新配置后的验证与常见问题排查

完成Voting Disk替换后,需要重新启动集群并验证健康状态。首先以root用户执行crsctl start crs启动集群栈,然后在任一节点执行以下命令检查:

# 检查集群整体状态
crsctl check cluster -all
# 查看资源状态
crsctl stat res -t
# 查看Voting Disk信息
crsctl query css votedisk

如果输出所有节点均为ONLINE,并且crsctl stat res -t中数据库和监听资源正常,则说明重新配置成功。还可以执行ocrcheck验证OCR完整性。

常见问题包括:Voting Disk无法找到,通常是因为ASM磁盘组未挂载或磁盘路径错误;节点反复重启,可能是Voting Disk数量不足或权限问题导致多数派失败;替换命令执行报错,需要检查是否以正确用户身份执行,以及集群是否真的已停止。如果遇到PROC-26错误或类似权限错误,请检查磁盘组属主和权限设置。

最后提醒,重新配置Voting Disk属于高风险操作,建议先在测试环境完整演练,并确保有最新的OCR和数据库备份。实际生产环境操作时,务必申请维护窗口并与存储、网络团队协调,避免由于I/O超时或路径切换导致操作失败。

Oracle RACVoting Disk重新配置修改时间:2026-10-02 02:57:52

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/1002/64491.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。