磁盘组add disk,报错:ORA-15041 thrown in ARB0 for group number

磁盘组add disk,报错:ORA-15041 thrown in ARB0 for group number


在ASM中,每一个文件的extent都均匀的分布在它所在磁盘组的所有磁盘上,无论是在文件第一次创建或是文件创建之后的重新resize都是如此,这也意味着我们始终能保持磁盘组中的每一个磁盘上都有一个平衡的空间分配。

当我们ASM磁盘空间不够时,一般我们都会选择扩容,往磁盘组中添加新的磁盘,然后等待完成rebalance即可。但是,当我们没有注意到一些情况时,可能就会扩容失败。下面就说一种可能之前没有注意到的地方,导致扩容失败的场景。

故障现象

有套oracle 11.2.0.4 2节点rac的环境,监控显示,磁盘组data的剩余空间告警。所以登录环境,查看具体信息:
磁盘组详细信息:

grid@drrac01 ~]$ asmcmd lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  NORMAL  N         512   4096  1048576   1966080    27640            32768           -2564              0             N  DATA/
MOUNTED  EXTERN  N         512   4096  1048576   3584000     6791                0            6791              0             N  DATADG01/
MOUNTED  HIGH    N         512   4096  1048576     10240     8984             4096            1629              0             Y  OCR_VOTING/

可以看到,data磁盘组为normal冗余,剩余空间只剩20多个G,Usable_file_MB已经成为负值,说明已经不能保证数据的冗余度,如果此时有块磁盘offline了,那么就有可能丢数据。所以继续磁盘组扩容。

经过主机分配资源,我们往磁盘组中添加磁盘:
alter diskgroup data add disk ‘xxx’ rebalance power 10;

但是,还没等返回成功信息,就报错了。报错如下:
ERROR: ORA-15041 thrown in ARB0 for group number 1
Errors in file /u01/oracle/app/grid/base/diag/asm/+asm/+ASM1/trace/+ASM1_arb0_16655.trc:
ORA-15041: diskgroup “DATA” space exhausted

问题分析

[oracle@oracle11g ~]$ oerr ora 15041
15041, 00000, “diskgroup “%s” space exhausted”
// *Cause: The diskgroup ran out of space.
// *Action: Add more disks to the diskgroup, or delete some existing files.
//
官方的意思指出,磁盘组空间耗尽。我们应该添加更多的磁盘或者删除一些文件。
和我们的场景有点类似,我们确实是空间已经耗尽(Usable_file_MB为负值)。但是我们确实是在添加磁盘,但是报错了,所以官方解释对我们没有帮助。
而且存储空间问题不是直接存储扩容就完事了?可惜,本例无论你添加再多的磁盘也无济于事。

参考mos:ORA-15041 IN A DISKGROUP ALTHOUGH FREE_MB REPORTS SUFFICIENT SPACE (Doc ID 460155.1)
我们很容易就能验证:
1、添加新磁盘前,60块磁盘大小都一致,为32GB;
2、磁盘状态都正常,没有DROPPING / HUNG状态的磁盘;
3、我们添加新磁盘的命令根本就没成功。
那么导致它的根因是什么哪?
我们通过查询,会发现有个别磁盘的free_mb过小,甚至为0。由于rebalance需要每个磁盘的一些可用空间,最终会导致normal模式下由于部分disk无法分配有效空间触发ORA-15041。
这里有个更严重的问题:
手工或自动rebalance的前提条件是每个磁盘必须要有50M~100M的可用空间,目前部分disk的free_mb=0,所以即使表空间使用率再高,情况再紧急,无论你有再多的新盘使劲地往DATA_DG添加也无济于事。

根因:
当磁盘组中有部分磁盘的free_mb<300MB的时候,rebalance就会报错,因为重新平衡操作需要每个磁盘中的一些可用空间,也就会报错ORA-15041。

解决方法

本案例通过下面直接手工rebalance的方式是无法成功的:
alter diskgroup name rebalance power level;
建议处理的方式有两种:
1.删除磁盘组上部分数据,以释放空间来满足rebalance的需要;
2.新建ASM磁盘组,进行disk group迁移。
删除数据文件的风险过大,时间窗口和多余磁盘允许下,建议使用迁移磁盘组的方式处理。

解决过程

1、查看asm磁盘使用率:
set linesize 300;
set pagesize 20;
col name for a15;
col state for a15;
col header_status for a15;
col path for a40;
col failgroup for a15;
select dk.group_number,dk.name,dk.header_status,dk.state,dk.mode_status,dk.failgroup,dk.os_mb,dk.total_mb,dk.free_mb,dk.path from v$asm_disk dk where group_number=1 order by dk.group_number,dk.failgroup,dk.path;

