Comment augmenter un disque groupe sur un RAC ASM

Samuel Chevalley
30 janvier 2017

Vérification qu’il s’agit d’un RAC

Se connecter sur l’instance et faire un « select INSTANCE_NAME,HOST_NAME from gv$instance » :

oracle@TEST:INSTANCE_1:/home/oracle
$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Mer. Janv. 25 14:37:09 2017

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> select INSTANCE_NAME,HOST_NAME from gv$instance;

INSTANCE_NAME
----------------
HOST_NAME
----------------------------------------------------------------
INSTANCE_1
HOST_TEST 

INSTANCE_2
HOST_TEST_2  #on est bien sur un RAC

Augmentation du disque groupe

1- Présenter la même LUN sur les 2 serveurs du RAC

2- Nommer la LUN dans le multipath (ici DGDATA_TEST2_LUN_2 qui fait 30Go)

multipaths {
         multipath {
                wwid 364580e8013307f085020307f5404y2i7
                alias DGDATA_TEST2_LUN_1
        }
        multipath {
                wwid 360080e8013307f085020307f54003oo7
                alias DGDATA_TEST2_LUN_2
        }
}

Puis « multipath -r » (pour faire un reload du service multipath).

Vérifier si c’est OK :

root@TEST: multipath -l | grep DGDATA_TEST2_LUN_2
DGDATA_TEST2_LUN_2 (360080e8013307f085020307f54003oo7) dm-12 HITACHI,OPEN-V

3- Vérifier que « DGDATA_TEST2_LUN_2 » est bien présente dans « /dev/oracle »

root@TEST: ls /dev/oracle | grep DGDATA_TEST2_LUN_2
brw-r----- 1 oracle dba 253, 53 Jan 25 14:52 DGDATA_TEST2_LUN_2

Si non présent, il faut relancer udev.

4- Se connecter à l’instance ASM et faire un « lsdg » pour voir la liste des disque groupe :

oracle@TEST:+ASM1:/home/oracle
$ asmcmd
ASMCMD> lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name

MOUNTED  EXTERN  N         512   4096  1048576     61440     2654         0          2654            0               N        DGDATA_TEST1/
MOUNTED  EXTERN  N         512   4096  1048576     61440       31                         0                        31                           0                               N             DGDATA_TEST2/

Nous voulons par exemple étendre le DG DGDATA_TEST2 car il reste 31Mb.

Avec la commande « lsdsk -k -G DGDATA_TEST2 » nous pouvons voir les disques existants sur ce DG :

ASMCMD> lsdsk -k -G DGDATA_TEST2
Total_MB  Free_MB  OS_MB  Name             Failgroup        Failgroup_Type  Library  Label  UDID  Product  Redund   Path
   61440        31  61440 DGDATA_TEST2_LUN_1 DGDATA_TEST2_DLUN_1  REGULAR         System                         UNKNOWN  /dev/oracle/DGDATA_TEST2_LUN1

Le disque présent (DGDATA_TEST2_LUN_1) fait donc 60Go et il reste bien 31Mo de libre.

On peut donc maintenant ajouter notre dique « DGDATA_TEST2_LUN_2 » au DG avec la commande « alter diskgroup DGDATA_TEST2 add disk ‘/dev/oracle/DGDATA_TEST2_LUN_2’; » en se connectant en « sysasm » :

oracle@TEST:+ASM1:/home/oracle
$ sqlplus / as sysasm
SQL> alter diskgroup DGDATA_TEST2 add disk '/dev/oracle/DGDATA_TEST2_LUN_2';

Diskgroup altered.

Vérification :

ASMCMD> lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name

MOUNTED  EXTERN  N         512   4096  1048576     61440     2654                0            2654              0             N  DGDATA_TEST1/
MOUNTED  EXTERN  N         512   4096  1048576     61440    30031                0           30031              0             N  DGDATA_TEST2/


ASMCMD> lsdsk -k -G DGDATA_TEST2
Total_MB  Free_MB  OS_MB  Name             Failgroup        Failgroup_Type  Library  Label  UDID  Product  Redund   Path
   61440    31     61440 DGDATA_TEST2_LUN_1 DGDATA_TEST2_DLUN_1  REGULAR         System                         UNKNOWN  /dev/oracle/DGDATA_TEST2_LUN1
   30000    30000  61440 DGDATA_TEST2_LUN_2 DGDATA_TEST2_DLUN_2  REGULAR         System                         UNKNOWN  /dev/oracle/DGDATA_TEST2_LUN2