Oracle 11g下asm磁盘组”REQUIRED_MIRROR_FREE_MB“大小测试
Oracle asm的参数实在太多,看了官方文档对”required_mirror_free_mb“参数还是意识模糊,所以干脆自己做测试来验证。
环境:Oracle 11.2.0.4 RAC
下面总共分6个场景,使用normal冗余在不同数量失败组、asm盘数量,测试”required_mirror_free_mb“可用空间
场景一:2个失败组,每个失败组fg一个磁盘,看大小
create diskgroup test normal redundancy
failgroup fg1 disk '/dev/asm_1g_1' size 1g 看大小
failgroup fg2 disk '/dev/asm_1g_2' size 1g
ATTRIBUTE 'au_size'='4M';
SQL> select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,NAME,FAILGROUP,PATH,FAILGROUP_TYPE from v$asm_disk order by path;
GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE NAME FAILGROUP PATH FAILGRO
------------ ----------- ------- ------------ ------- -------- ---------- ---------- -------------------- -------
4 0 CACHED MEMBER ONLINE NORMAL TEST_0000 FG1 /dev/asm_1g_1 REGULAR
4 1 CACHED MEMBER ONLINE NORMAL TEST_0001 FG2 /dev/asm_1g_2 REGULAR
SQL> select name,state,total_mb/1024 total_gb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where name='TEST';
NAME STATE TOTAL_GB FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
---------- ----------- ---------- ---------- ----------------------- --------------
TEST MOUNTED 2 1904 0 952
REQUIRED_MIRROR_FREE_MB=0
场景二、2个失败组,每个fg 二个磁盘,看大小
create diskgroup test normal redundancy
failgroup fg1 disk '/dev/asm_1g_1' size 1g
failgroup fg1 disk '/dev/asm_1g_2' size 1g
failgroup fg2 disk '/dev/asm_1g_3' size 1g
failgroup fg2 disk '/dev/asm_1g_4' size 1g
ATTRIBUTE 'au_size'='4M';
SQL> select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,NAME,FAILGROUP,PATH,FAILGROUP_TYPE from v$asm_disk where name like 'TEST%' order by path;
GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE NAME FAILGROUP PATH FAILGRO
------------ ----------- ------- ------------ ------- -------- ---------- ---------- -------------------- -------
4 0 CACHED MEMBER ONLINE NORMAL TEST_0000 FG1 /dev/asm_1g_1 REGULAR
4 1 CACHED MEMBER ONLINE NORMAL TEST_0001 FG1 /dev/asm_1g_2 REGULAR
4 2 CACHED MEMBER ONLINE NORMAL TEST_0002 FG2 /dev/asm_1g_3 REGULAR
4 3 CACHED MEMBER ONLINE NORMAL TEST_0003 FG2 /dev/asm_1g_4 REGULAR
SQL> select name,state,total_mb/1024 total_gb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where name='TEST';
NAME STATE TOTAL_GB FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
---------- ----------- ---------- ---------- ----------------------- --------------
TEST MOUNTED 4 3936 1024 1456
REQUIRED_MIRROR_FREE_MB=1g
场景三:2个失败组,每个fg 三个磁盘,看大小
create diskgroup test normal redundancy
failgroup fg1 disk '/dev/asm_1g_1' size 1g
failgroup fg1 disk '/dev/asm_1g_2' size 1g
failgroup fg1 disk '/dev/asm_1g_3' size 1g
failgroup fg2 disk '/dev/asm_1g_4' size 1g
failgroup fg2 disk '/dev/asm_1g_5' size 1g
failgroup fg2 disk '/dev/asm_1g_6' size 1g
ATTRIBUTE 'au_size'='4M';
SQL> select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,NAME,FAILGROUP,PATH,FAILGROUP_TYPE from v$asm_disk where name like 'TEST%' order by path;
GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE NAME FAILGROUP PATH FAILGRO
------------ ----------- ------- ------------ ------- -------- ---------- ---------- -------------------- -------
4 0 CACHED MEMBER ONLINE NORMAL TEST_0000 FG1 /dev/asm_1g_1 REGULAR
4 1 CACHED MEMBER ONLINE NORMAL TEST_0001 FG1 /dev/asm_1g_2 REGULAR
4 2 CACHED MEMBER ONLINE NORMAL TEST_0002 FG1 /dev/asm_1g_3 REGULAR
4 3 CACHED MEMBER ONLINE NORMAL TEST_0003 FG2 /dev/asm_1g_4 REGULAR
4 4 CACHED MEMBER ONLINE NORMAL TEST_0004 FG2 /dev/asm_1g_5 REGULAR
4 5 CACHED MEMBER ONLINE NORMAL TEST_0005 FG2 /dev/asm_1g_6 REGULAR
6 rows selected.
SQL> select name,state,total_mb/1024 total_gb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where name='TEST';
NAME STATE TOTAL_GB FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
---------- ----------- ---------- ---------- ----------------------- --------------
TEST MOUNTED 6 5968 1024 2472
REQUIRED_MIRROR_FREE_MB=1g
场景四:3个失败组,每个fg一个磁盘,看大小
create diskgroup test normal redundancy failgroup fg1 disk '/dev/asm_1g_1' size 1g failgroup fg2 disk '/dev/asm_1g_2' size 1g failgroup fg3 disk '/dev/asm_1g_3' size 1g ATTRIBUTE 'au_size'='4M';
SQL> select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,NAME,FAILGROUP,PATH,FAILGROUP_TYPE from v$asm_disk order by path;
GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE NAME FAILGROUP PATH FAILGRO
------------ ----------- ------- ------------ ------- -------- ---------- ---------- -------------------- -------
4 0 CACHED MEMBER ONLINE NORMAL TEST_0000 FG1 /dev/asm_1g_1 REGULAR
4 1 CACHED MEMBER ONLINE NORMAL TEST_0001 FG2 /dev/asm_1g_2 REGULAR
4 2 CACHED MEMBER ONLINE NORMAL TEST_0002 FG3 /dev/asm_1g_3 REGULAR
SQL> select name,state,total_mb/1024 total_gb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where name='TEST';
NAME STATE TOTAL_GB FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
---------- ----------- ---------- ---------- ----------------------- --------------
TEST MOUNTED 3 2856 1024 916
REQUIRED_MIRROR_FREE_MB=1g
场景五:3个失败组,每个fg 二个磁盘,看大小
create diskgroup test normal redundancy
failgroup fg1 disk '/dev/asm_1g_1' size 1g
failgroup fg1 disk '/dev/asm_1g_2' size 1g
failgroup fg2 disk '/dev/asm_1g_3' size 1g
failgroup fg2 disk '/dev/asm_1g_4' size 1g
failgroup fg3 disk '/dev/asm_1g_5' size 1g
failgroup fg3 disk '/dev/asm_1g_6' size 1g
ATTRIBUTE 'au_size'='4M';
SQL> select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,NAME,FAILGROUP,PATH,FAILGROUP_TYPE from v$asm_disk where name like 'TEST%' order by path;
GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE NAME FAILGROUP PATH FAILGRO
------------ ----------- ------- ------------ ------- -------- ---------- ---------- -------------------- -------
4 0 CACHED MEMBER ONLINE NORMAL TEST_0000 FG1 /dev/asm_1g_1 REGULAR
4 1 CACHED MEMBER ONLINE NORMAL TEST_0001 FG1 /dev/asm_1g_2 REGULAR
4 2 CACHED MEMBER ONLINE NORMAL TEST_0002 FG2 /dev/asm_1g_3 REGULAR
4 3 CACHED MEMBER ONLINE NORMAL TEST_0003 FG2 /dev/asm_1g_4 REGULAR
4 4 CACHED MEMBER ONLINE NORMAL TEST_0004 FG3 /dev/asm_1g_5 REGULAR
4 5 CACHED MEMBER ONLINE NORMAL TEST_0005 FG3 /dev/asm_1g_6 REGULAR
6 rows selected.
SQL> select name,state,total_mb/1024 total_gb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where name='TEST';
NAME STATE TOTAL_GB FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
---------- ----------- ---------- ---------- ----------------------- --------------
TEST MOUNTED 6 5904 2048 1928
REQUIRED_MIRROR_FREE_MB=2g
场景六:3个失败组,每个fg 三个磁盘,看大小
create diskgroup test normal redundancy
failgroup fg1 disk '/dev/asm_1g_1' size 1g
failgroup fg1 disk '/dev/asm_1g_2' size 1g
failgroup fg1 disk '/dev/asm_1g_3' size 1g
failgroup fg2 disk '/dev/asm_1g_4' size 1g
failgroup fg2 disk '/dev/asm_1g_5' size 1g
failgroup fg2 disk '/dev/asm_1g_6' size 1g
failgroup fg3 disk '/dev/asm_1g_7' size 1g
failgroup fg3 disk '/dev/asm_1g_8' size 1g
failgroup fg3 disk '/dev/asm_1g_9' size 1g
ATTRIBUTE 'au_size'='4M';
SQL> select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,NAME,FAILGROUP,PATH,FAILGROUP_TYPE from v$asm_disk where name like 'TEST%' order by path;
GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE NAME FAILGROUP PATH FAILGRO
------------ ----------- ------- ------------ ------- -------- -------------------- ---------- -------------------- -------
4 0 CACHED MEMBER ONLINE NORMAL TEST_0000 FG1 /dev/asm_1g_1 REGULAR
4 1 CACHED MEMBER ONLINE NORMAL TEST_0001 FG1 /dev/asm_1g_2 REGULAR
4 2 CACHED MEMBER ONLINE NORMAL TEST_0002 FG1 /dev/asm_1g_3 REGULAR
4 3 CACHED MEMBER ONLINE NORMAL TEST_0003 FG2 /dev/asm_1g_4 REGULAR
4 4 CACHED MEMBER ONLINE NORMAL TEST_0004 FG2 /dev/asm_1g_5 REGULAR
4 5 CACHED MEMBER ONLINE NORMAL TEST_0005 FG2 /dev/asm_1g_6 REGULAR
4 6 CACHED MEMBER ONLINE NORMAL TEST_0006 FG3 /dev/asm_1g_7 REGULAR
4 7 CACHED MEMBER ONLINE NORMAL TEST_0007 FG3 /dev/asm_1g_8 REGULAR
4 8 CACHED MEMBER ONLINE NORMAL TEST_0008 FG3 /dev/asm_1g_9 REGULAR
9 rows selected.
SQL> select name,state,total_mb/1024 total_gb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where name='TEST';
NAME STATE TOTAL_GB FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
-------------------- ----------- ---------- ---------- ----------------------- --------------
TEST MOUNTED 9 8952 3072 2940
REQUIRED_MIRROR_FREE_MB=3g
总结
normal冗余下
当失败组大于2的时候,比如3个失败组,REQUIRED_MIRROR_FREE_MB
大小为其中一个失败组的大小
当失败组小于3的时候,比如2个失败组,REQUIRED_MIRROR_FREE_MB
大小为失败组之中一个asm磁盘的大小