守得云开见月明:一次ASM存储高可用故障解决过程分析

本文详细介绍了在Oracle ASM环境中进行存储高可用测试时遇到的问题,包括控制文件和重做日志文件在ASM磁盘组中出现的I/O错误,导致数据库实例重启。通过对故障现象的观察、测试和分析,作者发现了存储多路径参数对问题的影响,特别是`path_fail_secs`和`transient_secs`。通过调整这两个参数,成功减少了ASM实例在检测到I/O错误后的离线时间,从而避免了实例异常重启,实现了故障的快速恢复。案例揭示了在处理存储高可用问题时,深入理解数据库、存储和操作系统之间的交互至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关注我们获得更多内容

640?wx_fmt=jpeg


作者 | 姜劲松,云和恩墨专家支持部Oracle技术专家,Oracle OCP,MySQL OCP,RHCE等认证专家。长期服务移动运营商行业客户,精通 oracle 性能优化,故障诊断,特殊恢复领域。23年IT从业经验、资深数据库及系统软硬件集成专家。


百万级用户规模营销账务系统研发及实施运维经验,主持过11省千万级电力营销业务系统运维主管工作;设计实施过10多个阿里云平台新能源SAAS系统。历任开发工程师、项目经理、技术经理、项目总监、运维主管、云平台架构师等职位。


前言


Oracle ASM 全称为Automated Storage Management,即自动存储管理,它是自 Oracle10g 这个版本 Oracle 推出的新功能。这是 Oracle 提供的一个卷管理器,用于替代操作操作系统所提供的 LVM,它不仅支持单实例配置,也支持RAC这样的多实例配置。


给 Oracle 数据库管理员带来极大的方便,ASM 可以自动管理磁盘组,并提供数据冗余和优化。 ASM提供了丰富的管理和容灾手段,通过适当的配置,可以实现高效的数据库层面的存储容灾功能。


本案例通过某客户项目现场1次ASM存储容灾无法实现预期目标的问题分析解决过程,和大家共同探讨对于非预期问题的解决之道。


 

01问题简述


背景说明:

1、Oracle12.2RAC+ASM Normal Redendancy 模式,数据库存储采用双存储冗余架构,规避单存储故障导致服务中断及数据丢失;

2、 ASM DiskGroup 设计2个 Failgroup(FG),1个FG磁盘全部存储在1#存储;1个FG全部磁盘存储在2#存储中;

3、期望任意存储故障或断电,数据库实例不受影响,数据不丢失,故障存储上线后数据自动同步。

 

在实际高可用测试中,拔掉1个存储,发现如下现象:

1.CRS集群不受影响,ocr/votedisk自动Failover;

2.DB Controlfile/Redolog发生I/O错误,导致LWGR/CKPT等核心进程长时间阻塞后,Oracle主动重启DB实例(1个或2个实例)后,数据库恢复正常;

3.数据库数据正常,故障存储Online后自动同步正常。


02测试过程


1) 第一类测试

1、存储完成拔线:16:56:05

2、实例16:57:37-16:57:39 挂掉


ASM日志:

2018-08-01T16:57:41.712885+08:00

NOTE: ASM client node11:node1:node1-rac disconnected unexpectedly


DB:

2018-08-01T16:57:45.214182+08:00

Instance terminated by USER, pid = 10158

 

2018-08-01T16:57:36.704927+08:00

Errors in file /oracle/diag/rdbms/node1/node11/trace/node11_ckpt_10158.trc:

ORA-00206: error in writing (block 3, # blocks 1) of control file

ORA-00202: control file: '+DG_DATA_FAB/NODE1/CONTROLFILE/current.265.981318275'

ORA-15081: failed to submit an I/O operation to a disk

ORA-15081: failed to submit an I/O operation to a disk

ORA-15064: communication failure with ASM instance

2018-08-01T16:57:36.705340+08:00

Errors in file /oracle/diag/rdbms/node1/node11/trace/node11_ckpt_10158.trc:

ORA-00221: error on write to control file

ORA-00206: error in writing (block 3, # blocks 1) of control file

ORA-00202: control file: '+DG_DATA_FAB/NODE1/CONTROLFILE/current.265.981318275'

ORA-15081: failed to submit an I/O operation to a disk

ORA-15081: failed to submit an I/O operation to a disk

ORA-15064: communication failure with ASM instance


Oracle CKPT 进程因为控制文件 IO 错误阻塞,导致主动重启 instance,每次测试都在超时70s之后开始Terminate instance。


怀疑是ASM实例offline disk时间过慢,希望调高CKPT阻塞时间阀值解决问题,但是没有找到对应的参数。


既然是controlfile存在此问题,是不是因为DATA磁盘比较多,导致offline检测时间长呢?


尝试将controlfile转移到磁盘较少的REDO DG,仍然在controfile这里报错:


systemstatedump文件:

----- Beginning of Customized Incident Dump(s) -----

Process CKPT (ospid: 4693) is waiting for event 'control file sequential read'.

Process O009 (ospid: 5080) is the blocker of the wait chain.

===[ Wait Chain ]===

CKPT (ospid: 4693) waits for event 'control file sequential read'.

LGWR (ospid: 4691) waits for event 'KSV master wait'.

O009 (ospid: 5080) waits for event 'ASM file metadata operation'.

 

node1_lgwr_4691.trc

----- END DDE Actions Dump (total 0 csec) -----

ORA-15080: synchronous I/O operation failed to write block 1031 of disk 4 in disk group DG_REDO_MOD

ORA-27063: number of bytes read/written is incorrect

HPUX-ia64 Error: 11: Resource temporarily unavailable

Additional information: 4294967295

Additional information: 1024

NOTE: process _lgwr_node1 (4691) initiating offline of disk 4.4042263303 (DG_REDO_MOD_0004) with mask 0x7e in group 3 (DG_REDO_MO

D) with client assisting


2) 第二类测试


尝试对 controlfile 进行 multiplex:

1、每个存储分配1个10GB LUN给服务器;

2、基于每个LUN创建1个DG,controlfile multiplex到这2个DG中。


重新开始模拟1个存储故障测试,发现仍然会发生控制文件无法读写,重启实例!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值