ZhaoYu Acoug DBA Life : ASM磁盘(asm_disk),故障组(failgroup),磁盘组 ...

配置ASM实例
ASM有几个容易让人迷糊的概念,ASM磁盘,故障组,磁盘组, DISK就是我们的磁盘,这个磁盘一般都是做raid以后看到的磁盘,当然在windows下,也可以用perl格式化几个raw的文件来做asm disk,本文就以后者来举例.故障组(FAILGROUP),这个概念是最令人迷惑的,实际上故障组就是ASM DISK的一个逻辑组合,如果不指定哪些ASM DISK属于哪个FAILGROUP,那么可以理解每个ASM DISK都是一个FAILGROUP,磁盘组比较好理解,就是ASM DISK的组合,那么磁盘组和故障组又有什么关系呢,磁盘组有3种镜像的方式:External redundancy, Normal redundancy, High redundancy.这三种镜像的方式,就是针对故障组来说,如果有2个故障组,就是Normal方式镜像,如果有3个故障组就是High方式镜像.

现在让我们体验这3个概念:
我们可以从DBCA看到我们未划入磁盘组的磁盘,在这个之前我们需要到ASM下,设置好ASM磁盘搜索的路径:

Cocuments and Settingsoracle>set ORACLE_SID=+ASM

Cocuments and Settingsoracle>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 – Production on星期二5月27 13:58:22 2008

Copyright (c) 1982, 2007, Oracle.
All Rights Reserved.

连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 – Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> set linesize 120
SQL> show parameter asm_disks
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
asm_diskstring                       string                 d:asm diskDISK_file_disk*
SQL>

或者我们进入DBCA进行修改:
我们可以看到已经有3个磁盘组,我们选择新建->更改搜索路径,改成磁盘所在的路径,这时我们可以看到我们已经出现的候选磁盘
查看ASM磁盘组信息
输入磁盘搜索路径
创建ASM磁盘组
因为这里默认新建磁盘组是常规方式,所以才出现故障组这列.这个时候,我们可以在这个列上为故障组起名字,如果希望把前两个磁盘划到一个故障组,后面的划到一个故障组,就起相同的名字:
定义故障组名称
如果我们不起名字,而选择默认,那么故障组的名字和磁盘的名字将是一样,同时,会形成四个故障组.我们可以看之前,我已经创建的磁盘组,FAILGROUP名字与ASM 磁盘名字一样:

关于ASM故障组可以参考:

    http://www.acougdba.com/?p=57

我们查看这个四个磁盘是什么状态呢:

SQL> select group_number,disk_number,name,failgroup,create_date,path from v$asm_disk;
group   disk
number number NAME                 FAILGROUP            CREATE_DATE         PATH
------ ------ -------------------- -------------------- ------------------- -------------------------------
     0      0                                                               D:ASM DISKDISK_FILE_DISK10
     0      1                                                               D:ASM DISKDISK_FILE_DISK7
     0      2                                                               D:ASM DISKDISK_FILE_DISK8
     0      3                                                               D:ASM DISKDISK_FILE_DISK9
     1      0 DISK_GROUP1_0000     DISK_GROUP1_0000     2007-09-04 22:15:18 D:ASM DISKDISK_FILE_DISK1
     1      1 DISK_GROUP1_0001     DISK_GROUP1_0001     2007-09-04 22:15:18 D:ASM DISKDISK_FILE_DISK2
     2      0 DISK_GROUP2_0000     DISK_GROUP2_0000     2007-09-04 23:00:23 D:ASM DISKDISK_FILE_DISK3
     2      1 DISK_GROUP2_0001     DISK_GROUP2_0001     2007-09-04 23:00:23 D:ASM DISKDISK_FILE_DISK4
     3      0 RMAN_GROUP_0000      RMAN_GROUP_0000      2008-05-20 14:48:25 D:ASM DISKDISK_FILE_DISK5
     3      1 RMAN_GROUP_0001      RMAN_GROUP_0001      2008-05-20 14:48:25 D:ASM DISKDISK_FILE_DISK6
已选择10行。

我们可以看到以前的磁盘的FAILGROUP和他们的磁盘一个名字,而这四个候选的磁盘还没有被划分.
如果这个我们选择磁盘组高冗余的方式,是否可以呢?
选择磁盘组冗余方式

我们可以看到,由于我们把每2个磁盘划为1个故障组,这个时候,不能创建高冗余方式的磁盘组.
那么我们是否可以创建冗余的方式呢,我们可以用DBCA和命令创建
创建磁盘组
我们可以通过EM获取命令,当然也可以直接写:
启动EM
EM里查看磁盘组信息
EM里创建磁盘组

