You are here

ASM RAC : finalisation ASM

Dans cet article nous allons configurer nos "disques" de manière "professionnelle", en ligne de commande quoi, afin d'avoir une installation digne d'une machine de production (à la performance des disques près). Lorsque cette partie sera réalisée il sera possible d'installer le logiciel et la BDD sur le beau support "physique" que nous aurons préparé.
En plus nous n'avons encore aucun interface graphique capable de nous aider, on va donc procéder "à l'ancienne" avec scripts et ligne de commande ! Oui, c'est comme ça ! De toutes les façons l'interface graphique "asmca" ne permet pas les fantaisies qui vont être réalisées par ces scripts devant vos petits yeux ébahis.
Enfin du sérieux, il faut se connecter en ssh sur le user "oracle" (un serveur n'a pas droit à un interface graphique !). D'abord mettre en place l'environnement "qui va bien" :
. oraenv
ORACLE_SID = [oracle] ? +ASM1
The Oracle base for ORACLE_HOME=/opt/11.2.0/grid is /opt/oracle
D'anord un petit tour dans le disque "DATA" déjà créé, pour cela nous allons utiliser un "shell" spécifique qui permet de faire des tas de choses, par exemple un "ls" :
asmcmd
ASMCMD> ls -al
State    Type    Rebal  Name
MOUNTED  EXTERN  N      DATA/
ASMCMD> cd DATA
ASMCMD> ls -al
Type  Redund  Striped  Time             Sys  Name
                                        Y    k2000-o-cluster/

ASMCMD> exit

Cela nous permet de vérifier que notre groupe "DATA" est bien là et qu'il contient un répertoire où sont déposés les paramètres de notre "cluster".
Vérifions maintenant l'accès par SQLPLUS (oui!) :
Attention avec "sysasm" on est "Dieu" et on peut tout faire (comme avec "sysdba" dans la base de données).

sqlplus / as sysasm
SQL*Plus: Release 11.2.0.1.0 Production on Thu Feb 25 20:12:26 2010
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options
SQL> select host_name,instance_name from v$instance;
HOST_NAME
----------------------------------------------------------------
INSTANCE_NAME
----------------
k2000-ora65.domaine.net
+ASM1
SQL> select value from v$parameter where name = 'asm_diskstring';
VALUE
--------------------------------------------------------------------------------
/dev/xvd*1
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

De la même façon exécutez le script "LS_DISK.sql" fourni en piece attachée :

sqlplus / as sysasm
SQL*Plus: Release 11.2.0.1.0 Production on Fri Feb 26 13:27:54 2010
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options
SQL> start LS_DISK
DISK_NUMBER GROUP_NUMBER NAME          PATH       FAILGROUP    LABEL         STATE    MOUNT_S MODE_ST HEADER_STATU
----------- ------------ ------------ ------------ ------------ ------------ -------- ------- ------- ------------
      0           0          /dev/xvde1                 NORMAL   CLOSED  ONLINE  CANDIDATE
      1           0          /dev/xvdd1                 NORMAL   CLOSED  ONLINE  CANDIDATE
      2           0          /dev/xvdi1                 NORMAL   CLOSED  ONLINE  CANDIDATE
      3           0          /dev/xvdh1                 NORMAL   CLOSED  ONLINE  CANDIDATE
      4           0          /dev/xvdb1                 NORMAL   CLOSED  ONLINE  CANDIDATE
      5           0          /dev/xvdf1                 NORMAL   CLOSED  ONLINE  CANDIDATE
      6           0          /dev/xvdg1                 NORMAL   CLOSED  ONLINE  CANDIDATE
      7           0          /dev/xvdc1                 NORMAL   CLOSED  ONLINE  CANDIDATE
      0           1 DATA_0000 /dev/xvda1   DATA_0000    NORMAL   CACHED  ONLINE  MEMBER
9 rows selected.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

Ce script doit vous donner la liste des disques en état "CANDIDATE", donc bien reconnus par ASM et aptes à devenir membre d'un groupe.
Si vous ne voyez pas tous vos disques peut-être la fameuse "asm_diskstring" est incorrecte, pour vérifier executez un "select name from v$parameter where name = 'asm_diskstring';" si la valeur retournée est incorrecte, rien n'est perdu il suffit de passer la commande suivante sous sqlplus:
alter system set asm_diskstring = '/dev/xvd*' scope=both;
et de réessayer la recherche des disques candidats (fichier LS_DISK.sql).
OK, ça baigne, notre instance est OK et notre "asm_diskstring" est bien positionnée. Nous allons pouvoir maintenant créer le premier DISK GROUP destiné à notre base de données, ce premier DISK est baptisé "DONNEES" et est créé par le script stocké dans le fichier "CRE_DISK_DONN.sql (original non ?).

sqlplus / as sysasm
SQL*Plus: Release 11.2.0.1.0 Production on Fri Feb 26 13:35:10 2010
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options
SQL> start CRE_DISK_DONN.sql
SQL> set feedback on
SQL> spool DONNEES.LOG
SQL> /* */
SQL> CREATE DISKGROUP donnees NORMAL REDUNDANCY
  2           FAILGROUP FG1 DISK '/dev/xvdb1','/dev/xvdc1'
  3           FAILGROUP FG2 DISK '/dev/xvdd1','/dev/xvde1' ;

Diskgroup created.

SQL> spool off
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

Notre premier groupe de disques est créé, un petit coup de LS_DISK nous donne :

DISK_NUMBER GROUP_NUMBER NAME          PATH       FAILGROUP    LABEL         STATE    MOUNT_S MODE_ST HEADER_STATU
----------- ------------ ------------ ------------ ------------ ------------ -------- ------- ------- ------------
      2           0              /dev/xvdi1              NORMAL   CLOSED  ONLINE  CANDIDATE
      3           0              /dev/xvdh1              NORMAL   CLOSED  ONLINE  CANDIDATE
      5           0              /dev/xvdf1              NORMAL   CLOSED  ONLINE  CANDIDATE
      6           0              /dev/xvdg1              NORMAL   CLOSED  ONLINE  CANDIDATE
      3           2 DONNEES_0003 /dev/xvde1   FG2        NORMAL   CACHED  ONLINE  MEMBER
      2           2 DONNEES_0002 /dev/xvdd1   FG2        NORMAL   CACHED  ONLINE  MEMBER
      0           2 DONNEES_0000 /dev/xvdb1   FG1        NORMAL   CACHED  ONLINE  MEMBER
      1           2 DONNEES_0001 /dev/xvdc1   FG1        NORMAL   CACHED  ONLINE  MEMBER
      0           1 DATA_0000    /dev/xvda1   DATA_0000  NORMAL   CACHED  ONLINE  MEMBER

9 rows selected.


Procédons maintenant à la création du deuxième groupe de disques baptise "SAUVE" à l'aide du script
"CRE_DISK_SAUVE.sql" :

SQL> start CRE_DISK_SAUVE.sql
SQL> CREATE DISKGROUP SAUVE NORMAL REDUNDANCY
  2           FAILGROUP FG1 DISK '/dev/xvdf1','/dev/xvdg1'
  3           FAILGROUP FG2 DISK '/dev/xvdh1','/dev/xvdi1' ;
Diskgroup created.
SQL> spool off

Nous disposons maintenant de deux groupes de disque à toute épreuve ! En plus chez moi une partie des disques sont des partitions d'une autre machine accédées en iSCSI sur des disques en miroir ! Le grand luxe quoi! Listons une dernière fois nos disques avec LS_DISK :

SQL> @LS_DISK
DISK_NUMBER GROUP_NUMBER NAME          PATH  FAILGROUP    LABEL    STATE  MOUNT_S MODE_ST HEADER_STATU
----------- ------------ ------------ ------------ ------------ ------------ -------- ------- ------- ------------
      3           2 DONNEES_0003 /dev/xvde1   FG2         NORMAL   CACHED  ONLINE  MEMBER
      2           2 DONNEES_0002 /dev/xvdd1   FG2         NORMAL   CACHED  ONLINE  MEMBER
      3           3 SAUVE_0003   /dev/xvdi1   FG2         NORMAL   CACHED  ONLINE  MEMBER
      2           3 SAUVE_0002   /dev/xvdh1   FG2         NORMAL   CACHED  ONLINE  MEMBER
      0           2 DONNEES_0000 /dev/xvdb1   FG1         NORMAL   CACHED  ONLINE  MEMBER
      0           3 SAUVE_0000   /dev/xvdf1   FG1         NORMAL   CACHED  ONLINE  MEMBER
      1           3 SAUVE_0001   /dev/xvdg1   FG1         NORMAL   CACHED  ONLINE  MEMBER
      1           2 DONNEES_0001 /dev/xvdc1   FG1         NORMAL   CACHED  ONLINE  MEMBER

      0           1 DATA_0000    /dev/xvda1   DATA_0000   NORMAL   CACHED  ONLINE  MEMBER

9 rows selected.

C'est tout pour cette partie sans aucune image ni besoin de souris. On va avoir une belle machine pour y installer nos petites données de test.