Reconstruire le mirroring du RAC après un crash

La sécurité sur un RAC se retrouve aussi sur la configuration RAID mise en place. On parlera dans le monde Oracle de mirroring, c’est à dire de redondance des fichiers sur des disques différents, via ASM. Il s’agit en fait de copie de fichier de la base de données se trouvant sur un disque de secours.
Malgré le niveau de sécurité que vous appliquerez, le risque zéro n’existe pas ! Une coupure réseau, une corruption de vos disques, vous pouvez potentiellement perdre le mirroring de vos disques. C’est le cas que j’ai malheureusement rencontré durant une journée bien pluvieuse et avec de l’orage dans l’air ! Mais pas de panique, il y a toujours une solution, je vous donne ici une méthode pour reconfigurer le mirroring après un crash. La version utilisée ici est une 10.2.0.4 sur une distribution OEL5.

1/ Afficher le status des diskgroup

$ . oraenv
ORACLE_SID = [grid] ? +ASM1
$ sqlplus / as sysasm
SQL> select a.GROUP_NUMBER as GR_NUM, b.NAME AS GR_NAME, b.STATE GR_STATE, b.TYPE as GR_TYPE,
2 b.OFFLINE_DISKS as  GR_OFFDSK, a.DISK_NUMBER as DISK_NUM, a.MOUNT_STATUS, a.MODE_STATUS, a.STATE,
3 a.FAILGROUP, a.LABEL, a.PATH
4 from  v$asm_disk a, v$asm_diskgroup b
5 where a.GROUP_NUMBER=b.GROUP_NUMBER(+)
6 order by 1,2
7 /

2/ faite une sauvegarde full RMAN de la base

RMAN>  run {
allocate channel c1 type disk;
backup database....
}

3/ Arrêter le clusterware sur tous les noeuds

$ srvctl stop db -d NEPTUNE
$ srvctl stop asm -n srvrac10
$ srvctl stop asm -n srvrac11
$ srvctl stop asm -n srvrac12
$ srvctl stop asm -n srvrac13
$ srvctl stop nodeapps -n srvrac10
$ srvctl stop nodeapps -n srvrac11
$ srvctl stop nodeapps -n srvrac12
$ srvctl stop nodeapps -n srvrac13

4/ Reconfigurer asm sur le noeud 1 avec les paramètres du multipathing et les disks à exclure lors du scan des disks

$ vi /etc/sysconfig/oracleasm
ORACLEASM_SCANORDER="vpath"
ORACLEASM_SCANEXCLUDE="sd"

Rescanner les disk ASM sur les noeuds 2, 3 et 4

$ /etc/init.d/oracleasm scandisks

5/ Redémarrer la couche CRS sur le noeud 1

$ srvctl start nodeapps -n srvrac10

6/ Redémarrer ASM sur le noeud1 mais arrêter la base

$ srvctl start asm -n srvrac10
$ . oraenv
ORACLE_SID = [oracle] ? NEPTUNE1
SQL> shutdown immediate

7/ Reconstruisez le mirroring

$ sqlplus / as sysasm
SQL> alter diskgroup DBDATA rebalance;
SQL> alter diskgroup CRS rebalance;
SQL> alter diskgroup FRA rebalance;

8/ Réactiver tous les noeuds

$ srvctl start nodeapps -n srvrac11
$ srvctl start nodeapps -n srvrac12
$ srvctl start nodeapps -n srvrac13
$ srvctl start asm -n srvrac11
$ srvctl start asm -n srvrac12
$ srvctl start asm -n srvrac13

9/ Afficher le status des Diskgroup

$ sqlplus / as sysasm
SQL> select a.GROUP_NUMBER as GR_NUM, b.NAME AS GR_NAME, b.STATE GR_STATE, b.TYPE as GR_TYPE,
2 b.OFFLINE_DISKS as  GR_OFFDSK, a.DISK_NUMBER as DISK_NUM, a.MOUNT_STATUS, a.MODE_STATUS, a.STATE,
3 a.FAILGROUP, a.LABEL, a.PATH
4 from  v$asm_disk a, v$asm_diskgroup b
5 where a.GROUP_NUMBER=b.GROUP_NUMBER(+)
6 order by 1,2
7 /

Vous devriez voir normalement l’état de chaque diskgroup et le statut de la redondance à nouveau opérationnelle.
https://forums.oracle.com/forums/thread.jspa?threadID=2336705
http://docs.oracle.com/cd/B28359_01/server.111/b31107/asmdiskgrps.htm#autoId8

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *