【ASK_ORACLE】Oracle表决磁盘丢失后的恢复方法

时间:2022-12-29 18:07:44

前言

表决磁盘的丢失往往会导致ASM实例无法启动,那么CRS就无法访问到存放在ASM磁盘组中的表决盘和OCR。 解决步骤分为三大步:

l  重新创建表决磁盘

l  拉起CRS

l  恢复OCR

 

实验环境

搭建平台:VMware Workstation

OS:OL 6.10

DB:Oracle 11.2.0.4


具体步骤

一、重新创建表决磁盘

1. 使用root关闭所有节点的CRS

$ su -

# $GI_HOME/bin/crsctl stop crs   ##需要在每个节点执行, 如果关闭不了,可以添加“-f”参数强制关闭

 

2. 重建丢失的表决磁盘

将CRS启动到exclusive模式,CRS会在该模式下重新自动创建丢失的表决磁盘:

$ su -

# $GI_HOME/bin/crsctl start crs -excl

 

3. 强制挂载表决磁盘所在的磁盘组

# su - grid

$ sqlplus / as sysasm

sql>alter diskgroup <磁盘组的名字> mount force;

比如:sql>alter diskgroup OCR mount force;

注:

等待rebalance结束后,需要卸载这个磁盘组!命令:

SQL> alter diskgroup <磁盘组的名字> dismount;

 

 

二、拉起CRS

1. 重启该节点的CRS,并强制挂载其他非表决磁盘的磁盘组(挂载命令与第3步一致),比如data磁盘组

 

2. 启动所有节点的CRS

$ su -

# $GI_HOME/bin/crsctl start crs  ##每个节点都要执行

 

 

三、恢复OCR

1.查看OCR的已有备份并检查备份是否成功

$ su -

# $GI_HOME/bin/ocrconfig -showbackup

# $GI_HOME/bin/ocrdump -backupfile <备份文件名>

 

2. 停止所有节点的CRS

$ su -

# $GI_HOME/bin/crsctl stop crs

 

3. 将crs启动到exclusive模式

# $GI_HOME/bin/crsctl start crs -excl -nocrs

注:

一定要添加参数“-nocrs”,不然ASM实例会挂掉!

 

4. 创建磁盘组

sql>create diskgroup <磁盘组名> normal redundancy disk '<磁盘在OS上的绝对路径>' FORCE ATTRIBUTE 'compatible.asm'='11.2.0.4.0','compatible.rdbms'='11.2.0.4.0','au_size'='4M','cell.smart_scan_capable'='TRUE';  ##au_size参数建议改成4M

 

5. 使用OCR备份进行OCR的恢复

从第1步的备份清单中选取一个备份来进行恢复操作,恢复命令:

# $GI_HOME/bin/ocrconfig -restore <备份文件名>

 

6. 校验OCR并查看表决磁盘状态

# $GI_HOME/bin/ocrcheck  ##校验OCR

# $GI_HOME/bin/crsctl start resource ora.crsd -init  ##启动crsd

# $GI/bin/crsctl query css votedisk  ##查看表决磁盘状态, 被重建的磁盘组里面应该是空的

 

7. 添加表决盘

# $GI_HOME/bin/crsctl replace votedisk <磁盘组名>

 

8. 重启CRS

 

9. 再次校验OCR和表决磁盘

# $GI_HOME/bin/crsctl query css votedisk

# $GI_HOME/bin/ocrcheck

 

10. 最后启动整个集群

# $GI_HOME/bin/crsctl start cluster -all    ##或者在每个节点都执行启动CRS的操作