查看: 4679|回复: 10

v$asm_diskgroup里困惑的字段required_mirror_free_mb

[复制链接]
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
跳转到指定楼层
1#
发表于 2011-2-11 22:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SQL> select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP            PATH
---------- ---------- -------------------- -------------------- ----------------------------------------
      1024        730 DISK2                DG1_0001             G:\ASMDISK\DISK2
      2048       1494 DG1_0002             DG1_0002             G:\ASMDISK\DISK1
       512        365 DISK12               DG1_0002             G:\ASMDISK\DISK12
      1024        747 DISK11               DG1_0003             G:\ASMDISK\DISK11
      2048       1518 DG1_0003             DG1_0003             G:\ASMDISK\DISK14
       512        362 DG1_0004             DG1_0004             G:\ASMDISK\DISK13

已选择6行。

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE                   TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
-------------------- ---------- ---------- ----------------------- --------------
NORMAL                     7168       5216                    3072           1072

SQL> alter diskgroup dg1 add failgroup DG1_0005 disk 'g:\asmdisk\disk15' name DISK15;

磁盘组已变更。

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE                   TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
-------------------- ---------- ---------- ----------------------- --------------
NORMAL                    10668       8714                    3500           2607

SQL> alter diskgroup dg1 add failgroup DG1_0006 disk 'g:\asmdisk\disk16' name DISK16;

磁盘组已变更。

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE                   TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
-------------------- ---------- ---------- ----------------------- --------------
NORMAL                    14168      12212                    3500           4356

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE                   TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
-------------------- ---------- ---------- ----------------------- --------------
NORMAL                    14168      12212                    3500           4356

SQL> alter diskgroup dg1 rebalance;

磁盘组已变更。

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE                   TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
-------------------- ---------- ---------- ----------------------- --------------
NORMAL                    14168      12212                    3500           4356

SQL> select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP            PATH
---------- ---------- -------------------- -------------------- ----------------------------------------
      1024        879 DISK2                DG1_0001             G:\ASMDISK\DISK2
      2048       1765 DG1_0002             DG1_0002             G:\ASMDISK\DISK1
       512        437 DISK12               DG1_0002             G:\ASMDISK\DISK12
      1024        880 DISK11               DG1_0003             G:\ASMDISK\DISK11
      2048       1766 DG1_0003             DG1_0003             G:\ASMDISK\DISK14
       512        437 DG1_0004             DG1_0004             G:\ASMDISK\DISK13
      3500       3025 DISK15               DG1_0005             G:\ASMDISK\DISK15
      3500       3023 DISK16               DG1_0006             G:\ASMDISK\DISK16

已选择8行。

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE                   TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
-------------------- ---------- ---------- ----------------------- --------------
NORMAL                    14168      12212                    3500           4356

SQL>
我不知道oracle是如何计算REQUIRED_MIRROR_FREE_MB 的值的,如何才能使REQUIRED_MIRROR_FREE_MB 变成0,diskgroup 1目前可用空间是12212 ,但是由于oracle考虑了diskgroup 组里的disk failure之后的mirror redundancy情况,所以通过dbca使用diskgroup 1时真实的可用空间只有 4356

4356=(12212 - 3500)/2
论坛徽章:
51
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:22铁扇公主
日期:2012-02-21 15:03:13最佳人气徽章
日期:2012-03-13 17:39:18ITPUB季度 技术新星
日期:2012-05-22 15:10:11ITPUB 11周年纪念徽章
日期:2012-10-09 18:13:332013年新春福章
日期:2013-02-25 14:51:24ITPUB社区12周年站庆徽章
日期:2013-08-12 09:34:36itpub13周年纪念徽章
日期:2014-09-28 10:55:55
2#
发表于 2011-2-12 09:35 | 只看该作者
变成0可以用 external redundancy
但就没有failgroup了~

使用道具 举报

