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.