Comment augmenter le délai heatbeep ASM pendent lequel un disque n’est pas considéré comme offline lors d’une bascule multipath pas assez rapide!!!

ASM, Cluster RAC pas de Commentaire »

Augmenter le délai heartbeep pendent lequel un disque n’est pas considéré comme offline lors d’une bascule multipath pas assez rapide. Ou comment utiliser un paramètre caché d’ASM 11GR2!!!

Le contexte :
Rac étendu en version 11.2.0.4 avec deux diskgroups en miroir et un accès aux LUN’s en ISCSI vers des baies DELL EQUALOGIC.

Le multipath est configuré avec le driver multipath propriétaire de DELL puisque les bascules en driver linux natifs sont extrêmement lentes.
La configuration ASM a donc été faite sur des chemins du type /dev/eql/XXXXXX.

Quand on teste la perte d’une des deux cartes dédiées au ISCSI, la couche multipath doit gérer les io’s à travers le deuxième chemin.
Aléatoirement lorsque que l’on coupe le port du switch ou la carte ISCSI, nous allons perdre des disques d’un des deux diskgroups ou pas.

########################################################################
# ETAT DES DISQUES #
########################################################################

GROUP_NUMBER NAME STATE FAILGROUP PATH
———— ——————– ———- ——————– ———————————————
0 NORMAL /dev/oracleasm/disks/DSK_CLITX_FRA02
0 NORMAL /dev/oracleasm/disks/DSK_CLITX_DATA01
0 NORMAL /dev/oracleasm/disks/DSK_CLITX_OCR02
1 CLITX_DATA01 NORMAL FG_CLITX_DATA
1 CLITX_DATA05 NORMAL FG_CLITX_DATA /dev/oracleasm/disks/DSK_CLITX_DATA05
1 CLITX_DATA03 NORMAL FG_CLITX_DATA /dev/oracleasm/disks/DSK_CLITX_DATA03
1 CLITX_DATA02 NORMAL FG_CLITX_DATA /dev/oracleasm/disks/DSK_CLITX_DATA02
1 CLITX_DATA04 NORMAL FG_CLITX_DATA /dev/oracleasm/disks/DSK_CLITX_DATA04
1 TCY_DATA02 NORMAL FG_TCY_DATA /dev/oracleasm/disks/DSK_TCY_DATA02
1 TCY_DATA01 NORMAL FG_TCY_DATA /dev/oracleasm/disks/DSK_TCY_DATA01
1 TCY_DATA03 NORMAL FG_TCY_DATA /dev/oracleasm/disks/DSK_TCY_DATA03
1 TCY_DATA04 NORMAL FG_TCY_DATA /dev/oracleasm/disks/DSK_TCY_DATA04
1 TCY_DATA05 NORMAL FG_TCY_DATA /dev/oracleasm/disks/DSK_TCY_DATA05
2 CLITX_FRA03 NORMAL FG_CLITX_FRA /dev/oracleasm/disks/DSK_CLITX_FRA03
2 CLITX_FRA01 NORMAL FG_CLITX_FRA /dev/oracleasm/disks/DSK_CLITX_FRA01
2 CLITX_FRA02 NORMAL FG_CLITX_FRA
2 TCY_FRA03 NORMAL FG_TCY_FRA /dev/oracleasm/disks/DSK_TCY_FRA03
2 TCY_FRA01 NORMAL FG_TCY_FRA /dev/oracleasm/disks/DSK_TCY_FRA01
2 TCY_FRA02 NORMAL FG_TCY_FRA /dev/oracleasm/disks/DSK_TCY_FRA02
3 TCY_OCR02 NORMAL TCY_OCR02 /dev/oracleasm/disks/DSK_TCY_OCR02
4 OCRVOTING_0001 NORMAL OCRVOTING_0001 /dev/oracleasm/disks/DSK_CLITX_OCR01
4 OCRVOTING_0002 NORMAL OCRVOTING_0002 /dev/oracleasm/disks/DSK_TCY_OCR01
4 OCRVOTING_0003 NORMAL OCRVOTING_0003 /app/voting/vote3

########################################################################
# ETAT DES DISKGROUPS : PRESENCE DE DISQUES OFFLINE #
########################################################################

GROUP_NUMBER NAME STATE OFFLINE_DISKS
———— ——————– ———- ————-
1 DGDATA MOUNTED 1
2 DGFRA MOUNTED 1
3 OCRMIRROR MOUNTED 0
4 OCRVOTING MOUNTED 0

On voit que l’on a bien des disques offline dans chaque diskgroup DGFRA et DGDATA.

Alert_+ASM1.log
Dans les traces, on voit des erreurs d’écritures
WARNING: group 1 dismounted: failed to write virtual extent 0 of file 256
Errors in file /app/oracle/diag/rdbms/orcl/ORCL1/trace/ORCL1_ckpt_42424.trc:
ORA-00206: erreur lors de l’écriture (bloc 3, nbre blocs 1) du fichier de contrôle
ORA-00202: fichier de contrôle : ‘+DGDATA/orcl/controlfile/current.256.842798891′
ORA-15081: échec de la soumission d’une opération d’entrée-sortie sur un disque
ORA-15081: échec de la soumission d’une opération d’entrée-sortie sur un disque
Errors in file /app/oracle/diag/rdbms/orcl/ORCL1/trace/ORCL1_ckpt_42424.trc:
ORA-00221: erreur lors de l’écriture dans le fichier de contrôle
ORA-00206: erreur lors de l’écriture (bloc 3, nbre blocs 1) du fichier de contrôle
ORA-00202: fichier de contrôle : ‘+DGDATA/orcl/controlfile/current.256.842798891′
ORA-15081: échec de la soumission d’une opération d’entrée-sortie sur un disque
ORA-15081: échec de la soumission d’une opération d’entrée-sortie sur un disque
CKPT (ospid: 42424): terminating the instance due to error 221
Fri Mar 21 15:23:43 2014
System state dump requested by (instance=1, osid=42424 (CKPT)), summary=[abnormal instance termination].
System State dumped to trace file /app/oracle/diag/rdbms/orcl/ORCL1/trace/ORCL1_diag_42382_20140321152343.trc
Fri Mar 21 15:23:43 2014

Sur 10 coupures à 5 minutes d’intervalle, avec remise en état de la configuration entre temps bien sur, on aura dix résultats différents dont des fois ou l’on ne perd aucun disque, le résultat attendu…

On va positionner un des nombreux paramètres cachés d’ASM en 11GR2 qui va nous permettre d’augmenter le temps toléré de heartbeep avant que le disque soit considéré comme manquant et de ce fait mis offline.
Sa valeur par défaut est de 15 secondes.

SQL> alter system set “_asm_hbeatiowait”=200 scope=spfile;

System altered.

SQL>

On peut donc refaire les tests et O surprise, nous ne perdons plus un seul membre de diskgroup au bout de 10 changement / coupures de multipath.

Le rac étendu est opérationnel.

Oracle - ASM : Miroir, mon beau miroir, ….

ASM, Cluster RAC pas de Commentaire »

Oracle - ASM : Miroir, mon beau miroir, ….by albanlepunk

Des fois on pense avoir tout prévu pour sécuriser son infrastructure Oracle : cluster RAC étendu, diskgroups ASM en redondance NORMAL, 3° voting disk sur un partage NFS distinct, ….

Ceinture et bretelle donc …

Sauf que …. dans la vraie vie d’un informaticien (et à plus forte raison d’un consultant Oracle) la loi de Murphy est incontournable.

