暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

RAC磁盘头损坏问题处理

作者:Digital Observer(施嘉伟)
Oracle ACE Pro: Database
PostgreSQL ACE Partner
11年数据库行业经验,现主要从事数据库服务工作
拥有Oracle OCM、DB2 10.1 Fundamentals、MySQL 8.0 OCP、WebLogic 12c OCA、KCP、PCTP、PCSD、PGCM、OCI、PolarDB技术专家、达梦师资认证、数据安全咨询高级等认证
ITPUB认证专家、PolarDB开源社区技术顾问、HaloDB技术顾问、TiDB社区技术布道师、青学会MOP技术社区专家顾问、国内某高校企业实践指导教师
公众号/墨天轮:Digital Observer;CSDN/PGfans:施嘉伟;ITPUB:sjw1933

背景:

集群宕机以后,重启报错,DATADG1磁盘组无法启动

1.手动挂起DATADG1磁盘组 报错

alter diskgroup datadg1 mount

复制

f1cdd0ee08426f76.jpg

后台ASM报错
2f80d9f83c2ff311.jpg
根据报错 found 0 disks 怀疑 是磁盘组里的磁盘有问题,没有启动

2.查询磁盘状态

select name,path,STATE,MODE_STATUS from v$asm_disk;
复制

发现磁盘都在,但是磁盘组没法跟磁盘对应起来

3.硬件工程师检查硬盘、以及存储网关都正常,磁盘权限也正常

4.怀疑是磁盘头损坏了,导致磁盘组跟磁盘无法对应

select group_Number,disk_number,mount_status ,header_status from v$asm_disk;
复制

2024107a102109e2.jpg
发现2,3磁盘头状态为CANDIDATE

5.使用kfed查看磁盘头

kfed read /dev/rhdiskpower2
复制

9e21759db103b473.jpg
kfbh.type显示异常 正常情况下应该是KFBTYP_DISKHEAD

5.修复2,3磁盘头

📌 从版本10.2.0.5开始ASM 会对disk header做一个额外的备份。即第二AU 的倒数第二个block中备份了一份KFBTYP_DISKHEAD。这个ASM Disk header的作用是当真的KFBTYP_DISKHEAD被意外覆盖或损坏时可以使用Oracle 工具 KFED使用repair选项来修复Disk header

kfed repair /dev/rhdiskpower2
复制

此时检查 磁盘头状态正常,显示为KFBTYP_DISKHEAD

6.一节点的数据库反复重启

修复磁盘头以后,磁盘能够正常挂起,并且数据库能够拉起
但是数据库在运行一段时间后 ,出现宕机
e7f4500a5658f23c.jpg
数据库日志显示 IO错误
由于操作系统为AIX,排查两个节点的磁盘参数
lsattr -El hdisk20 | grep reserve
发现二节点并没有设置no_reserve
这个参数的作用:这个参数其实是表示操作系统是否持有存储卷的共享锁方式
设置
chdev -l hdisk21 -a reserve_policy=no_reserve
设置完成后,一节点能够正常运行

7.二节点gpnpd服务无法启动

568d863b2885ff44.jpg

根据gipcd 日志信息
471f97c56eee0d9c.jpg
匹配到官方文档Doc ID 2034669.1
76a73440b6bf2e84.jpg
9877e08a65369835.jpg
b2474e132d6bfb08.jpg

删除以上三个目录的缓存,重启rac,二节点启动成功
hhh6.jpg

最后修改时间:2025-03-21 11:13:14
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论