原文: REQUIRED_MIRROR_FREE_MB
作者: Bane Radulovic
译者:陈亚军,沃趣科技数据库技术工程师,主要参与公司产品实施、测试、维护以及优化。
审校:魏兴华
责编:仲培艺
REQUIRED_MIRROR_FREE_MB
和USABLE_FILE_MB
是V$ASM_DISKGROUP[_STAT]
视图中非常有趣的两列。Oracle Support部门收到的很多问题是关于这两列的意义以及它们的值是怎么计算的。我本打算写些文章介绍一下,但是我意识到我不可能比Harald van Breederode做的更出色。因此我征得了他的同意来直接参考他的文章,所以还是请欣赏他的大作吧。
How much space can I use
既然已经解释了REQUIRED_MIRROR_FREE_MB
和USABLE_FILE_MB
,我想补充说明的是ASM不会阻止你使用所有可用空间(NORMAL冗余模式下总空间的1/2或者HIGH冗余模式下总空间的1/3)。但是一旦你使用完了所有磁盘组空间,将没有剩余空间用来扩展或者新增任何其它文件,在这种情况下,如果有磁盘出现故障,同样不会有剩余空间用来让数据重新满足需要的冗余度——直到故障的磁盘被替换并且Rebalance完成。
Exadata with ASM version 11gR2
在安装了11.2 ASM版本的Exadata中,REQUIRED_MIRROR_FREE_MB
等于磁盘组中最大的failgroup的大小(在真实的Exadata环境中,所有的failgroup都默认大小相同)。为了验证这个说法,让我们来看一个安装了11.2 ASM的Exadata的情况。
和大部分的Exadata安装一样,这里有3个磁盘组。
[grid@exadb01 ~]$ sqlplus / as sysasm
SQL*Plus: Release 11.2.0.4.0 Production on [date]
SQL> select NAME, GROUP_NUMBER from v$asm_diskgroup_stat;
NAME GROUP_NUMBER
--------- ------------
DATA 1
DBFS_DG 2
RECO 3
SQL>
出于列举这个例子的目的,我们将会看下DBFS_DG
这个磁盘组。通常情况下DBFS_DG
的每个failgroup有10个磁盘。为了验证REQUIRED_MIRROR_FREE_MB
就是最大的failgroup的大小,这里我drop掉了部分磁盘。
SQL> select FAILGROUP, count(NAME) "Disks", sum(TOTAL_MB) "MB"
from v