Une coupure d’une baie de stockage suivie d’une fausse manipulation d’un administrateur plus tard et vous vous retrouvez avec la situation suivante qu’on vous demande à vous de dépatouiller :

SQL> select name, STATE, OFFLINE_DISKS from v$asm_diskgroup;

NAME                           STATE       OFFLINE_DISKS

------------------------------ ----------- -------------

DGDATA                         MOUNTED                 0

DGFRA                          MOUNTED                 0

OCRMIRROR                      MOUNTED                 0

OCRVOTING                      DISMOUNTED              0

Oups, le diskgroup OCRVOTING à l’état DISMOUNTED, ça ne sent pas très bon pour le cluster, d’autant plus  :

- qu’il est impossible de rajouter des disques à ce diskgroup vu qu’il est DISMOUNTED

- qu’il est impossible de le monter, même en mode FORCE, vu qu’il manque des disques

Heureusement l’architecture a été bien pensée, et l’existence d’un groupe de disques OCRMIRROR (contenant pour l’instant l’OCR mirroir comme son nom l’indique) va nous être utile.

On commence par ‘déplacer’ les voting disks sur ce diskgroup

root@dblc00000025vm01 dev]# crsctl replace votedisk +OCRMIRROR

Successful addition of voting disk 86b1b5a6583d4f22bf97f7af26f0ef9d.

Successful deletion of voting disk 2bbecebc98fd4fcbbf96de5cc98bed12.

Successful deletion of voting disk 18c58cd6ce034f3bbfca178420967aa0.

Successfully replaced voting disk group with +OCRMIRROR.

CRS-4266: Voting file(s) successfully replaced

Vérification :

[root@dblc00000025vm01 dev]# crsctl query css votedisk

##  STATE    File Universal Id                File Name Disk group

--  -----    -----------------                --------- ---------

1. ONLINE   86b1b5a6583d4f22bf97f7af26f0ef9d (/dev/oracleasm/disks/OCRVOTING_AB02) [OCRMIRROR]

Located 1 voting disk(s).

On continue en supprimant les entêtes des disques concernés puis en les recréant (attention : vous êtes sensés savoir ce que vous faites quand vous faites ce type de manipulation)

[root@dblc00000025vm01 dev]# dd if=/dev/zero of=/dev/xvdh1 bs=1024k count=10

10+0 records in

10+0 records out

10485760 bytes (10 MB) copied, 0.215507 s, 48.7 MB/s

[root@dblc00000025vm01 dev]# oracleasm querydisk /dev/xvdj1

Device "/dev/xvdj1" is marked an ASM disk with the label "OCRVOTING_AA02"

[root@dblc00000025vm01 dev]# dd if=/dev/zero of=/dev/xvdj1 bs=1024k count=10

10+0 records in

10+0 records out

10485760 bytes (10 MB) copied, 0.199342 s, 52.6 MB/s

[root@dblc00000025vm01 dev]#

[root@dblc00000025vm01 dev]# oracleasm createdisk OCRVOTING_AA01 /dev/xvdh1

Writing disk header: done

Instantiating disk: failed

Clearing disk header: done

[root@dblc00000025vm01 dev]# oracleasm createdisk OCRVOTING_AA02 /dev/xvdj1

Writing disk header: done

Instantiating disk: failed

Clearing disk header: done

[root@dblc00000025vm01 dev]#

[root@dblc00000025vm01 dev]# oracleasm scandisks

Reloading disk partitions: done

Cleaning any stale ASM disks...

Cleaning disk "OCRVOTING_AA01"

Cleaning disk "OCRVOTING_AA02"

Scanning system for ASM disks...

[root@dblc00000025vm01 dev]# oracleasm listdisks

DATA_AA01

DATA_AB01

FRA_AA01

FRA_AB01

OCRVOTING_AB01

OCRVOTING_AB02

[root@dblc00000025vm01 dev]#

[root@dblc00000025vm01 dev]# oracleasm createdisk OCRVOTING_AA02 /dev/xvdj1

Writing disk header: done

Instantiating disk: done

[root@dblc00000025vm01 dev]# oracleasm createdisk OCRVOTING_AA01 /dev/xvdh1

Writing disk header: done

Instantiating disk: done

[root@dblc00000025vm01 dev]# oracleasm scandisks

Reloading disk partitions: done

Cleaning any stale ASM disks...

Scanning system for ASM disks...

[root@dblc00000025vm01 dev]# oracleasm listdisks

DATA_AA01

DATA_AB01

FRA_AA01

FRA_AB01

OCRVOTING_AA01

OCRVOTING_AA02

OCRVOTING_AB01

OCRVOTING_AB02

On va créer un diskgroup temporaire pour faire changer le statut des disques concernés dans ASM de ‘MEMBER’ à ‘FORMER’, puis le supprimer.


SQL> create diskgroup DGTEST external redundancy disk '/dev/oracleasm/disks/OCRVOTING_AA01','/dev/oracleasm/disks/OCRVOTING_AA02';
Diskgroup created.

SQL> select name, state from v$asm_diskgroup;

NAME                           STATE

------------------------------ -----------

DGDATA                         MOUNTED

DGFRA                          MOUNTED

OCRMIRROR                      MOUNTED

OCRVOTING                      DISMOUNTED

DGTEST                         MOUNTED

SQL> drop diskgroup DGTEST;

Diskgroup dropped.

SQL> select name,path,header_status from v$asm_disk

NAME                           PATH                                                                                                                                HEADER_STATU

------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------

/dev/oracleasm/disks/OCRVOTING_AA01                                                                                                 FORMER

/dev/oracleasm/disks/OCRVOTING_AA02                                                                                                 FORMER

/dev/oracleasm/disks/OCRVOTING_AB01                                                                                                 MEMBER

/app/voting/vote3                                                                                                                   MEMBER

OCRMIRROR_0000                 /dev/oracleasm/disks/OCRVOTING_AB02                                                                                                 MEMBER

DGFRA_0001                     /dev/oracleasm/disks/FRA_AB01                                                                                                       MEMBER

DGFRA_0002                     /dev/oracleasm/disks/FRA_AA01                                                                                                       MEMBER

DGDATA_0000                    /dev/oracleasm/disks/DATA_AB01                                                                                                      MEMBER

DGDATA_0002                    /dev/oracleasm/disks/DATA_AA01                                                                                                      MEMBER

9 rows selected.

On droppe l’ancien diskgroup OCRVOTING

SQL> drop diskgroup OCRVOTING force including contents;
Diskgroup dropped

On recréé le diskgroup OCRVOTING

SQL> create diskgroup OCRVOTING normal redundancy disk '/dev/oracleasm/disks/OCRVOTING_AA01','/dev/oracleasm/disks/OCRVOTING_AA02';
Diskgroup created.

SQL> select name, state from v$asm_diskgroup;

NAME                           STATE

------------------------------ -----------

DGDATA                         MOUNTED

DGFRA                          MOUNTED

OCRMIRROR                      MOUNTED

OCRVOTING                      MOUNTED

Puis on lui rajoute son disque quorum NFS, il faut modifier le paramètre compatible.asm du diskgroup pour avoir accès à cette fonctionnalité.

SQL> alter diskgroup OCRVOTING SET ATTRIBUTE 'compatible.asm' = '11.2';
Diskgroup altered.

SQL> alter diskgroup OCRVOTING add QUORUM FAILGROUP OCRVOTING_0002 DISK '/app/voting/vote3';

Diskgroup altered.

