ASMのリバランス機能を確認してみましょう。

[oracle@DB01 ~]$ sqlplus / as sysdba

SQL> drop tablespace TBS2 including contents and datafiles;

表領域が削除されました。

[grid@DB01 ~]$ sqlplus / as sysasm

SQL> drop diskgroup DG_HIGH;

Diskgroup dropped.

まずは既に作成してあった高冗長性のASMディスクグループを削除します。
ディスクグループに含まれている表領域も事前に削除しておきます。

set linesize 150 pages 500
col NAME for a12
col HEADER_STATUS for a14
col PATH for a40
select GROUP_NUMBER, DISK_NUMBER, NAME, HEADER_STATUS, PATH
from V$ASM_DISK
where GROUP_NUMBER = 0;

GROUP_NUMBER DISK_NUMBER NAME         HEADER_STATUS  PATH
------------ ----------- ------------ -------------- ----------------------------------------
           0           0              FORMER         /dev/sdg1
           0           3              FORMER         /dev/sdf1
           0           2              FORMER         /dev/sdh1


削除したディスクグループに含まれるディスクのHEADER_STATUSがFORMERに変わりました。
以前ディスクグループに含まれていた名残です。

create diskgroup DG_NORMAL
  normal redundancy
    regular failgroup FG1 disk '/dev/sdf1' name DG_NORMAL_DISK1
    regular failgroup FG2 disk '/dev/sdg1' name DG_NORMAL_DISK2
    regular failgroup FG3 disk '/dev/sdh1' name DG_NORMAL_DISK3
  attribute
    'COMPATIBLE.ASM'   = '11.2.0.2',
    'COMPATIBLE.RDBMS' = '11.2';

Diskgroup created.


そのディスクを利用して新しく標準冗長性のディスクグループを作成します。

set lines 110 pages 500
col NAME for a10
col STATE for a10
col TYPE for a8
col COMPATIBILITY for a15
col DATABASE_COMPATIBILITY for a15
select GROUP_NUMBER,
       NAME,
       TYPE,
       TOTAL_MB,
       FREE_MB,
       HOT_USED_MB + COLD_USED_MB "USED_MB",
       REQUIRED_MIRROR_FREE_MB,
       USABLE_FILE_MB
  from V$ASM_DISKGROUP
 where NAME = 'DG_NORMAL' ;

GROUP_NUMBER NAME       TYPE       TOTAL_MB    FREE_MB    USED_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ---------- -------- ---------- ---------- ---------- ----------------------- --------------
           2 DG_NORMAL  NORMAL         3069       2910        159                    1023            943


作成したディスクグループのグループナンバーを確認します。

set lines 110 pages 500
col NAME for a15
col HEADER_STATUS for a14
col PATH for a12
col FAILGROUP for a16
select GROUP_NUMBER, DISK_NUMBER, HEADER_STATUS, PATH, NAME, TOTAL_MB, FREE_MB
  from V$ASM_DISK
 where GROUP_NUMBER = 2
 order by 2 ;

GROUP_NUMBER DISK_NUMBER HEADER_STATUS  PATH         NAME              TOTAL_MB    FREE_MB
------------ ----------- -------------- ------------ --------------- ---------- ----------
           2           0 MEMBER         /dev/sdf1    DG_NORMAL_DISK1       1023        963
           2           1 MEMBER         /dev/sdg1    DG_NORMAL_DISK2       1023        963
           2           2 MEMBER         /dev/sdh1    DG_NORMAL_DISK3       1023        963


確認したグループナンバーをキーにして、ディスクグループに含まれる各ディスクの利用容量を確認します。

create bigfile tablespace TBS3
datafile '+DG_NORMAL(DATAFILE)' size 1200M;


作成したディスクグループに新しく1.2GBの表領域を作成します。

set lines 110 pages 500
col NAME for a15
col HEADER_STATUS for a14
col PATH for a12
col FAILGROUP for a16
select GROUP_NUMBER, DISK_NUMBER, HEADER_STATUS, PATH, NAME, TOTAL_MB, FREE_MB
  from V$ASM_DISK
 where GROUP_NUMBER = 2
 order by 2 ;

GROUP_NUMBER DISK_NUMBER HEADER_STATUS  PATH         NAME              TOTAL_MB    FREE_MB
------------ ----------- -------------- ------------ --------------- ---------- ----------
           2           0 MEMBER         /dev/sdf1    DG_NORMAL_DISK1       1023        161
           2           1 MEMBER         /dev/sdg1    DG_NORMAL_DISK2       1023        161
           2           2 MEMBER         /dev/sdh1    DG_NORMAL_DISK3       1023        162


再度、ディスクの空き容量を確認してみると、均等に減っていることがわかります。
これがリバランスです。
次回はここに新しくディスクを追加したときのリバランスを確認してみます。