我们可以看到和DBCA的效果是一样的:
这个磁盘名,就是为磁盘设备指定一个别名,我们填写完以后,选择显示SQL
查看创建磁盘组的SQL语句
确认:

SQL> CREATE DISKGROUP DISK_GROUP4 NORMAL REDUNDANCY
FAILGROUP FAILGROUP2 DISK 'D:ASM DISKDISK_FILE_DISK8' NAME DISK8 SIZE 16 M ,'D:ASM DISKDISK_FILE_DISK9' NAME DISK9 SIZE 16 M
FAILGROUP FAILGROUP1 DISK 'D:ASM DISKDISK_FILE_DISK10' NAME DISK10 SIZE 16 M ,'D:ASM DISKDISK_FILE_DISK7' NAME DISK7 SIZE 16 M ;
*
ERROR at line 1:
ORA-15018: diskgroup cannot be created
ORA-15041: diskgroup space exhausted

磁盘组的空间不够大.

我又新建了4个50M的磁盘文件,重新创建磁盘组:

SQL> CREATE DISKGROUP DISK_GROUP4 NORMAL REDUNDANCY FAILGROUP FG2 DISK 'D:ASM DISKDISK_FILE_DISK13' NAME DISK13 SIZE 50 M ,'D:ASM DISKDISK_FILE_DISK14' NAME DISK14 SIZE 50 M FAILGROUP FG1 DISK 'D:ASM DISKDISK_FILE_DISK11' NAME DISK11 SIZE 50 M ,'D:ASM DISKDISK_FILE_DISK12' NAME DISK12 SIZE 50 M ;

磁盘组已创建。

查看磁盘组信息
我们可以看到两个故障组内,磁盘的数据大小一致.
查看磁盘组

ASMCMD> lsdg disk_group4
State    Type    Rebal  Unbal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Name
MOUNTED  NORMAL  N      N         512   4096  1048576       200       94               50              22              0  DISK_GROUP4/

我们看到这个磁盘组还没有存储数据,就占用了106M的空间.

SQL> select group_number,name,type,total_mb,free_mb from v$asm_diskgroup;
GROUP_NUMBER NAME              TYPE           TOTAL_MB    FREE_MB
------------ ----------------- ------------ ---------- ----------
           1 DISK_GROUP1       EXTERN             6144       4790
           2 DISK_GROUP2       EXTERN             6144       4884
           3 RMAN_GROUP        EXTERN             2046        421
           4 DISK_GROUP4       NORMAL              200         94
SQL> select group_number,disk_number,name,failgroup,create_date,path from v$asm_disk where group_number=4;
GROUP_NUMBER DISK_NUMBER NAME              FAILGROUP CREATE_DATE         PATH
------------ ----------- ----------------- --------- ------------------- ----------------------------------------
           4           2 DISK11            FG1       2008-05-27 14:52:26 D:ASM DISKDISK_FILE_DISK11
           4           3 DISK12            FG1       2008-05-27 14:52:26 D:ASM DISKDISK_FILE_DISK12
           4           0 DISK13            FG2       2008-05-27 14:52:26 D:ASM DISKDISK_FILE_DISK13
           4           1 DISK14            FG2       2008-05-27 14:52:26 D:ASM DISKDISK_FILE_DISK14

尝试把之前的四个磁盘加进来:
添加ASM磁盘
因为上面的四个磁盘被格式化过,可能需要强制使用打划,就是加force参数
因为增加了新的磁盘,磁盘组需要重新平衡,加大asm_power_limit参数到3

先尝试不加force

SQL> ALTER DISKGROUP DISK_GROUP4 ADD FAILGROUP FG4 DISK 'D:ASM DISKDISK_FILE_DISK8' NAME DISK8 SIZE 16 M ,'D:ASM DISKDISK_FILE_DISK9' NAME DISK9 SIZE 16 M FAILGROUP FG3 DISK 'D:ASM DISKDISK_FILE_DISK10' NAME DISK10 SIZE 16 M ,'D:ASM DISKDISK_FILE_DISK7' NAME DISK7 SIZE 16 M REBALANCE POWER 1;

磁盘组已变更。

SQL> Select group_number,operation,state,power,actual,sofar,est_work,est_rate,est_minutes from v$asm_operation;
GROUP_NUMBER OPERATION  STATE         POWER     ACTUAL      SOFAR   EST_WORK   EST_RATE EST_MINUTES
------------ ---------- -------- ---------- ---------- ---------- ---------- ---------- -----------
           4 REBAL      RUN               1          1          2         68         60           1
SQL>
SQL> /
未选定行

重新平衡执行完毕.