SQL> select GROUP_NUMBER, NAME, NAME,FAILGROUP from v$asm_disk;

GROUP_NUMBER NAME                           NAME                           FAILGROUP

------------ ------------------------------ ------------------------------ ------------------------------

0

3 OCRMIRROR_0000                 OCRMIRROR_0000                 OCRMIRROR_0000

4 OCRVOTING_0000                 OCRVOTING_0000                 OCRVOTING_0000

4 OCRVOTING_0001                 OCRVOTING_0001                 OCRVOTING_0001

2 DGFRA_0001                     DGFRA_0001                     FG_FRA_AB01

2 DGFRA_0002                     DGFRA_0002                     FG_FRA_AA01

1 DGDATA_0000                    DGDATA_0000                    FG_DATA_AB01

1 DGDATA_0002                    DGDATA_0002                    FG_DATA_AA01

4 OCRVOTING_0002                 OCRVOTING_0002                 OCRVOTING_0002
9 rows selected.

il faut ensuite restaurer le spfile ASM dans le diskgroup, puis

on va redéplacer les voting sur OCRVOTING (Attention seulement en 11.2)

[root@dblc00000025vm01 dev]# crsctl replace votedisk +OCRVOTING
Successful addition of voting disk 4d47939b7e5c4f36bf3bbfcb04ec9c6d.

Successful addition of voting disk 2045390006194f34bf42086af70e5126.

Successful addition of voting disk 311f1a648aa04fa1bf241b204fe5652f.

Successful deletion of voting disk 86b1b5a6583d4f22bf97f7af26f0ef9d.

Successfully replaced voting disk group with +OCRVOTING.

CRS-4266: Voting file(s) successfully replaced

Vérifications

[root@dblc00000025vm01 dev]# crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group

--  -----    -----------------                --------- ---------

1. ONLINE   4d47939b7e5c4f36bf3bbfcb04ec9c6d (/dev/oracleasm/disks/OCRVOTING_AA01) [OCRVOTING]

2. ONLINE   2045390006194f34bf42086af70e5126 (/dev/oracleasm/disks/OCRVOTING_AA02) [OCRVOTING]

3. ONLINE   311f1a648aa04fa1bf241b204fe5652f (/app/voting/vote3) [OCRVOTING]

Located 3 voting disk(s).

On va supprimmer la référence à l’OCR d’OCRVOTING

[root@dblc00000025vm01 dev]# ocrconfig -delete +OCRVOTING
[root@dblc00000025vm01 dev]# ocrconfig -add +OCRVOTING

[root@dblc00000025vm01 dev]# ocrcheck

Status of Oracle Cluster Registry is as follows :

Version                  :          3

Total space (kbytes)     :     262120

Used space (kbytes)      :       3168

Available space (kbytes) :     258952

ID                       :  603000217

Device/File Name         : +OCRMIRROR

Device/File integrity check succeeded

Device/File Name         : +OCRVOTING

Device/File integrity check succeeded

Device/File not configured

Device/File not configured

Device/File not configured

Cluster registry integrity check succeeded

Logical corruption check succeeded

[root@dblc00000025vm01 dev]# ocrconfig -delete +OCRMIRROR

[root@dblc00000025vm01 dev]# ocrconfig -add +OCRMIRROR

[root@dblc00000025vm01 dev]# ocrcheck

Status of Oracle Cluster Registry is as follows :

Version                  :          3

Total space (kbytes)     :     262120

Used space (kbytes)      :       3168

Available space (kbytes) :     258952

ID                       :  603000217

Device/File Name         : +OCRVOTING

Device/File integrity check succeeded

Device/File Name         : +OCRMIRROR

Device/File integrity check succeeded

Device/File not configured

Device/File not configured

Device/File not configured

Cluster registry integrity check succeeded

Logical corruption check succeeded

Un test de reboot des serveurs et c’est bon, c’est reparti !

Changer les adresses IP publiques et virtuelles d’un cluster

Cluster RAC 1 Commentaire »

Sources

1. “How to Change Interconnect/Public Interface IP or Subnet in Oracle Clusterware”, Doc ID: 283684.1
2. “Modifying the VIP or VIP Hostname of a 10g or 11g Oracle Clusterware Node”, DOC ID: 276434.1
3. “How to change Public and VIP component address in case of RAC?”

Je veux changer le vlan de mes adresses publiques et virtuelles de mon cluster RAc 11.2.0.3.
Sur ce cluster, il y a une base SETRA active/active et une base BLACK active/passive.

Pour commenecr on arrête les ressources correspondantes aux bases.

[root@lrac1 bin]# srvctl stop database -d SETRA

[root@lrac1 bin]# ./crs_stop black.db
Tentative d’arrêt de ‘black.db’ sur le membre ‘lrac2′
‘black.db’ a été arrêté sur le membre ‘lrac2′.
[root@lrac1 bin]# ./crs_stop black.listener
Tentative d’arrêt de ‘black.listener’ sur le membre ‘lrac2′
‘black.listener’ a été arrêté sur le membre ‘lrac2′.
[root@lrac1 bin]# ./crs_stop black.vip
Tentative d’arrêt de ‘black.vip’ sur le membre ‘lrac2′
‘black.vip’ a été arrêté sur le membre ‘lrac2′.
[root@lrac1 bin]# ./crs_stop black.group
Tentative d’arrêt de ‘black.group’ sur le membre ‘lrac2′
‘black.group’ a été arrêté sur le membre ‘lrac2′.
[root@lrac1 bin]#

On arrête les ressources sur lequelles sont montées les VIP

[root@lrac1 bin]# srvctl stop nodeapps -n lrac1 -f
PRKO-2426 : ONS (Oracle Notification Service) est déjà arrêté sur les noeuds : lrac1

[root@lrac1 bin]# srvctl stop nodeapps -n lrac2 -f

Vérifications

[root@lrac1 bin]# crs
HA Resource                                   Target     State
———–                                   ——     —–
black.db                                      ONLINE     OFFLINE
black.group                                   ONLINE     OFFLINE
black.listener                                ONLINE     OFFLINE
black.vip                                     ONLINE     OFFLINE
ora.DGDATA.dg                                 ONLINE     ONLINE on lrac1
ora.DGFRA.dg                                  ONLINE     ONLINE on lrac1
ora.LISTENER.lsnr                             ONLINE     OFFLINE
ora.LISTENER_SCAN1.lsnr                       OFFLINE    OFFLINE
ora.OCRVOTING.dg                              ONLINE     ONLINE on lrac1
ora.asm                                       ONLINE     ONLINE on lrac1
ora.cvu                                       OFFLINE    OFFLINE
ora.gsd                                       OFFLINE    OFFLINE
ora.lrac1.ASM1.asm                            ONLINE     ONLINE on lrac1
ora.lrac1.LISTENER_LRAC1.lsnr                 ONLINE     OFFLINE
ora.lrac1.gsd                                 OFFLINE    OFFLINE
ora.lrac1.ons                                 OFFLINE    OFFLINE
ora.lrac1.vip                                 OFFLINE    OFFLINE
ora.lrac2.ASM2.asm                            ONLINE     ONLINE on lrac2
ora.lrac2.LISTENER_LRAC2.lsnr                 ONLINE     OFFLINE
ora.lrac2.gsd                                 OFFLINE    OFFLINE
ora.lrac2.ons                                 OFFLINE    OFFLINE
ora.lrac2.vip                                 OFFLINE    OFFLINE
ora.net1.network                              OFFLINE    OFFLINE
ora.oc4j                                      ONLINE     ONLINE on lrac2
ora.ons                                       OFFLINE    OFFLINE
ora.registry.acfs                             ONLINE     ONLINE on lrac1
ora.scan1.vip                                 OFFLINE    OFFLINE
ora.setra.db                                  OFFLINE    OFFLINE
[root@lrac1 bin]#