回复
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
3#
 楼主| 发表于 2011-2-12 09:37 | 只看该作者
原帖由 iori809 于 2011-2-12 09:35 发表
变成0可以用 external redundancy
但就没有failgroup了~


不会的

SQL> select name,type,required_mirror_free_mb from v$asm_diskgroup;

NAME                 TYPE         REQUIRED_MIRROR_FREE_MB
-------------------- ------------ -----------------------
DG1                  NORMAL                          3500
DG2                  EXTERN                             0
DG3                  EXTERN                             0
DG4                  NORMAL                             0

SQL>

使用道具 举报

回复
论坛徽章:
51
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:22铁扇公主
日期:2012-02-21 15:03:13最佳人气徽章
日期:2012-03-13 17:39:18ITPUB季度 技术新星
日期:2012-05-22 15:10:11ITPUB 11周年纪念徽章
日期:2012-10-09 18:13:332013年新春福章
日期:2013-02-25 14:51:24ITPUB社区12周年站庆徽章
日期:2013-08-12 09:34:36itpub13周年纪念徽章
日期:2014-09-28 10:55:55
4#
发表于 2011-2-12 09:42 | 只看该作者
那个DG4是怎么回事?我们的库是external的呵呵~
学习了~

使用道具 举报

回复
论坛徽章:
112
技术图书徽章
日期:2017-07-03 09:38:11itpub13周年纪念徽章
日期:2014-09-30 11:02:00itpub13周年纪念徽章
日期:2014-09-28 10:55:552014年世界杯参赛球队: 比利时
日期:2014-06-23 10:15:51优秀写手
日期:2014-03-11 06:00:03马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02夏利
日期:2014-01-26 14:29:27雪铁龙
日期:2013-12-25 10:41:10林肯
日期:2013-11-08 09:17:14
5#
发表于 2011-2-12 09:59 | 只看该作者
你创建一个磁盘组有两个FAILGROUP ,每个FAILGROUP 有一个disk,REQUIRED_MIRROR_FREE_MB就会是0.

使用道具 举报

回复
论坛徽章:
51
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:22铁扇公主
日期:2012-02-21 15:03:13最佳人气徽章
日期:2012-03-13 17:39:18ITPUB季度 技术新星
日期:2012-05-22 15:10:11ITPUB 11周年纪念徽章
日期:2012-10-09 18:13:332013年新春福章
日期:2013-02-25 14:51:24ITPUB社区12周年站庆徽章
日期:2013-08-12 09:34:36itpub13周年纪念徽章
日期:2014-09-28 10:55:55
6#
发表于 2011-2-12 10:03 | 只看该作者
谢谢~

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
20
祖国60周年纪念徽章
日期:2009-10-09 08:28:00数据库板块每日发贴之星
日期:2011-02-20 01:01:01ITPUB季度 技术新星
日期:2011-04-02 10:31:09ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042012新春纪念徽章
日期:2012-01-04 11:54:26玉石琵琶
日期:2012-02-21 15:04:38最佳人气徽章
日期:2012-03-13 17:39:18ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:192013年新春福章
日期:2013-02-25 14:51:242011新春纪念徽章
日期:2011-02-18 11:43:33
7#
发表于 2011-2-12 11:19 | 只看该作者
REQUIRED_MIRROR_FREE_MB value is not reserved space for the fail-over, its an estimated required space to restore the full redundancy,  this space needed to make the diskgroup working with NORMAL redundancy after losing one or more disks, it indicates the amount of space that must be available in the disk group to restore full redundancy after the worst failure that can be tolerated by the disk group

使用道具 举报

回复
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
8#
 楼主| 发表于 2011-2-12 11:53 | 只看该作者
SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      1024        879 DISK2                DG1_0001   G:\ASMDISK\DISK2
      2048       1765 DG1_0002             DG1_0002   G:\ASMDISK\DISK1
       512        437 DISK12               DG1_0002   G:\ASMDISK\DISK12
      1024        880 DISK11               DG1_0003   G:\ASMDISK\DISK11
      2048       1766 DG1_0003             DG1_0003   G:\ASMDISK\DISK14
       512        437 DG1_0004             DG1_0004   G:\ASMDISK\DISK13
      3500       3025 DISK15               DG1_0005   G:\ASMDISK\DISK15
      3500       3023 DISK16               DG1_0006   G:\ASMDISK\DISK16

已选择8行。

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL            14168      12212                    3500           4356

--==================================================
--此处省略大约78个字...
--把disk都删除只剩下disk15和disk16,这2块disk都是3500m,而且分别在2个failgroup里,目前required_mirror_free_mb变成了0
--==================================================
SQL> alter diskgroup dg1 drop disk DG1_0003;

磁盘组已变更。

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      3500       2572 DISK15               DG1_0005   G:\ASMDISK\DISK15
      3500       2572 DISK16               DG1_0006   G:\ASMDISK\DISK16

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             7000       5144                       0           2572
--================================
--下面增加2块1g的disk继续测试,3500的disk太大了,rebalance有些慢
SQL> alter diskgroup dg1 add failgroup DG1_0008 disk 'G:\asmdisk\DISK20' name DISK20;

磁盘组已变更。

SQL>
SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      3500       2661 DISK15               DG1_0005   G:\ASMDISK\DISK15
      3500       2661 DISK16               DG1_0006   G:\ASMDISK\DISK16
      1024        756 DISK20               DG1_0008   G:\ASMDISK\DISK20

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             8024       6078                    3500           1289

SQL>
SQL> alter diskgroup dg1 add failgroup DG1_0009 disk 'G:\asmdisk\DISK22' name DISK22;

Diskgroup altered.

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      3500       2751 DISK15               DG1_0005   G:\ASMDISK\DISK15
      3500       2751 DISK16               DG1_0006   G:\ASMDISK\DISK16
      1024        798 DISK20               DG1_0008   G:\ASMDISK\DISK20
      1024        800 DISK22               DG1_0009   G:\ASMDISK\DISK22

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             9048       7100                    3500           1800

SQL> alter diskgroup dg1 drop disk DISK16;

Diskgroup altered.

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      3500       2572 DISK15               DG1_0005   G:\ASMDISK\DISK15
      1024        515 DISK20               DG1_0008   G:\ASMDISK\DISK20
      1024        515 DISK22               DG1_0009   G:\ASMDISK\DISK22

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             5548       3602                    3500             51

SQL>
SQL> alter diskgroup dg1 drop disk DISK15;

Diskgroup altered.

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      1024         96 DISK20               DG1_0008   G:\ASMDISK\DISK20
      1024         96 DISK22               DG1_0009   G:\ASMDISK\DISK22

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             2048        192                       0             96

SQL>
--==================================
上面查询结果已经显示目前有2个failgroup,里面分别有1块大小为1g的disk,目前REQUIRED_MIRROR_FREE_MB为0,
否则REQUIRED_MIRROR_FREE_MB的值就是failgroup里disk总和最大的那个值...有些不可思议...
--===================================
SQL> alter diskgroup dg1 add failgroup DG1_00010 disk 'G:\asmdisk\DISK23' name DISK23;

Diskgroup altered.

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      1024        376 DISK23               DG1_00010  G:\ASMDISK\DISK23
      1024        375 DISK20               DG1_0008   G:\ASMDISK\DISK20
      1024        375 DISK22               DG1_0009   G:\ASMDISK\DISK22

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             3072       1126                    1024             51

SQL>
SQL> alter diskgroup dg1 add failgroup DG1_00011 disk 'G:\asmdisk\DISK24' name DISK24;