GROUP_NUMBER NAME	     HEADER_STATUS   STATE	     MODE_STATUS    FAILGROUP		 OS_MB	 TOTAL_MB    FREE_MB PATH
------------ --------------- --------------- --------------- -------------- --------------- ---------- ---------- ---------- ----------------------------------------
	   1 DATA_0000	     MEMBER	     NORMAL	     ONLINE	    DATA_0000		 32768	    32768	1338 /dev/asm-diskaa
	   1 DATA_0001	     MEMBER	     NORMAL	     ONLINE	    DATA_0001		 32768	    32768	 893 /dev/asm-diskab
	   1 DATA_0002	     MEMBER	     NORMAL	     ONLINE	    DATA_0002		 32768	    32768	 432 /dev/asm-diskac
	   1 DATA_0003	     MEMBER	     NORMAL	     ONLINE	    DATA_0003		 32768	    32768	   0 /dev/asm-diskad
	   1 DATA_0004	     MEMBER	     NORMAL	     ONLINE	    DATA_0004		 32768	    32768      11239 /dev/asm-diskae
	   1 DATA_0005	     MEMBER	     NORMAL	     ONLINE	    DATA_0005		 32768	    32768      10779 /dev/asm-diskaf
	   1 DATA_0006	     MEMBER	     NORMAL	     ONLINE	    DATA_0006		 32768	    32768      10322 /dev/asm-diskag
	   1 DATA_0007	     MEMBER	     NORMAL	     ONLINE	    DATA_0007		 32768	    32768	9879 /dev/asm-diskah
	   1 DATA_0008	     MEMBER	     NORMAL	     ONLINE	    DATA_0008		 32768	    32768	9409 /dev/asm-diskai
	   1 DATA_0009	     MEMBER	     NORMAL	     ONLINE	    DATA_0009		 32768	    32768	9423 /dev/asm-diskaj
	   1 DATA_0010	     MEMBER	     NORMAL	     ONLINE	    DATA_0010		 32768	    32768	9414 /dev/asm-diskak
	   1 DATA_0011	     MEMBER	     NORMAL	     ONLINE	    DATA_0011		 32768	    32768	9415 /dev/asm-diskal
	   1 DATA_0012	     MEMBER	     NORMAL	     ONLINE	    DATA_0012		 32768	    32768	9419 /dev/asm-diskam
	   1 DATA_0013	     MEMBER	     NORMAL	     ONLINE	    DATA_0013		 32768	    32768	9410 /dev/asm-diskan
	   1 DATA_0014	     MEMBER	     NORMAL	     ONLINE	    DATA_0014		 32768	    32768	9413 /dev/asm-diskao
	   1 DATA_0015	     MEMBER	     NORMAL	     ONLINE	    DATA_0015		 32768	    32768	9413 /dev/asm-diskap
	   1 DATA_0016	     MEMBER	     NORMAL	     ONLINE	    DATA_0016		 32768	    32768	9414 /dev/asm-diskaq

GROUP_NUMBER NAME	     HEADER_STATUS   STATE	     MODE_STATUS    FAILGROUP		 OS_MB	 TOTAL_MB    FREE_MB PATH
------------ --------------- --------------- --------------- -------------- --------------- ---------- ---------- ---------- ----------------------------------------
	   1 DATA_0017	     MEMBER	     NORMAL	     ONLINE	    DATA_0017		 32768	    32768	9412 /dev/asm-diskar
	   1 DATA_0018	     MEMBER	     NORMAL	     ONLINE	    DATA_0018		 32768	    32768	9414 /dev/asm-diskas
	   1 DATA_0019	     MEMBER	     NORMAL	     ONLINE	    DATA_0019		 32768	    32768	9410 /dev/asm-diskat
	   1 DATA_0020	     MEMBER	     NORMAL	     ONLINE	    DATA_0020		 32768	    32768	9416 /dev/asm-diskau
	   1 DATA_0021	     MEMBER	     NORMAL	     ONLINE	    DATA_0021		 32768	    32768	9414 /dev/asm-diskav
	   1 DATA_0022	     MEMBER	     NORMAL	     ONLINE	    DATA_0022		 32768	    32768	9414 /dev/asm-diskaw
	   1 DATA_0023	     MEMBER	     NORMAL	     ONLINE	    DATA_0023		 32768	    32768	9412 /dev/asm-diskax
	   1 DATA_0024	     MEMBER	     NORMAL	     ONLINE	    DATA_0024		 32768	    32768	9417 /dev/asm-diskay
	   1 DATA_0025	     MEMBER	     NORMAL	     ONLINE	    DATA_0025		 32768	    32768	9418 /dev/asm-diskaz
	   1 DATA_0026	     MEMBER	     NORMAL	     ONLINE	    DATA_0026		 32768	    32768	9405 /dev/asm-diskba
	   1 DATA_0027	     MEMBER	     NORMAL	     ONLINE	    DATA_0027		 32768	    32768	9414 /dev/asm-diskbb
	   1 DATA_0028	     MEMBER	     NORMAL	     ONLINE	    DATA_0028		 32768	    32768	9412 /dev/asm-diskbc
	   1 DATA_0029	     MEMBER	     NORMAL	     ONLINE	    DATA_0029		 32768	    32768	9415 /dev/asm-diskbd
	   1 DATA_0030	     MEMBER	     NORMAL	     ONLINE	    DATA_0030		 32768	    32768	9415 /dev/asm-diskbe
	   1 DATA_0031	     MEMBER	     NORMAL	     ONLINE	    DATA_0031		 32768	    32768	9412 /dev/asm-diskbf
	   1 DATA_0032	     MEMBER	     NORMAL	     ONLINE	    DATA_0032		 32768	    32768	9420 /dev/asm-diskbg
	   1 DATA_0033	     MEMBER	     NORMAL	     ONLINE	    DATA_0033		 32768	    32768	9416 /dev/asm-diskbh

GROUP_NUMBER NAME	     HEADER_STATUS   STATE	     MODE_STATUS    FAILGROUP		 OS_MB	 TOTAL_MB    FREE_MB PATH
------------ --------------- --------------- --------------- -------------- --------------- ---------- ---------- ---------- ----------------------------------------
	   1 DATA_0034	     MEMBER	     NORMAL	     ONLINE	    DATA_0034		 32768	    32768	9415 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值