Editer les fichiers /etc/hosts et les mettre à jour avec les nouvelles adresses publiques et virtuelles.

Ensuite on change le vlan pour l’interface eth0 dans le clusterware.

[oracle@lrac1 bin]$ ./oifcfg getif
eth1  192.168.1.0  global  cluster_interconnect
eth0  10.1.0.0  global  public

[oracle@lrac1 bin]$ ./oifcfg delif -global eth0

[oracle@lrac1 bin]$ ./oifcfg setif -global eth0/192.168.255.0:public

On modifie les adresses virtuelles dans le clusterware

[root@lrac1 bin]# ./srvctl modify nodeapps -n lrac1 -A 192.168.255.112/255.255.255.0/eth0
[root@lrac1 bin]# ./srvctl modify nodeapps -n lrac2 -A 192.168.255.113/255.255.255.0/eth0

Changement des adresses au niveau OS.

Aller dans l’OS et changer les adresses publiques d’eth0 sur chaque noeud.
Redémarrer le réseau

service network restart (linux)

Changer les adresses dans les fichiers known_hosts sur chaque noeud pour le user oracle (ou grid si c’est le cas)
su – oracle
cd .ssh
cp known_hosts known_hosts.bak
vi known_hosts
Faire le changement des IP des anciennes vers les nouvelles.

Arrêter les crs sur chaque noeud et les redémarrer

crsctl stop crs
crsctl start crs

Changement de l’adresse scan

[root@lrac1 bin]# srvctl config scan_listener
Le processus d’écoute SCAN LISTENER_SCAN1 existe. Port : TCP:1521
[root@lrac1 bin]#
[root@lrac1 bin]# srvctl config scan
Nom SCAN : lrac-scan, réseau : 1/192.168.255.0/255.255.255.0/eth0
Nom d’adresse IP virtuelle SCAN : scan1, IP : /lrac-scan/10.1.1.14
[root@lrac1 bin]#

Vu que l’ip a été changé dans les /etc/hosts, sur les OS, on n’a plus qu’à redémarrer les ressources scan et listener associé.
Les ressources sont arrêtées.

[root@lrac1 bin]# ./crs_start ora.scan1.vip
Tentative de démarrage de ‘ora.scan1.vip’ sur le membre ‘lrac2′
‘ora.scan1.vip’ a été démarré sur le membre ‘lrac2′.
[root@lrac1 bin]#
[root@lrac1 bin]# ./crs_start ora.LISTENER_SCAN1.lsnr
Tentative de démarrage de ‘ora.LISTENER_SCAN1.lsnr’ sur le membre ‘lrac2′
‘ora.LISTENER_SCAN1.lsnr’ a été démarré sur le membre ‘lrac2′.
[root@lrac1 bin]#

[root@lrac1 bin]# crs
HA Resource                                   Target     State
———–                                   ——     —–
black.db                                      OFFLINE    OFFLINE
black.group                                   ONLINE     OFFLINE
black.listener                                ONLINE     OFFLINE
black.vip                                     ONLINE     OFFLINE
ora.DGDATA.dg                                 ONLINE     ONLINE on lrac1
ora.DGFRA.dg                                  ONLINE     ONLINE on lrac1
ora.LISTENER.lsnr                             ONLINE     ONLINE on lrac1
ora.LISTENER_SCAN1.lsnr                       ONLINE     ONLINE on lrac2
ora.OCRVOTING.dg                              ONLINE     ONLINE on lrac1
ora.asm                                       ONLINE     ONLINE on lrac1
ora.cvu                                       OFFLINE    OFFLINE
ora.gsd                                       OFFLINE    OFFLINE
ora.lrac1.ASM1.asm                            ONLINE     ONLINE on lrac1
ora.lrac1.LISTENER_LRAC1.lsnr                 ONLINE     ONLINE on lrac1
ora.lrac1.gsd                                 OFFLINE    OFFLINE
ora.lrac1.ons                                 ONLINE     ONLINE on lrac1
ora.lrac1.vip                                 ONLINE     ONLINE on lrac1
ora.lrac2.ASM2.asm                            ONLINE     ONLINE on lrac2
ora.lrac2.LISTENER_LRAC2.lsnr                 ONLINE     ONLINE on lrac2
ora.lrac2.gsd                                 OFFLINE    OFFLINE
ora.lrac2.ons                                 ONLINE     ONLINE on lrac2
ora.lrac2.vip                                 ONLINE     ONLINE on lrac2
ora.net1.network                              ONLINE     ONLINE on lrac1
ora.oc4j                                      ONLINE     ONLINE on lrac1
ora.ons                                       ONLINE     ONLINE on lrac1
ora.registry.acfs                             ONLINE     ONLINE on lrac1
ora.scan1.vip                                 ONLINE     ONLINE on lrac2
ora.setra.db                                  OFFLINE    OFFLINE
[root@lrac1 bin]#

Redémarrage de la base SETRA

[root@lrac1 bin]# srvctl start database -d SETRA

Redémarrage de la base standalone BLACK

Si des ressources suite aux redémarrage des crs ont redémarrées, on les arrête proprement et on les relance à la main.

black.db                                      OFFLINE    OFFLINE
black.group                                   OFFLINE    OFFLINE
black.listener                                OFFLINE    OFFLINE
black.vip                                     OFFLINE    OFFLINE

il faut modifier les fichiers /app/oracle/product/11.2.0/db_1/network/admin/listener.ora avec la nouvelle adresse
et faire le changement dans le DNS et/ou le fichier /etc/hosts.

On va maintenant changer l’adresse de la vip spécifique à la base BLACK dans le clusterware.

[root@lrac1 bin]# ./crs_stat -p black.vip
NAME=black.vip
TYPE=application
ACTION_SCRIPT=/app/grid/bin/usrvip
****
****
****
USR_ORA_LANG=
USR_ORA_NETMASK=255.255.0.0
USR_ORA_OPEN_MODE=
USR_ORA_OPI=false
USR_ORA_PFILE=
USR_ORA_PRECONNECT=none
USR_ORA_SRV=
USR_ORA_START_TIMEOUT=0
USR_ORA_STOP_MODE=immediate
USR_ORA_STOP_TIMEOUT=0
USR_ORA_VIP=10.1.1.15

On modifie l’IP et le netmask si besoin

[root@lrac1 bin]# ./crsctl modify resource black.vip -attr “USR_ORA_VIP=192.168.255.115″
[root@lrac1 bin]# ./crsctl modify resource black.vip -attr “USR_ORA_NETMASK=255.255.255.0″

Redémarrage des ressources

[root@lrac1 bin]# ./crs_start black.group
Tentative de démarrage de ‘black.group’ sur le membre ‘lrac2′
‘black.group’ a été démarré sur le membre ‘lrac2′.
[root@lrac1 bin]# ./crs_start black.vip
Tentative de démarrage de ‘black.vip’ sur le membre ‘lrac2′
‘black.vip’ a été démarré sur le membre ‘lrac2′.
[root@lrac1 bin]#
[root@lrac1 bin]# ./crs_start black.listener
Tentative de démarrage de ‘black.listener’ sur le membre ‘lrac2′
‘black.listener’ a été démarré sur le membre ‘lrac2′.
[root@lrac1 bin]# ./crs_start black.db
Tentative de démarrage de ‘black.db’ sur le membre ‘lrac2′
‘black.db’ a été démarré sur le membre ‘lrac2′.
[root@lrac1 bin]#