Diskgroup altered.

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      1024        536 DISK23               DG1_00010  G:\ASMDISK\DISK23
      1024        539 DISK24               DG1_00011  G:\ASMDISK\DISK24
      1024        536 DISK20               DG1_0008   G:\ASMDISK\DISK20
      1024        537 DISK22               DG1_0009   G:\ASMDISK\DISK22

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             4096       2148                    1024            562

SQL>
--=====================================
--上面又增加了2个failgroup,里面分别有1块1g的disk,required_mirror_free_mb依然不为0
--=====================================
SQL> alter diskgroup dg1 drop disk DISK24;

Diskgroup altered.

SQL> alter diskgroup dg1 drop disk DISK23;

Diskgroup altered.

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      1024         96 DISK20               DG1_0008   G:\ASMDISK\DISK20
      1024         96 DISK22               DG1_0009   G:\ASMDISK\DISK22

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             2048        192                       0             96

SQL>
--===================================
SQL> alter diskgroup dg1 add failgroup DG1_0008 disk 'G:\ASMDISK\DISK25' name DISK25;

Diskgroup altered.

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      1024        558 DISK20               DG1_0008   G:\ASMDISK\DISK20
      1024        560 DISK25               DG1_0008   G:\ASMDISK\DISK25
      1024         96 DISK22               DG1_0009   G:\ASMDISK\DISK22

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             3072       1214                    1024             95

SQL>
SQL> alter diskgroup dg1 add failgroup DG1_0009 disk 'G:\ASMDISK\DISK26' name DISK26;

Diskgroup altered.

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      1024        559 DISK25               DG1_0008   G:\ASMDISK\DISK25
      1024        559 DISK20               DG1_0008   G:\ASMDISK\DISK20
      1024        560 DISK26               DG1_0009   G:\ASMDISK\DISK26
      1024        558 DISK22               DG1_0009   G:\ASMDISK\DISK22

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             4096       2236                    1024            606

SQL>
--===================================
--上面分别又往failgroup里添加了2块1g大小的disk,REQUIRED_MIRROR_FREE_MB还是1024,我无法理解oracle
是如何考虑REQUIRED_MIRROR_FREE_MB的?
--====================================
--最后只能得出一个这样的结论:要想不"浪费空间",所谓的不浪费空间就是指REQUIRED_MIRROR_FREE_MB为0,
那么在normal type的redundancy方式下,我们只能做2个failgroup,同时每个failgroup里只能有1块disk;
如果是high type的redundancy方式下,我觉得应该是3个failgroup,同时每个failgroup里只能有1块disk。

使用道具 举报

回复
论坛徽章:
112
技术图书徽章
日期:2017-07-03 09:38:11itpub13周年纪念徽章
日期:2014-09-30 11:02:00itpub13周年纪念徽章
日期:2014-09-28 10:55:552014年世界杯参赛球队: 比利时
日期:2014-06-23 10:15:51优秀写手
日期:2014-03-11 06:00:03马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02夏利
日期:2014-01-26 14:29:27雪铁龙
日期:2013-12-25 10:41:10林肯
日期:2013-11-08 09:17:14
9#
发表于 2011-2-12 12:03 | 只看该作者
原帖由 warehouse 于 2011-2-12 11:53 发表
SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      1024        879 DISK2                DG1_0001   G:\ASMDISK\DISK2
      2048       1765 DG1_0002             DG1_0002   G:\ASMDISK\DISK1
       512        437 DISK12               DG1_0002   G:\ASMDISK\DISK12
      1024        880 DISK11               DG1_0003   G:\ASMDISK\DISK11
      2048       1766 DG1_0003             DG1_0003   G:\ASMDISK\DISK14
       512        437 DG1_0004             DG1_0004   G:\ASMDISK\DISK13
      3500       3025 DISK15               DG1_0005   G:\ASMDISK\DISK15
      3500       3023 DISK16               DG1_0006   G:\ASMDISK\DISK16

已选择8行。

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL            14168      12212                    3500           4356