SQL> select group_number,name,type,total_mb,free_mb from v$asm_diskgroup;
GROUP_NUMBER NAME        TYPE           TOTAL_MB    FREE_MB
------------ ----------- ------------ ---------- ----------
           1 DISK_GROUP1 EXTERN             6144       4790
           2 DISK_GROUP2 EXTERN             6144       4884
           3 RMAN_GROUP  EXTERN             2046        421
           4 DISK_GROUP4 NORMAL              264        101

这个时候,这个磁盘组有3个故障组,FG1 ,FG2 ,FG3
我们是否可以删除其中一个盘:
SQL> alter diskgroup disk_group4 drop disk disk7;
磁盘组已变更。
我们从EM发现这个ASM DISK是HUNG状态,并没有删除
查看状态

SQL> alter diskgroup disk_group4 undrop disks;
磁盘组已变更。
SQL> select group_number,disk_number,name,failgroup,create_date,state from v$asm_disk where group_number=4
GROUP_NUMBER DISK_NUMBER NAME        FAILGR CREATE_DATE         STATE
------------ ----------- ----------- ------ ------------------- ----------------
           4           6 DISK10      FG3    2008-05-27 15:22:16 NORMAL
           4           7 DISK7       FG3    2008-05-27 15:22:16 NORMAL
           4           4 DISK8       FG4    2008-05-27 15:22:16 NORMAL
           4           5 DISK9       FG4    2008-05-27 15:22:16 NORMAL
           4           2 DISK11      FG1    2008-05-27 14:52:26 NORMAL
           4           3 DISK12      FG1    2008-05-27 14:52:26 NORMAL
           4           0 DISK13      FG2    2008-05-27 14:52:26 NORMAL
           4           1 DISK14      FG2    2008-05-27 14:52:26 NORMAL
已选择8行

查看磁盘组
磁盘7,10又是一样的大小

SQL> alter diskgroup disk_group4 add failgroup fg3 disk 'D:ASM DISKDISK_file_disk15' name disk15
  2  drop disk disk7;
磁盘组已变更。
SQL> select group_number,disk_number,name,failgroup,create_date,state from v$asm_disk where group_number=4;
GROUP_NUMBER DISK_NUMBER NAME        FAILGR CREATE_DATE         STATE
------------ ----------- ----------- ------ ------------------- ----------------
           4           6 DISK10      FG3    2008-05-27 15:22:16 NORMAL
           4           7 DISK7       FG3    2008-05-27 15:22:16 DROPPING
           4           4 DISK8       FG4    2008-05-27 15:22:16 NORMAL
           4           5 DISK9       FG4    2008-05-27 15:22:16 NORMAL
           4           2 DISK11      FG1    2008-05-27 14:52:26 NORMAL
           4           3 DISK12      FG1    2008-05-27 14:52:26 NORMAL
           4           0 DISK13      FG2    2008-05-27 14:52:26 NORMAL
           4           1 DISK14      FG2    2008-05-27 14:52:26 NORMAL
           4           8 DISK15      FG3    2008-05-27 15:45:38 NORMAL
已选择9行。
SQL> Select group_number,operation,state,power,actual,sofar,est_work,est_rate,est_minutes from v$asm_operation;
GROUP_NUMBER OPERATION  STATE         POWER     ACTUAL      SOFAR   EST_WORK   EST_RATE EST_MINUTES
------------ ---------- -------- ---------- ---------- ---------- ---------- ---------- -----------
           4 REBAL      RUN               1          1          1         47         60           0
SQL>
SQL> select group_number,disk_number,name,failgroup,create_date,state from v$asm_disk where group_number=4;
GROUP_NUMBER DISK_NUMBER NAME        FAILGR CREATE_DATE         STATE
------------ ----------- ----------- ------ ------------------- ----------------
           4           6 DISK10      FG3    2008-05-27 15:22:16 NORMAL
           4           4 DISK8       FG4    2008-05-27 15:22:16 NORMAL
           4           5 DISK9       FG4    2008-05-27 15:22:16 NORMAL
           4           2 DISK11      FG1    2008-05-27 14:52:26 NORMAL
           4           3 DISK12      FG1    2008-05-27 14:52:26 NORMAL
           4           0 DISK13      FG2    2008-05-27 14:52:26 NORMAL
           4           1 DISK14      FG2    2008-05-27 14:52:26 NORMAL
           4           8 DISK15      FG3    2008-05-27 15:45:38 NORMAL
已选择8行。

这个时候,我们发现DISK7已经被删除,DISK15被加上,因为我们指定两个磁盘做为FAILGROUP,而且是NORMAL方式,至少要2个磁盘,所以我们删除单1磁盘会失败.

郑重声明:资讯 【ZhaoYu Acoug DBA Life : ASM磁盘(asm_disk),故障组(failgroup),磁盘组 ...】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——