Il se peut que la ressource ora.cvu se doit mise en  target OFFLINE et state OFFLINE

on la redémarre à la main.

[oracle@lrac1 bin]$ ./crs_start ora.cvu
Tentative de démarrage de ‘ora.cvu’ sur le membre ‘lrac1′
‘ora.cvu’ a été démarré sur le membre ‘lrac1′.
[oracle@lrac1 bin]$ crs
HA Resource                                   Target     State
———–                                   ——     —–
black.db                                      ONLINE     ONLINE on lrac2
black.group                                   ONLINE     ONLINE on lrac2
black.listener                                ONLINE     ONLINE on lrac2
black.vip                                     ONLINE     ONLINE on lrac2
ora.DGDATA.dg                                 ONLINE     ONLINE on lrac1
ora.DGFRA.dg                                  ONLINE     ONLINE on lrac1
ora.LISTENER.lsnr                             ONLINE     ONLINE on lrac1
ora.LISTENER_SCAN1.lsnr                       ONLINE     ONLINE on lrac2
ora.OCRVOTING.dg                              ONLINE     ONLINE on lrac1
ora.asm                                       ONLINE     ONLINE on lrac1
ora.cvu                                       ONLINE     ONLINE on lrac1
ora.gsd                                       OFFLINE    OFFLINE
ora.lrac1.ASM1.asm                            ONLINE     ONLINE on lrac1
ora.lrac1.LISTENER_LRAC1.lsnr                 ONLINE     ONLINE on lrac1
ora.lrac1.gsd                                 OFFLINE    OFFLINE
ora.lrac1.ons                                 ONLINE     ONLINE on lrac1
ora.lrac1.vip                                 ONLINE     ONLINE on lrac1
ora.lrac2.ASM2.asm                            ONLINE     ONLINE on lrac2
ora.lrac2.LISTENER_LRAC2.lsnr                 ONLINE     ONLINE on lrac2
ora.lrac2.gsd                                 OFFLINE    OFFLINE
ora.lrac2.ons                                 ONLINE     ONLINE on lrac2
ora.lrac2.vip                                 ONLINE     ONLINE on lrac2
ora.net1.network                              ONLINE     ONLINE on lrac1
ora.oc4j                                      ONLINE     ONLINE on lrac2
ora.ons                                       ONLINE     ONLINE on lrac1
ora.registry.acfs                             ONLINE     ONLINE on lrac1
ora.scan1.vip                                 ONLINE     ONLINE on lrac2
ora.setra.db                                  ONLINE     ONLINE on lrac2
[oracle@lrac1 bin]$

Toutes les adresses publiques et virtuelles ont été changées et toutes les ressources du cluster sont à nouveau disponibles.

Temps d’indisponibilité entre 10mns et une demi heure.

Alban lepunk

Comment installer oracleasm sur Oracle Linux 6.x

ASM, Cluster RAC, Divers 1 Commentaire »

Installation d’oracleasmlib sur OL6.1

Ne le trouvant pas à télécharger sur oracle.com ou Metalink, j’ai tenté de l’installer avec yum.

D’aprés la note 1089399.1

“For RHEL6, Oracle will only provide ASMLib software and updates when configured with a kernel distributed

by Oracle. Oracle will not provide ASMLib packages for kernels distributed by Red Hat as part of RHEL6.

ASMLib updates will be delivered via Unbreakable Linux Network(ULN) which is available to customers with Oracle

Linux support. ULN works with both Oracle Linux or Red Hat Linux installations,

but ASMlib usage will require replacing any Red Hat kernel with a kernel provided by Oracle.”

Yum m’a proposé d’installer le kernel UEK dans lequel oracleasm est natif et de fait de mettre à jour certains packages

du même kernel.

Il faut au préalable avoir configuré son yum pour qu’il pointe sur le bon référentiel ou s’être enregistré sur Unbreakable Linux Network.

[root@racform1 app]# yum install oracleasm

Loaded plugins: refresh-packagekit

Setting up Install Process

Resolving Dependencies

–> Running transaction check

—> Package kernel-uek.x86_64 0:2.6.32-300.11.1.el6uek will be installed

–> Processing Dependency: kernel-uek-firmware = 2.6.32-300.11.1.el6uek for package: kernel-uek-2.6.32-300.11.1.el6uek.x86_64

–> Processing Dependency: dracut-kernel >= 004-242.0.3 for package: kernel-uek-2.6.32-300.11.1.el6uek.x86_64

–> Running transaction check

—> Package dracut-kernel.noarch 0:004-53.el6 will be updated

—> Package dracut-kernel.noarch 0:004-256.0.1.el6_2.1 will be an update

–> Processing Dependency: dracut = 004-256.0.1.el6_2.1 for package: dracut-kernel-004-256.0.1.el6_2.1.noarch

—> Package kernel-uek-firmware.noarch 0:2.6.32-100.34.1.el6uek will be updated

—> Package kernel-uek-firmware.noarch 0:2.6.32-300.11.1.el6uek will be an update

–> Running transaction check

—> Package dracut.noarch 0:004-53.el6 will be updated

—> Package dracut.noarch 0:004-256.0.1.el6_2.1 will be an update

–> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================================

Package Arch Version Repository Size

==================================================================================================================

Installing:

kernel-uek x86_64 2.6.32-300.11.1.el6uek ol6_latest 21 M

Updating for dependencies:

dracut noarch 004-256.0.1.el6_2.1 ol6_latest 109 k

dracut-kernel noarch 004-256.0.1.el6_2.1 ol6_latest 20 k

kernel-uek-firmware noarch 2.6.32-300.11.1.el6uek ol6_latest 3.0 M

Transaction Summary

==================================================================================================================

Install 1 Package(s)

Upgrade 3 Package(s)

Total download size: 24 M

Is this ok [y/N]: y

Downloading Packages:

(1/4): dracut-004-256.0.1.el6_2.1.noarch.rpm | 109 kB 00:00

(2/4): dracut-kernel-004-256.0.1.el6_2.1.noarch.rpm | 20 kB 00:00

(3/4): kernel-uek-2.6.32-300.11.1.el6uek.x86_64.rpm | 21 MB 00:54

(4/4): kernel-uek-firmware-2.6.32-300.11.1.el6uek.noarch.rpm | 3.0 MB 00:07

——————————————————————————————————————

Total 383 kB/s | 24 MB 01:04

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Running Transaction

Updating : kernel-uek-firmware-2.6.32-300.11.1.el6uek.noarch 1/7

Updating : dracut-004-256.0.1.el6_2.1.noarch 2/7

Updating : dracut-kernel-004-256.0.1.el6_2.1.noarch 3/7

Installing : kernel-uek-2.6.32-300.11.1.el6uek.x86_64 4/7

Cleanup : dracut-kernel-004-53.el6.noarch 5/7

Cleanup : dracut-004-53.el6.noarch 6/7

Cleanup : kernel-uek-firmware-2.6.32-100.34.1.el6uek.noarch 7/7

Installed:

kernel-uek.x86_64 0:2.6.32-300.11.1.el6uek

Dependency Updated:

dracut.noarch 0:004-256.0.1.el6_2.1 dracut-kernel.noarch 0:004-256.0.1.el6_2.1