--==================================================
--此处省略大约78个字...
--把disk都删除只剩下disk15和disk16,这2块disk都是3500m,而且分别在2个failgroup里,目前required_mirror_free_mb变成了0
--==================================================
SQL> alter diskgroup dg1 drop disk DG1_0003;

磁盘组已变更。

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      3500       2572 DISK15               DG1_0005   G:\ASMDISK\DISK15
      3500       2572 DISK16               DG1_0006   G:\ASMDISK\DISK16

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             7000       5144                       0           2572
--================================
--下面增加2块1g的disk继续测试,3500的disk太大了,rebalance有些慢
SQL> alter diskgroup dg1 add failgroup DG1_0008 disk 'G:\asmdisk\DISK20' name DISK20;

磁盘组已变更。

SQL>
SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      3500       2661 DISK15               DG1_0005   G:\ASMDISK\DISK15
      3500       2661 DISK16               DG1_0006   G:\ASMDISK\DISK16
      1024        756 DISK20               DG1_0008   G:\ASMDISK\DISK20

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             8024       6078                    3500           1289

SQL>
SQL> alter diskgroup dg1 add failgroup DG1_0009 disk 'G:\asmdisk\DISK22' name DISK22;

Diskgroup altered.

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      3500       2751 DISK15               DG1_0005   G:\ASMDISK\DISK15
      3500       2751 DISK16               DG1_0006   G:\ASMDISK\DISK16
      1024        798 DISK20               DG1_0008   G:\ASMDISK\DISK20
      1024        800 DISK22               DG1_0009   G:\ASMDISK\DISK22

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             9048       7100                    3500           1800

SQL> alter diskgroup dg1 drop disk DISK16;

Diskgroup altered.

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      3500       2572 DISK15               DG1_0005   G:\ASMDISK\DISK15
      1024        515 DISK20               DG1_0008   G:\ASMDISK\DISK20
      1024        515 DISK22               DG1_0009   G:\ASMDISK\DISK22

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             5548       3602                    3500             51

SQL>
SQL> alter diskgroup dg1 drop disk DISK15;

Diskgroup altered.

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      1024         96 DISK20               DG1_0008   G:\ASMDISK\DISK20
      1024         96 DISK22               DG1_0009   G:\ASMDISK\DISK22

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             2048        192                       0             96

SQL>
--==================================
上面查询结果已经显示目前有2个failgroup,里面分别有1块大小为1g的disk,目前REQUIRED_MIRROR_FREE_MB为0,
否则REQUIRED_MIRROR_FREE_MB的值就是failgroup里disk总和最大的那个值...有些不可思议...
--===================================
SQL> alter diskgroup dg1 add failgroup DG1_00010 disk 'G:\asmdisk\DISK23' name DISK23;

Diskgroup altered.

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      1024        376 DISK23               DG1_00010  G:\ASMDISK\DISK23
      1024        375 DISK20               DG1_0008   G:\ASMDISK\DISK20
      1024        375 DISK22               DG1_0009   G:\ASMDISK\DISK22

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             3072       1126                    1024             51

SQL>
SQL> alter diskgroup dg1 add failgroup DG1_00011 disk 'G:\asmdisk\DISK24' name DISK24;

Diskgroup altered.

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      1024        536 DISK23               DG1_00010  G:\ASMDISK\DISK23
      1024        539 DISK24               DG1_00011  G:\ASMDISK\DISK24
      1024        536 DISK20               DG1_0008   G:\ASMDISK\DISK20
      1024        537 DISK22               DG1_0009   G:\ASMDISK\DISK22

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             4096       2148                    1024            562

SQL>
--=====================================
--上面又增加了2个failgroup,里面分别有1块1g的disk,required_mirror_free_mb依然不为0
--=====================================
SQL> alter diskgroup dg1 drop disk DISK24;

Diskgroup altered.

SQL> alter diskgroup dg1 drop disk DISK23;

