背景:
用户一套Oracle19c的RAC集群ASM磁盘组使用了3个存储作为HIGH以及NORMAL冗余模式,每个存储分别对应一个failgroup,其中2个存储出现了故障导致ASM磁盘组对应的failgroup磁盘全部offline,在存储恢复正常之后,需要将offline的磁盘加回ASM磁盘组
问题:
一套Oracle19c的RAC集群ASM磁盘组ARCHDG,DATADG使用了3个存储作为HIGH冗余模式,OCRDG使用了3个存储作为normal模式,每个存储分别对应一个failgroup,其中2个存储出现了故障导致ARCHDG,DATADG磁盘组对应的两个failgroup磁盘全部offline,OCR磁盘组有一个failgroup offline
问题处理:
OCRDG盘处理
OCRDG心跳盘磁盘只有FAILGROUP FG3的OCRDG_0002被force drop,因为集群至少需要2个心跳盘否则集群会直接crash,所以只能force drop一个FAILGROUP
在Oracle11.2之后,对于被force drop的OCR心跳盘,加回磁盘的操作跟普通的ASM磁盘组一样,直接通过add diskgroup加回即可
将force drop的磁盘加回OCRDG,由于是被强制drop offline,现有的磁盘组成员的PST(partnership and status table)已经清理了该磁盘的信息,但被offline的磁盘里面还保存原有的磁盘信息,需要通过force add disk的方式或者先dd磁盘头信息再加进去
alter diskgroup OCRDG add disk '' force;
重新加会OCRDG磁盘组之后,集群的ocr配置也会同步更新,将state状态offline的磁盘重新加回
crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE a6219f6847fb4f3abfc1c9e4618566e6 (/dev/xxxxx/ocrdg1) [OCRDG]
2. ONLINE ad3cf7c7e1b94fdfbff9dd920e7cb573 (/dev/xxxxx/ocrdg2) [OCRDG]
3. ONLINE 5defc32620594f34bfed90517e9225e2 (/dev/xxxxx/ocrdg3) [OCRDG]
ARCHDG盘处理
ARCHDG归档日志盘failgroup FG2, FG3都被force drop,只剩failgroup FG1正常
ARCHDG盘由于进行drop磁盘操作,触发了数据的rebalance,但由于现在只要一个failgroup FG1,冗余不满足无法正常的rebalance下去报错ORA-59048,需要将被force drop的磁盘加回去,才能恢复rebalance
因为磁盘已经被force drop,FG1的PST里面已经没有保留FG2,FG3的信息,尝试使用force add的方式将force drop的两个failgroup FG2,FG3磁盘加回去,但报错ORA-15107:missing or invalid ASM disk name,没办法将两个failgroup同时一起强制加回去
采用另一种方法,先将force drop的磁盘头信息dd,再采用正常加入add disk的方式
先使用dd命令清理force drop磁盘的头信息
再将两个failgroup FG2,FG3重新加回磁盘组,force drop的磁盘全部成功加回去ARCHDG磁盘组
rebalance恢复正常,报错ORA-59048消失
注意要同时将两个failgroup一起加回,不能只加一个,否则会遇到以下ORA-15291报错,因为当前的磁盘组为HIGH模式,加磁盘时至少需要两个failgroup才能进行配对
DATADG盘处理
DATADG归档日志盘failgroup FG2, FG3的磁盘虽然没有被force drop,但由于IO错误,FG2,FG3的磁盘都被offline了,状态变成unknown,但FG1的PST还保留着FG2,FG3的信息
尝试直接online disk或者整个failgroup,但由于磁盘组的属性配置compatible.rdbms为10.1.0.0小于11.1.0.0.0,无法使用该功能,并且当前由于磁盘组部分磁盘offline,无法更改磁盘组的属性compatible.rdbms
由于FG2,FG3的磁盘只是被offline,无法像恢复ARCHDG的方式通过dd磁盘+add disk的进行恢复,因为FG1还保留着FG2,FG3的信息,加进去会出现冲突failgroup磁盘数量不一致,还好当前集群为Oracle 19c版本,可以使用12c之后的新特性replace disk指定加入的磁盘替换已有的磁盘
先通过kred采集FG2,FG3磁盘头里面原有的dskname信息
再使用dd命令清理FG2,FG3的磁盘的头信息
最后使用REPLACE DISK的方式将FG2,FG3加回磁盘组,完成DATADG磁盘的恢复操作
后续处理:
在修复完磁盘组之后,将磁盘的compatible.rdbms属性设置为11.2.0.0.0,以确保磁盘由于IO报错或者disk repair time时间内offline的磁盘,可以使用Oracle ASM 11G的特性 ASM Fast Disk Resync 通过online disk或者failgroup进行快速的恢复,使用normal或者high模式的磁盘组compatible.rdbms建议都要设置为11.1.0.0.0及以上