kernel-uek-firmware.noarch 0:2.6.32-300.11.1.el6uek

Complete!

[root@racform1 app]#

Ensuite vu que c’est un module du noyau, il faut le charger : “Please note: Oracleasm kernel driver is included in OL 6 UEK, but requires an inital ‘modprobe oracleasm’ ».

[root@racform1 app]# modprobe oracleasm

On installe ensuite le seul package non natif d’Oracleasm.

[root@racform1 app]# rpm -ivh oracleasm-support-2.1.5-1.el6.x86_64.rpm

Préparation… ########################################### [100%]

1:oracleasm-support ########################################### [100%]

[root@racform1 app]#

On voit que le module oracleasm est présent mais pas démarré

[root@racform1 app]# /etc/init.d/oracleasm status

Checking if ASM is loaded: yes

Checking if /dev/oracleasm is mounted: no

[root@racform1 app]#

Comme dans les versions précedentes, il faut le configurer.

[root@RACFORM2 ~]# oracleasm configure -i

Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library

driver. The following questions will determine whether the driver is

loaded on boot and what permissions it will have. The current values

will be shown in brackets (’[]‘). Hitting <ENTER> without typing an

answer will keep that current value. Ctrl-C will abort.

Default user to own the driver interface []: oracle

Default group to own the driver interface []: dba

Start Oracle ASM library driver on boot (y/n) [n]: y

Scan for Oracle ASM disks on boot (y/n) [y]: y

Writing Oracle ASM library driver configuration: done

[root@RACFORM2 ~]#

Il ne reste plus qu’à le démarrer.

[root@racform1 app]# oracleasm init

Creating /dev/oracleasm mount point: /dev/oracleasm

Mounting ASMlib driver filesystem: /dev/oracleasm

[root@racform1 app]#

Et le tour est joué

[root@racform1 app]# /etc/init.d/oracleasm status

Checking if ASM is loaded: yes

Checking if /dev/oracleasm is mounted: yes

[root@racform1 app]#

Petite subtilité pour la suite, il arrive que l’installeur Oracle pour la couche cluster ne découvre pas les disques avec le chemin standard “ORCL:”, dans ce cas on peut faire la découverte des disques avec le chemin suivant : /dev/oracleasm/disks.

Oracle - 11GR2 RAC - 3° voting disk et nfs

ASM, Cluster RAC pas de Commentaire »

En version 10GR2 RAC et 11GR1 RAC, lorsqu’on était dans une configuration ‘cluster étendu’ avec deux baies de stockage, possibilité était donnée de stocker un des voting disks du cluster sur un partage NFS situé sur un autre serveur n’utilisant pas l’une des baies.

L’objectif de cette configuration était de fournir un quorum permettant à une des parties du cluster de continuer à fonctionner même en cas de perte complète d’une baie (ou d’une salle d’hébergement) ou en cas de perte du réseau privé entre les noeuds.

Si vous êtes encore en version 10GR2 ou 11GR1 vous trouverez des infos sur ce paramétrage ici

En version 11GR2 (11.2.0.2 en l’occurrence) où les voting disks peuvent être stockés dans ASM les choses se compliquent un peu pour mettre en place ce troisième voting disk :

On dispose d’un cluster RAC à deux nœuds utilisant deux baies de stockage, un diskgroup ‘OCRCONFIG1’ composé de quatre disques (deux sur chaque baie) est utilisé pour le stockage des OCR et voting disks.

Un partage nfs /votedisk est monté sur chacun des serveurs du cluster :

nfs-server:/votedisk /votedisk nfs rw,bg,hard,intr,rsize=32768,wsize=32768,tcp,noac,vers=3,timeo=600 0 0

La configuration des voting disks est pour l’instant la suivante :

[root@rac1 bin]# ./crsctl query css votedisk

##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   77d5d112ed054f97bf7049422ae169ff (ORCL:OCRCONFIG1) [OCRCONFIG1]
 2. ONLINE   4a72763dc7c94f5fbf4acbe0d51b4f69 (ORCL:OCRCONFIG2) [OCRCONFIG1]
 3. ONLINE   45936edfe3174f9fbff3e99794dab38a (ORCL:OCRCONFIG3) [OCRCONFIG1]
Located 3 voting disk(s).

On a trois voting disks, chacun sur un disque, deux dans une salle  (OCRCONFIG1 et OCRCONFIG3) et 1 dans l’autre (OCRCONFIG2)

Création du futur voting disk sur le partage nfs :

dd if=/dev/zero of=/votedisk/vote3 bs=1M count=500

Démarrer ensuite l’assistant asmca

Dans l’onglet ‘Groupe de disques’ sélectionner le groupe de disques  OCRCONFIG1 et sélectionner l’option ‘Ajouter des disques

votingnfs1

Cliquer ensuite sur le bouton ‘Modifier le chemin de repérage des disques’

votingnfs5

votingnfs3

Ajouter au(x) chemin(s) existant(s) l’emplacement du voting disk sur le partage NFS

Notre disque candidat apparait ensuite :

votingnfs4

Le sélectionner et cocher la case ‘Quorum’ (dernière colonne) pour indiquer qu’il s’agit d’un disque jouant le rôle de quorum.

votingnfs6

C’est fait !

Nous voici maintenant avec les disques suivants :

[root@rac1 bin]# ./crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   77d5d112ed054f97bf7049422ae169ff (ORCL:OCRCONFIG1) [OCRCONFIG1]
 2. ONLINE   4a72763dc7c94f5fbf4acbe0d51b4f69 (ORCL:OCRCONFIG2) [OCRCONFIG1]
 3. ONLINE   1912723de8bf4f9abf7c79052b008606 (/votedisk/vote3) [OCRCONFIG1]

Le disque OCRCONFIG1 est en salle 1, le disque OCRCONFIG2 en salle 2, le troisième /votedisk/vote3 joue donc le rôle de quorum.

Remarque : évidemment, le serveur hébergeant ce disque n’est situé ni dans l’une ni dans l’autre des salles, et utilise également un stockage indépendant, sinon ça ne sert pas à grand-chose …

Attention : il y a quelques effets de bord à cette configuration, en particulier lorsque le device NFS n’est pas accessible, cf la partie ‘Known issue’ du white paper Oracle.

Restauration d’un OCR dans ASM (11GR2)

ASM, Cluster RAC pas de Commentaire »

Contrairement au versions précédentes, pour la 11GR2, on a la possibilité de stocker l’OCR et les Voting Disks dans un diskgroup ASM.

Après avoir installé un cluster utilisant cette nouvelle fonctionnalité, et faisant quelques tests de recette qui comprennent notamment la restauration de l’OCR, je me suis demandé comment pouvait on restaurer l’OCR quand le cluster est arrêté et donc ASM où il est stocké ?

Attention, ce qui suit est valable uniquement pour la version 11.2.0.1, en 11.2.0.2 les choses sont un petit peu différentes

1. Arrêter le  clusterware sur chaque noeud :

crsctl stop cluster -all

2. On vérifie que les deux clusterware sont bien arrêtés sur chaque noeud

3. Sur le noeud sur lequel est présent le backup de l’OCR démarrer manuellement les ressources css et asm

