Oracle ASM REQUIRED_MIRROR_FREE_MB

eric0435發表於2017-02-03

REQUIRED_MIRROR_FREE_MB與USABLE_FILE_MB是V$ASM_DISKGROUP[_STAT]檢視中兩個非常有意義的列。關於這兩個欄位有很多問題與及如何計算它們。

How much space can I use
ASM不能阻止你使用外部冗餘磁碟組的所有可用空間,normal冗餘磁碟組總空間的一半,high冗餘磁碟組總空間的三分之一。但如果你想填滿磁碟組直到溢位,使它沒有足夠空間來增長或增加任何檔案,在磁碟故障情況下,直到故障磁碟被替換與rebalance操作完成之前,將沒有空間來還原一些資料的冗餘.

11gr2 ASM in Exadata
在Exadata ASM 11gr2中,required_mirror_free_mb作為磁碟組中的最大故障組的大小被顯示。下面是Exadata中的11.2.0.4 ASM的例子進行說明。

[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的每個故障組有10塊磁碟。為了說明REQUIRED_MIRROR_FREE_MB對於最大故障組所顯示的大小刪除了幾塊磁碟。

SQL> select FAILGROUP, count(NAME) "Disks", sum(TOTAL_MB) "MB"
from v$asm_disk_stat
where GROUP_NUMBER=2
group by FAILGROUP
order by 3;

FAILGROUP       Disks         MB
---------- ---------- ----------
EXACELL04           7     180096
EXACELL01           8     205824
EXACELL02           9     231552
EXACELL03          10     257280

SQL>

可以看到最大故障組中的總空間大小為257280MB。

最後我們來檢視最大故障組的required_mirror_free_mb大小

SQL> select NAME, TOTAL_MB, FREE_MB, REQUIRED_MIRROR_FREE_MB, USABLE_FILE_MB
from v$asm_diskgroup_stat
where GROUP_NUMBER=2;

NAME         TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
---------- ---------- ---------- ----------------------- --------------
DBFS_DG        874752     801420                  257280         272070

ASM計算USABLE_FILE_MB使用以下公式:

USABLE_FILE_MB=(FREE_MB-REQUIRED_MIRROR_FREE_MB)/2
              =(801420-257280)/2=544140/2=272070 

Exadata with ASM version 12cR1
在使用ASM 12cr1的exadata中,required_mirror_free_mb作為磁碟組中最大的大小被顯示

[grid@exadb03 ~]$ sqlplus / as sysasm

SQL*Plus: Release 12.1.0.2.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> select FAILGROUP, count(NAME) "Disks", sum(TOTAL_MB) "MB"
from v$asm_disk_stat
where GROUP_NUMBER=2
group by FAILGROUP
order by 3;

FAILGROUP       Disks         MB
---------- ---------- ----------
EXACELL05           8     238592
EXACELL07           9     268416
EXACELL06          10     298240

最大故障組中的總空間為298240MB,但這時required_mirror_free_mb顯示的大小為29824MB。

SQL> select NAME, TOTAL_MB, FREE_MB, REQUIRED_MIRROR_FREE_MB, USABLE_FILE_MB
from v$asm_diskgroup_stat
where GROUP_NUMBER=2;  2    3

NAME         TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
---------- ---------- ---------- ----------------------- --------------
DBFS_DG        805248     781764                   29824         375970

下面檢視磁碟組中最大磁碟的大小

SQL> select max(TOTAL_MB) from v$asm_disk_stat where GROUP_NUMBER=2;

MAX(TOTAL_MB)
-------------
        29824

ASM計算usable_file_mb的公式如下:

USABLE_FILE_MB = (FREE_MB - REQUIRED_MIRROR_FREE_MB) / 2
               =(781764-29824)/2=375970

小結:
required_mirror_free_mb與usable_file_mb用來幫助dba與儲存管理員來規劃磁碟組容量與冗餘。這只是一個報告,ASM並不執行。在ASM為12cr1的exadata中,required_mirror_free_mb的大小就是磁碟組中最大磁碟的大小。透過這種設計,從這個欄位就能反映出實踐經驗,它顯示了磁碟出現故障,而不是整個儲存單元。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2133011/,如需轉載,請註明出處,否則將追究法律責任。

相關文章