Oracle Rac中某一节点因存储链路出错导致数据库IO读写卡顿的问题解决

前端之家收集整理的这篇文章主要介绍了Oracle Rac中某一节点因存储链路出错导致数据库IO读写卡顿的问题解决前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

环境:Oracle11.2.4.0RAC

问题描述:

数据库IO读写卡顿,随之某一节点的asm磁盘组被强制dismount,实例被迫停止。

问题分析:

通过系统日志分析,发现有Buffer I/O error的故障刷屏,如下图:

用multipath -ll查看服务器磁盘多路径,发现某一节点两块磁盘路径分别丢失了两条(正常情况为四条路径,一条为active状态,其他三条为enabled状态):


重新刷新路径,发现磁盘路径出错,从而导致两块磁盘所在的ASM磁盘组DATA2处于dismount状态的,因此造成该节点实例停止运行。

问题解决

1、通过存储重新挂载新的两块磁盘,用multipath -ll 确认新加的两块磁盘路径在两个节点中都正常,如下图:



(以下操作皆在grid用户下执行!“su - grid” 进入grid用户

2、在正常节点中,进入ASM磁盘组管理界面,把新加的两块盘添加到磁盘组DATA2中,等待磁盘组数据自动平衡,如下图:


(在grid用户下,执行命令"sqlplus / as sysasm"连接进入asm,再执行以下命令!)


显示REBAL RUN”状态说明数据正在自动平衡到新加的磁盘,数据同步过程需要一段时间。

数据同步过程如下:


DATA2_0000、DATA2_0001 是旧的路径出错的两块盘,DATA2_0002、DATA2_0003 是新加的正常的两块盘。


同步完成,再查看状态,当显示“no rows selected”状态表示数据已经平衡完毕。如下:


3、开始删除旧的路径损坏的两个磁盘DATA2_0000,DATA2_0001,并等待数据自动同步到新加的两块磁盘DATA2_0002,DATA2_0003中,如下图:



在旧的两块盘被踢除之前,asm机制会把这两块盘上的数据自动迁移到两块新的盘中,当显示REBAL RUN”状态说明数据正在自动平衡,数据同步过程需要一段时间,过程如下:



当DATA2磁盘组中只显示两块新的盘的时候,还有asm_operation查看结果处于“no rows selected”状态时,说明旧的两块盘已经被成功踢除!

3、再到不正常的节点中,用 " alter diskgroupDATA2 mount; " 命令挂载DATA2磁盘组,挂载成功,日志如下:


4、分别在两个节点中进入asmcmd,用“lsdg”命令查看磁盘组情况,状态正常,如下:


5、在不正常节点中,启动实例,启动成功,问题解决

猜你在找的Oracle相关文章