[root@rac1 bin]# ./crsctl start res ora.cssd -init
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'rac1'
CRS-2676: Start of 'ora.cssdmonitor' on 'rac1' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'rac1'
CRS-2672: Attempting to start 'ora.diskmon' on 'rac1'
CRS-2676: Start of 'ora.diskmon' on 'rac1' succeeded
CRS-2676: Start of 'ora.cssd' on 'rac1' succeeded
[root@rac1 bin]# ./crsctl start res ora.asm -init
CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'rac1'
CRS-2672: Attempting to start 'ora.ctssd' on 'rac1'
CRS-2676: Start of 'ora.ctssd' on 'rac1' succeeded
CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'rac1' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'rac1'
CRS-2676: Start of 'ora.asm' on 'rac1' succeeded

4. Restaurer l’OCR depuis le backup qui nous intéresse

[root@rac1 bin]# ./ocrconfig -showbackup

rac1     2010/12/22 12:53:13     /app/product/11.2.0/grid/cdata/rac-cluster/backup00.ocr

rac1     2010/12/22 08:53:11     /app/product/11.2.0/grid/cdata/rac-cluster/backup01.ocr

rac1     2010/12/22 04:53:11     /app/product/11.2.0/grid/cdata/rac-cluster/backup02.ocr

rac1     2010/12/21 20:53:10     /app/product/11.2.0/grid/cdata/rac-cluster/day.ocr

rac1     2010/12/21 20:53:10     /app/product/11.2.0/grid/cdata/rac-cluster/week.ocr

rac1     2011/03/03 14:54:21     /app/product/11.2.0/grid/cdata/rac-cluster/backup_20110303_145421.ocr

[root@rac1 bin]# ./ocrconfig -restore /app/product/11.2.0/grid/cdata/rac-cluster/backup_20110303_145421.ocr

5. Démarrer manuellement les ressources manquantes du cluster evmd et crsd.

 [root@rac1 bin]# ./crsctl start res ora.evmd –init
CRS-2672: Attempting to start 'ora.evmd' on 'rac1'
CRS-2676: Start of 'ora.evmd' on 'rac1' succeeded
[root@rac1 bin]# ./crsctl start res ora.crsd –init
CRS-2672: Attempting to start 'ora.crsd' on 'rac1'
CRS-2676: Start of 'ora.crsd' on 'rac1' succeeded

6. Démarrer le clusterware sur les autres noeuds : crsctl start cluster –all

[root@rac1 bin]# ./crsctl start cluster –all
CRS-2672: Tentative de drmarrage de 'ora.cssdmonitor' sur 'rac2'
CRS-2676: 'ora.cssdmonitor' a été démarré sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.cssd' sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.diskmon' sur 'rac2'
CRS-2676: 'ora.diskmon' a été démarré sur 'rac2'
CRS-2676: 'ora.cssd' a été démarré sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.ctssd' sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.cluster_interconnect.haip' sur 'rac2'
CRS-2676: 'ora.ctssd' a été démarré sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.evmd' sur 'rac2'
CRS-2676: 'ora.evmd' a été démarré sur 'rac2'
CRS-2676: 'ora.cluster_interconnect.haip' a été démarré sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.asm' sur 'rac2'
CRS-2676: 'ora.asm' a été démarré sur 'rac2'
CRS-2672: Tentative de démarrage de 'ora.crsd' sur 'rac2'
CRS-2676: 'ora.crsd' a été démarré sur 'rac2'
CRS-4690: Oracle Clusterware is already running on 'rac1'
CRS-4000: Command Start failed, or completed with errors

7. Vérification

 [root@rac1 bin]# ./crs_stat –t
Name           Type           Target    State     Host
ora.DGDATA.dg  ora....up.type ONLINE    ONLINE    rac1
ora.DGFRA.dg   ora....up.type ONLINE    ONLINE    rac1
ora....ER.lsnr ora....er.type ONLINE    ONLINE    rac1
ora....N1.lsnr ora....er.type ONLINE    ONLINE    rac1
ora....TING.dg ora....up.type ONLINE    ONLINE    rac1
ora.asm        ora.asm.type   ONLINE    ONLINE    rac1
ora.cvu        ora.cvu.type   ONLINE    ONLINE    rac1
ora.gsd        ora.gsd.type   OFFLINE   OFFLINE
ora....network ora....rk.type ONLINE    ONLINE    rac1
ora.oc4j       ora.oc4j.type  ONLINE    ONLINE    rac1
ora.ons        ora.ons.type   ONLINE    ONLINE    rac1
ora....SM1.asm application    ONLINE    ONLINE    rac1
ora....C1.lsnr application    ONLINE    ONLINE    rac1
ora.rac1.gsd   application    OFFLINE   OFFLINE
ora.rac1.ons   application    ONLINE    ONLINE    rac1
ora.rac1.vip   ora....t1.type ONLINE    ONLINE    rac1
ora....SM2.asm application    ONLINE    ONLINE    rac2
ora....C2.lsnr application    ONLINE    ONLINE    rac2
ora.rac2.gsd   application    OFFLINE   OFFLINE
ora.rac2.ons   application    ONLINE    ONLINE    rac2
ora.rac2.vip   ora....t1.type ONLINE    ONLINE    rac2
ora....ry.acfs ora....fs.type ONLINE    ONLINE    rac1
ora.scan1.vip  ora....ip.type ONLINE    ONLINE    rac1
ora.setra.db   ora....se.type ONLINE    ONLINE    rac1

Un peu plus compliqué que dans les versions précédentes, mais ASM oblige ….

Migration couche RAC 10G vers 11G

ASM, Cluster RAC pas de Commentaire »

Migration crs 10G vers 11GR2

Les clusters RAC installés ces dernières années en 10g vont devoir être migrés un jour ou l’autre fatalement.

Les éditeurs mettant souvent du temps à valider leurs soft avec la version 11GR2,
on peut prendre de l’avance en ne migrant que les couche CRS et ASM en 11GR2 et en laissant les bases en 10G.

Si vous êtes sur OEL4, vérifier ou upgrader votre OS au minimum en 4.7

Appliquer les pré-requis pour la version 11GR2 sur votre système (note Metalink 880942.1 pour OEL4 et 880989.1 pour OEL5).

Un petit coup de cluster verify permet d’en avoir le coeur net.

runcluvfy.sh stage -pre crsinst -n node1,node2 -verbose

Une fois les binaires du grid 11GR2 copiés, on va utiliser la fonctionnalité “Mettre à niveau Oracle Grid Infrastructure” de l’installer.
Il n’est pas nécéssaire d’arrêter le crs, bien que ça marche quand même si c’est le cas.
On peut sinon passer le script clusterware/upgrade/preupdate.sh qui arrête le crs.

On peut donc théoriquement faire l’upgrade d’un noeud après l’autre, sans coupure de production.

Si vous utilisez ASM, alors arrêtez vos bases et vos instances ASM, l’installeur vous le demandera de toute façon.

Si les pré-requis ont été respecté et l’adresse scan convenablement renseignée, l’installation se déroule comme une installation 11GR2 standard.

Au lieu de lancer le fameux root.sh, on va lancer le rootupgrade.sh qui va arrêter le crs (s’il est démarré), effectuer les mises à jour nécéssaires et relancer la couche cluster.

[root@rac1 tmp]# /app/11.2.0/grid/rootupgrade.sh
Running Oracle 11g root.sh script...
The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /app/11.2.0/grid
Enter the full pathname of the local bin directory: [/usr/local/bin]:
The file "dbhome" already exists in /usr/local/bin.  Overwrite it? (y/n)
[n]: y
   Copying dbhome to /usr/local/bin ...
The file "oraenv" already exists in /usr/local/bin.  Overwrite it? (y/n)
[n]: y
   Copying oraenv to /usr/local/bin ...