Diskgroup altered.

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      1024         96 DISK20               DG1_0008   G:\ASMDISK\DISK20
      1024         96 DISK22               DG1_0009   G:\ASMDISK\DISK22

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             2048        192                       0             96

SQL>
--===================================
SQL> alter diskgroup dg1 add failgroup DG1_0008 disk 'G:\ASMDISK\DISK25' name DISK25;

Diskgroup altered.

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      1024        558 DISK20               DG1_0008   G:\ASMDISK\DISK20
      1024        560 DISK25               DG1_0008   G:\ASMDISK\DISK25
      1024         96 DISK22               DG1_0009   G:\ASMDISK\DISK22

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             3072       1214                    1024             95

SQL>
SQL> alter diskgroup dg1 add failgroup DG1_0009 disk 'G:\ASMDISK\DISK26' name DISK26;

Diskgroup altered.

SQL>  select total_mb,free_mb,name,failgroup,path from v$asm_disk where group_number=1 order by failgroup;

  TOTAL_MB    FREE_MB NAME                 FAILGROUP  PATH
---------- ---------- -------------------- ---------- ------------------------------
      1024        559 DISK25               DG1_0008   G:\ASMDISK\DISK25
      1024        559 DISK20               DG1_0008   G:\ASMDISK\DISK20
      1024        560 DISK26               DG1_0009   G:\ASMDISK\DISK26
      1024        558 DISK22               DG1_0009   G:\ASMDISK\DISK22

SQL> select type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup where group_number=1;

TYPE           TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- ---------- ----------------------- --------------
NORMAL             4096       2236                    1024            606

SQL>
--===================================
--上面分别又往failgroup里添加了2块1g大小的disk,REQUIRED_MIRROR_FREE_MB还是1024,我无法理解oracle
是如何考虑REQUIRED_MIRROR_FREE_MB的?
--====================================
--最后只能得出一个这样的结论:要想不"浪费空间",所谓的不浪费空间就是指REQUIRED_MIRROR_FREE_MB为0,
那么在normal type的redundancy方式下,我们只能做2个failgroup,同时每个failgroup里只能有1块disk;
如果是high type的redundancy方式下,我觉得应该是3个failgroup,同时每个failgroup里只能有1块disk。



你对REQUIRED_MIRROR_FREE_MB的理解有点错误。REQUIRED_MIRROR_FREE_MB的作用相当与hot spare。即在一个disk发生问题的时候保证有足够的空间能够恢复这个disk。所以REQUIRED_MIRROR_FREE_MB的大小必须要能保证所有的disk都能恢复,所有就是最大。

另外没有浪费空间这一说,REQUIRED_MIRROR_FREE_MB的空间也可以使用,这时候就是USABLE_FILE_MB出现负值的时候。

使用道具 举报

回复
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
10#
 楼主| 发表于 2011-2-12 12:55 | 只看该作者
原帖由 guoq.lee 于 2011-2-12 12:03 发表



你对REQUIRED_MIRROR_FREE_MB的理解有点错误。REQUIRED_MIRROR_FREE_MB的作用相当与hot spare。即在一个disk发生问题的时候保证有足够的空间能够恢复这个disk。所以REQUIRED_MIRROR_FREE_MB的大小必须要能保证所有的disk都能恢复,所有就是最大。

另外没有浪费空间这一说,REQUIRED_MIRROR_FREE_MB的空间也可以使用,这时候就是USABLE_FILE_MB出现负值的时候。


可能我的理解确实有些问题,如果failgroup组里的disk都相通,那么REQUIRED_MIRROR_FREE_MB的值就是1块disk的大小,如果failgroup里的disk大小不等,貌似REQUIRED_MIRROR_FREE_MB取的又是所有failgroup组的disk总和的最大值...

我说的“浪费”也是指USABLE_FILE_MB>0的情况下REQUIRED_MIRROR_FREE_MB不可用,等测试下USABLE_FILE_MB<0的情况...

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表