The file "coraenv" already exists in /usr/local/bin.  Overwrite it? (y/n)
[n]: y
   Copying coraenv to /usr/local/bin ...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
2011-03-29 15:23:53: Parsing the host name
2011-03-29 15:23:53: Checking for super user privileges
2011-03-29 15:23:53: User has super user privileges
Using configuration parameter file: /app/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
Failure 1 contacting CSS daemon
Command return code of 6 (1536) from command: /app/oracle/product/10.2.0/crs/bin/crsctl check cssd
Cannot communicate with EVM
Cannot communicate with CRS
Command return code of 1 (256) from command: /app/oracle/product/10.2.0/crs/bin/crsctl check crsd
LOCAL ADD MODE
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
  root wallet
  root wallet cert
  root cert export
  peer wallet
  profile reader wallet
  pa wallet
  peer wallet keys
  pa wallet keys
  peer cert request
  pa cert request
  peer cert
  pa cert
  peer root cert TP
  profile reader root cert TP
  pa root cert TP
  peer pa cert TP
  pa peer cert TP
  profile reader pa cert TP
  profile reader peer cert TP
  peer user cert
  pa user cert
Adding daemon to inittab
CRS-4123: Oracle High Availability Services has been started.
ohasd is starting
ADVM/ACFS is not supported on Redhat 4
CRS-2672: Tentative de démarrage de 'ora.mdnsd' sur 'rac1'
CRS-2676: 'ora.mdnsd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.gipcd' sur 'rac1'
CRS-2676: 'ora.gipcd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.gpnpd' sur 'rac1'
CRS-2676: 'ora.gpnpd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.cssdmonitor' sur 'rac1'
CRS-2676: 'ora.cssdmonitor' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.cssd' sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.diskmon' sur 'rac1'
CRS-2676: 'ora.diskmon' a été démarré sur 'rac1'
CRS-2676: 'ora.cssd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.ctssd' sur 'rac1'
CRS-2676: 'ora.ctssd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.crsd' sur 'rac1'
CRS-2676: 'ora.crsd' a été démarré sur 'rac1'
CRS-2672: Tentative de démarrage de 'ora.evmd' sur 'rac1'
CRS-2676: 'ora.evmd' a été démarré sur 'rac1'
clscfg: EXISTING configuration version 3 detected.
clscfg: version 3 is 10G Release 2.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
rac1     2011/03/29 15:27:32     /app/11.2.0/grid/cdata/rac1/backup_20110329_152732.olr
Configure Oracle Grid Infrastructure for a Cluster ... succeeded
Updating inventory properties for clusterware
Démarrage d'Oracle Universal Installer...
Vérification de l'espace de swap : il doit être supérieur à 500 Mo.   Réel 1567 Mo    Succès
The inventory pointer is located at /etc/oraInst.loc
The inventory is located at /app/oracle/oraInventory
'UpdateNodeList' a réussi.
Démarrage d'Oracle Universal Installer...
Vérification de l'espace de swap : il doit être supérieur à 500 Mo.   Réel 1567 Mo    Succès
The inventory pointer is located at /etc/oraInst.loc
The inventory is located at /app/oracle/oraInventory
'UpdateNodeList' a réussi.

Tout est redémarré sur ce noeud, il ne reste plus qu’à migrer ASM.

Pour cela on lance l’assistant asmca à partir du home grid.

L’assistant va vous proposer de mettre à niveau votre version d’ASM, et va arrêter successivement toutes les instances pour finir par les redémarrer dans la nouvelle version.

On verra apparaitre les ressources correspondantes aux diskgroups au fur et à mesure.

Vous avez maitenant un beau cluster en 11GR2 avec des bases en 10G.

Une bonne partie des actions à réaliser pouvant se faire en amont (pré requis, copie des binaires etc..) et sans arrêt de service, on peut donc s’en tirer avec des arrêts de production relativement courts.

PS : évidemment un retour arrière est à prévoir (et à tester :-))

Passer une base RAC en archivelog.

Administration Oracle, Cluster RAC pas de Commentaire »

Pour passer une base clusterisée en mode archivelog, rien de plus simple.

Se connecter sur l’instance du premier nœud et arrêter l’instance :

[oracle@rac1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Mon Dec 13 14:24:30 2010
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connecte a :
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
SQL> archive log list
mode Database log              mode No Archive
Archivage automatique             Desactive
Destination de l’archive             USE_DB_RECOVERY_FILE_DEST
Sequence de journal en ligne la plus ancienne     57
Sequence de journal courante            59
SQL>

On voit bien que la base n’est pas en mode archivelog et que la destination des archives est positionnée par défaut dans la Flash Recovery Area.

Normalement on arrête les instances sur tous les nœuds et on passe la base en archivelog.

Que se passe t il si on oublie d’arrêter la deuxième instance du cluster??

On va donc oublier d’arrêter l’instance sur le noeud 2 avant de modifier la base.

On fait la manip sur le noeud1.

SQL> shutdown immediate
Base de donnees fermee.
Base de donnees demontee.
Instance ORACLE arretee.
SQL> startup mount
Instance ORACLE lancee.
Total System Global Area  477073408 bytes
Fixed Size                  1337324 bytes
Variable Size             209717268 bytes
Database Buffers          260046848 bytes
Redo Buffers                5971968 bytes
Base de donnees montee.
SQL>
SQL> alter database archivelog;
Base de donnees modifiee.

SQL> alter database open;
Base de donnees modifiee.

On génère quelques archives :

SQL> alter system switch logfile;
Systeme modifie.

Le cluster gère le cas et arrête lui même l’instance “oubliée” sans mettre un seul message d’erreur!

On est donc forcée de la redémarrer à la main et elle prend obligatoirement la modification.

SQL> alter system archive log current;
Systeme modifie.

Si on vérifie :

SQL> select name, THREAD#, SEQUENCE#, ARCHIVED from v$archived_log;

+DGFRA/racdb/archivelog/2010_12_13/thread_1_seq_63.265.737650775
1         63 YES

NAME
——————————————————————————–
THREAD#  SEQUENCE# ARC
———- ———- —
+DGFRA/racdb/archivelog/2010_12_13/thread_2_seq_4.266.737650777
2          4 YES

La base archive bien les deux threads correspondants aux deux nœuds.

Albanlepunk

Restaurer l’OCR sur un RAC 11GR2

ASM, Cluster RAC pas de Commentaire »

Après avoir installé un cluster 11GR2 incluant la nouvelle fonctionnalité majeure de cette version du clusterware à savoir de pouvoir mettre l’OCR et les voting disks dans ASM, et faisant quelques tests de recette qui comprennent notament la restauration de l’OCR, je me suis demandé comment pouvait on restaurer l’OCR à partir d’ASM quand le cluster est arrêtté?

1. Arrêter le  clusterware sur chaque noeud : crsctl stop cluster -all
2. Sur le noeud ou est présent le backup de l’OCR démarrer manuellementles ressources css and asm.

crsctl start res ora.cssd -init
crsctl start res ora.asm -init

3.Restorer l’ocr:

ocrconfig -showbackup
ocrconfig -restore <ocrbackup file>

4.Démarrer manuellement les ressources manquantes du cluster evmd and crsd.
crsctl start res ora.evmd -init
crsctl start res ora.crsd -init

5. Démarrer le clusterware sur les autres noeuds : crsctl start cluster -all

Un peu plus compliqué que dans les versions précédentes, mais ASM oblige.

Albanlepunk